1、使用Metasploit 渗透测试的思维导图 : 链接地址 https://www.processon.com/mindmap/59f9d054e4b0edf0e25d9b84
2、samba 服务 解释
Samba是在Linux和UNIX系统上实现的一个免费软件,由服务器及客户端程序构成。(Server Messages Block,信息服务块)是一种在上共享文件和打印机的一种,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
3、nmap 扫描信息的总结参数选取表
注意:无ping 扫描使用于防火墙禁止ping扫描的情况下,
如果想观察这些扫描的具体发送的数据包 可以使用 参数 --packet-trace
除此之外还可以使用 协议的编号进行扫描目标主机,我们制定协议的编号使用 TCP、UDP、IGMP 协议向目标主机发送数据包并判断主机手否存活
nmap -p06,17,2 --packet-trace scanme.nmap.org
参数 —— -PS 选项发送设置了一个SYN 标志位为空的TCP报文,默认的端口是80 (可以通过改变 nmap.h)文件中的DEFAULT-TCP-PROBE-PORT 值进行配置,不同的端口作为选项设定,可以通过该添加逗号, 分割端口列表(例如,-PS22,23,25,80,115,3306,3389)在这种情况在每个端口会被并发的扫描。
在通常情况在nmap的扫描使用的TCP ACK 和 ICMP ECHO 请求判断主机是否存在,当主机开启防火墙的时候可以使用 -P0 或者 TCP SYNPing (-PS) 来判断主机
nmap -PS -v 192.10.10.15.121 (nmap 通过SYN ACK 和RST 响应来对目标主机存活判断,在特定的情况下防火墙会丢掉RST包,所以扫描不准确,这时候需要采用指定一个端口或者端口序列来扫描避免这种情况)
nmap -PS80, 100-200, -v 10.10.15.121
如果 存在防火墙的时候还可以使用 TCP-ACK扫描 或者两种扫描结合 nmap -PA -PS 10.10.15.121
参数 -PU 发送一个空的UDP 报文到指定的端口 ,默认的端口是40125 可以在配置文件 nmap.h 中的DEFAULT-UDP-PROBE-PORT 值修改,向目标主机发送一个空的UDP报文,如果目标存活返回一个ICMP包不可达,如果目标不存活返回各种错误的ICMP信息。
使用 wireshark观察这个包的信息有一条显示 “destination UNreachable”
除此之外可以指定扫描的端口 nmap -PU80,111 -v 10.10.15. 121
使用ICMP Echo 扫描 nmap -PE -v 10.10.15.121
使用ICMP 时间戳扫描 ping : nmap -PP -v 10.10.15.121
使用ICMP地址掩码扫描PIng : nmap -PM -v 10.10.15.121 ####上面几种不同的扫描对穿透防火墙有着不同的结果(穿透能力不同)
在局域网内部使用ARP扫描比较好,nmap -PR 10.10.15.121
使用反向域名解析 nmap -R -sL *.10.15.0/24 该选项多永固绑定域名主机上,可以帮助我们查看目标主机的详细信息,查看那些ip段上存在哪些网站
使用指定系统域名解析器, 默认的情况下,nmap 通过发送查询到本机上配置的域名服务器来解析域名: nmap --system-dns 10.10.15.121 10.10.15.123
使用路由跟踪 :nmap --traceroute -v www.163.com
使用SCTP(Steam COntrol Transmission Protocol 流控制传输协议 )是一个传输层(Transport Layer)协议 ,SCTP可以看做TCP协议的改进,改进了TCP的一些不足,SCTP INIT Ping 扫描通过向主机发送INIT包,根据目标主机响应判断主机是否存活。 nmap -PY -v 10.10.15. 121
nmap 扫描时序选项的参数化: nmap -T0 或者 T1 一直到 T5 依次扫描速度加快 ,但是准确的降低
nmap -T0 10.10.15.121 (扫描速度极度慢但是准确 用于IDS逃避 ) 但是要补充的一点是现在的很多,所以一般都是用-T4 进行扫描 ,这样可以保证最小的时间内扫描到尽可能准确的数据
常用的扫描方式
在一个扫描字段中想同时使用多种扫描端口,就要分开指定,可以在前面加上 :“T” 或者“U” 分别表示使用TCP协议与UDP协议,要既要扫描UDP又要扫描TCP,必须指定-sU 以及至少一个TCP扫描类型(如-sS -sF -sT),如果没有给定协议限定符,端口号会被添加到所有的协议列表:nmap -sS -p T:111 ,U:445 10.10.15.121
参数 -F 选项可以快速的扫描端口,但不是所有的端口,只是默认的几个端口,在nmap中的 nmap-service 中包含了默认端口的列表,也可使用 --datedir 指定自己nmap-service 文件
参数 --top-ports ,nmap对端口开放的概率的调查结果保存在 nmap-services中,这其中罗列了开发效率最高的100个TCP端口,便于发现具体有用的端口 : nmap --top-ports 100 10.10.15.121
参数 -sU UDP 扫描,扫描速度慢,所以一般要指定扫描的端口
三个隐蔽扫描 -sN(NULL 扫描,通过发送非常规的TCP通信数据包对计算机进行探测),-sF (FIN扫描 ) -sX (Xmap 扫描,) -sM (TCP Maimon扫描) 这些扫描会很多的躲过一些无状态的防火墙过滤。
参数 -sA (TCP ACK扫描)不能确定端口是否开放还是过滤,ACK的报文探测只设置了ACK标志位,当扫描未被过滤的端口时候返回RST报文,
参数 -sw (窗口扫描,通过判断窗口的大小,确定端口的开放情况)
参数 --sacnflags 选项可以自主定义TCP扫描,可以指定TCP的标志位来扫描,标志位之间没有空格 只要是URG、ACK、PSH、RST、SYN、FIN的任意组合即可,
nmap -sT --scanflags SYNURG 10.10.15.121
重要的攻击使用的扫描,空闲扫描,允许端口完全欺骗扫描,可以使攻击者不适用自己的IP想主机发送数据包,他利用不活跃的僵尸主机反弹给攻击者一个旁通信道,从而进行端口扫描,IDS会把不活跃的僵尸主机当做攻击者,是一种非常隐蔽的扫描方法
nmap -sI www.0day.co:80 10.10.15.121 利用 僵尸主机 对主机 10.10.15.121 进行空暇扫描 ,如果有IDS ,IDS会把 www.0day.co 当做扫描者。(注意:僵尸主机选择的端口号必须不能被自己主机的Nmap过滤或者目标主机过滤,可以事前对僵尸主机进行端口扫描)
参数 -sO开启 IP协议扫描,不会扫描 TCP UDP 端口号,而是 IP协议号,ip协议扫描可以确定帮助用户确定哪些主机支持IP协议,列如 TCP,ICMP,IGMP,
参数 -b (FTP BOUNCE SCAN扫描)他允许下用户链接到一台FTP服务器上,然后要求文件发送到第三方服务器,
4、 指纹识别与探测
参数 -sV -A 可以对操作系统和服务进行深入的探测
参数 --allports 可以启用对全端口版本探测,nmap -sV --allports 10.10.15.1
参数 --version-intersity 可选的参数 0-9 表示探测报文最大范围 :nmap -sV --version-intensity 1 10.10.15.1
参数 --version-light 轻量级扫描 --version-all 重量级扫描
参数 --version-trace 可以获取详细的版本信息, 他对于获取主机的额外信息非常有帮助
参数 -sR 进行RPC 扫描,他对所有被发现的TCP/UDP端口执行SUNRPC 程序NULL命令,确定是否为RPC端口,如果是RPC端口,则返回程序和版本号:nmap -sS -sR
参数 -O 容易使用操作系统的探测
参数 --osscan-limit 对指定的目标进行操作系统检测, (注:这个参数只能使用结合 -O 或者 -A)
参数 --osscan-guess; fuzzy 对推测操作系统识别,nmap -O --osscan-guess 10.10.15.121
5、 调整扫描
参数 --max-hostgroup 和参数 --min-hostgroup 用来限制扫描组大小 :nmap --min-hostgroup 30 10.10.15.0/24
参数--min-parallelism 和 --max-parallelism
调整探测报文超时 :nmap --initial-rrt-timeout 1000ms 10.10.15.121
对于一次扫描多个主机的时候存在响应缓慢的主机需要放弃: nmap --host-timeout 1000ms 10.10.15.0/24
6、 防火墙/IDSS 逃逸
一些主机会禁止响应ICMP 请求,对于这种情况可以使用报文分段的方法来逃避防火墙的规则 nmap -sX -v -F 10.10.15.121 (当有防火墙输出结果无法获知主机端口是否开放)此时尝试报文分段扫描:
nmap -f -v 10.10.15.121
指定偏移大小 :使用 --mut 可以指定偏移大小,(MTU Maximum Transmission Unit 最大出书单元)设定TCP/IP协议数据报文的最大传输单元,使用指定的MUT可以逃避防火墙/IDS的目的,(偏移量必须是8的倍数)
IP 地址欺骗 ,使用-D 选项可以指定多个IP地址,或者使用RND随机生成几个地址,在指定的诱饵之间使用逗号进行分割,(在进行版本检测或者TCP扫描的时候诱饵是无效的)
nmap -D RND:11 10.10.15.121 这种随机的ip地址容易被发现 所以一般使用指定的IP地址进行 :nmap -D 192.168.0.1 ,192.168.0.2 10.10.15.121
参数--source-port 进行源端口欺骗 指定一个端口号使得 nmap从这个端口发送数据: nmap --source-port 53 10.10.15.121
参数 --data-length 指定报文的长度,通常TCP报文常40字节,ICMP Echo 28 字节 ,在原来的报文基础上添加随机数据达到规避防火墙的目的。 nmap --data-lenght 30 10.10.15.121
参数 --randomize-hosts 对目标主机的顺序进行随机的排序,配合时间选项效果好 nmap --randomize-hosts 10.10.15.121
参数 --spoof-mac 后面加 “0 ”表示随机生成一个mac, MAC Address 表示用户添加一个MAC , Vendor Name 表示从指定厂商生成一个
nmap -sT -PN --spoof-mac 0 10.10.15.121
7、信息收集
参数 nmap --script hostname-ip2hosts 反查ip, 将绑定到该IP地址的域名显示出来,可以确定有几个站在同一个服务器上 nmap -sn --script hostmap-iphosts www.0day.co (该脚本使用的是其他网站的接口,在测试中发现该网站的接口已经不能使用,所以可以在nmap /script中找到该脚本 对上面使用的肉鸡修改)
参数 nmap --script dns-brute 收集DNS 信息 : nmap --script dns-brute www.baidu.com (可以指定线程数 dns-brute.threads=10 , 如果是查询多个域名可以使用列表nmap --script dns-brute dns-brute.hostlist www.baidu.com)
参数 :nmap -p 445 --script membase-http-info 10.10.15.121 检索目标主机的系统信息
参数 : nmap --script smb-security-mode.nse -p 445 10.10.15.121 检索打印机服务漏洞
参数 : nmap --script smb-check-vulns.nse -p 10.10.15.121 扫描系统的漏洞 (对SMB 漏洞可以进行简单的扫描)
参数: nmap -p 80 --script http-stored-xss.nse www.baikd.com 对目标网站存在的存储型 xss 漏洞进行扫描
参数 : nmap -p 80 --script http-sql-injection www.nifnkd.com 对目标网站SQl注入漏洞进行扫描
8、通过Snmp 列举Windows 服务/账户
参数 : nmap -sU -p 161 --script=snmp-win32-services 10.10.15.121 通过SNMP服务队目标系统上的服务或者账户列举
参数 : nmap -sU -p 161 --script=snmp-win32-users 10.10.15.121 指定的端口是可以换的
参数: nmap --script dns-brute --script-args dns-brute.domain=baidu.com 可以对百度的 baidu.com 子域名进行枚举(可以使用 dns-brute.threads=线程数加快破解的速度)(可以使用 dns-brute.hostlists=./hostfile.txt 指定枚举的列表)
参数: nmap -sV -p 80 www.0day.co 对HTTP版本进行探测
参数: nmap -p 80 --script=http-headres www.0day.co 对目标主机的HTTP头信息探测
参数; nmap -p 80 --script=http-sitemap-generator www.0day.co 对目标的的web 结构进行爬取
参数:nmap -p 443 --script=ssl-enum-ciphers 枚举SSL服务 ,SSL服务(Secure Socket layer )
参数: nmap -p 22 --scriot ssh-hostkey --script-args ssh_hostkey=full 127.0.0.1
9、数据库渗透测试
在知道数据库的账户名字和密码的时候可以使用 nmap -p 3306 --script mysql-databases --script-args mysqluser=root mysqlpass 10.10.15.121 (密码为空的时候不填)
这样可以查询数据中存在的库
参数: nmap -p 3306 - -script=mysql-variables 10.10.15.121 列举目标MySQL变量
参数: nmap -p 3306 --script=mysql-empty-password 10.10.15.121 判断 目标主机上的MySQL 密码是否为空,或者密码为root
参数: nmap --script=mysql-brute 10.10.15.121 审计MySQL的密码 该种方式是使用MySQL的弱口令来扫描全部端口,查找MySQL端口,(可以指定一个确定的端口)
可以使用自己的账户字典和密码字典 来枚举出账户的密码和账户名
nmap -p 3306 --scripte=mysql-brute userdb=/root/passds.txt passdb=/root/pass.txt 10.10.15.121
审计MySQL的安全配置
使用命令 nmap -p 3306 --script mysql-audit --script-args "mysql-audit.username='root', \mysql-audit.password=" ,mysql.fiename='nselib/data/mysql-cis.audit" 可以审计MySQL的安全配置
其中 mysql.audit.username 选项指定的目标数据可的账号 ,mysql-audit.password 指定目标数据库的密码,密码为空的时候留空
整理到 195 页