开发者学堂课程【网络安全攻防 - Web渗透测试:Web 信息收集之目标扫描_1】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/630/detail/9916
Web 信息收集之目标扫描_1
内容介绍:
一、项目实验环境
二、nmap
内容简介:
在前面讲到像 sql 注入,web 方面的像 xss,文件上传,文件包含这一系列漏洞,又讲到如何通过搜索引擎去获得一些网站的信息,比如指纹信息,像网站的版本,服务器版本,框架、语言、数据库等等一些信息。如果想要具体的获得一些信息,这个时候肯定不能够特别寄托于搜索引擎,主要是使用是目标扫描工具。
接下来将主要学习三个收集目标信息的工具,一个是 nmap,一个是 zenmap,这两个其实可以认为是同一个产品,只不过 nmap 是命令行的扫描工具,zenmap 是图形化的扫描工具,另外一个是叫 openVAS,这是一个更加强大的扫描工具。扫描主要是和前面讲到的一样,获取目标一些信息,像版本、它所使用的一些其它的语言等等。
一、项目实验环境
目标靶机: OWASP_ Broken_Web_ Apps_ VM_1. 2
测试渗透机: win7/Kali
二、nmap
1、nmap 简介
(1)Nmap 是安全渗透领域最强大的开源端口扫描器,能跨平台支持运行。
(2)官方网站:https: //nmap. org/
左边是 nmap 的前端,右边是 nmap 命令行的工具,nmap 加一些命令,很多人可能不太熟悉这个参数,但实际上肯定是使用命令行的工具更加强大或者倾向它消耗的资源更少。
sectools .org,nmap security 安全扫描器,security lists 安全的列表,security tools 安全的工具,它列出了前125位网络安全工具,可以看到下面有排名,上升的数量,右边还有一个相应的指数,排在第一位的是 wireshark,它支持的平台很多,还有一款 sniffers。
Metasploit:是开源渗透框架,这里面就像红之蓝这些漏洞都可以基于在框架下运行。
Nessus:这是非常强大的一个商业的漏扫工具排在第三名。
Aircrack:无限攻击的工具。同样在里面 Kali 也集成了,但是有一个条件,现在 Kali 装在虚拟机里面的,虚拟机其实是没有无线网卡的,如果把它装在真机上面,真机有无线网卡,就可以直接去攻击无线路由器。如果想在虚拟机里面用怎么办呢?得买一个外置的无线网卡,就是像 USB 的。
Snort:是一个入侵检测和防御的系统,针对网络入侵的侦测。
Burp suite:之前用它的拦截代理功能,后面要讲它的爬虫和支出功能,有两个软件是安全界基本上大家都必须会的,其中一个是这个软件 Burp suite,它是做渗透测试和漏洞扫描的。
Ettercap:用它做中间人攻击。
Openvas:是漏洞扫描的工具。这个网站可以看这些安全工具的排名,如果有心仪的安全工具可以进入这个网站搜索,总之 Nmap 是在很久以前候就已经使用的一款信息收集软件。要先获得主机的各种信息。
2、扫描示例
(1)kail 是 xshell5启动的,正常默认是不会启动的,在前期的课程当中已经将 kail ssd 设置为开机自启,nmap 这个是不用装的。看它的版本7.70,还是比较新的,因为的 kail 是2018年版,而这个软件应该不是2018年的。它的帮助很多。输入--help,最下面有很多示例。
EXAMPLES:
nmap -V -A scanme .nmap. Org 后面跟的是主机
nmap -v -sn 192.168.0.0/16 10.0.0.0/8 后面跟的是一个网段
nmap -V -iR 10000 -Pn -p 80 还可以加别的参数
SEE THE MAN PAGE (https: //nmap. org/book/man. html) FOR MORE OPTIONS AND EXAMPLES 更多的帮助页
(2)这不是漏扫软件,这是信息收集的软件,尝试扫描 nmap -V -A scanme .nmap. Org。可以看到描述,操作的汇总,目标的设置,host discovery 主机发现,端口的扫描。
(3)Nmap 7 .70 ( https:/ /nmap.org )
Usage: nmap
[Scan 1ype(s)] [0ptions] [target specification}
TARGET SPECIFICATION ; 目标的指定
Can pass hostnames, IP addresses, networks, etc . 扫描的目标可以是主机,可以 ip,可以是网段
Ex: scanme. nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254 官方网站,就是扫描这个微软主机所在的网段
-iL <inputfilename>: Input from list of hosts/networks可以跟上网段也可以跟上iL,iL是从一个主机或者网络的列表文件中输入
-iR <num hosts> : Choose random targetsir 选择随机的目标,一般就很明确的指定某个主机,不像这个这么复杂
--exclude <host1[ ,host2][ ,host3],...>: Exclude hosts/networks
- -excludefile <exclude_ file>: Exclude list from file
HOST DISCOVERY : 主机发现
-sL: List Scan - simply list targets to scan SL 这个 S 是扫描的意思,List Scan,这是简单的目标一个扫描列出来。
-sn : Ping Scan - disable port scan sn 拼音扫描,借用端口扫描
-Pn: Treat all hosts as online -- skip host discovery 跳过主机发现
- PS/PA/PU/PY[portlist] :
TCP SYN/ACK, UDP or SCTP discovery to given ports
-PE/PP/PM: ICMP echo, timestamp, and netmask request discovery probes
-PO[protocol list]: IP Protocol Ping
-n/-R: Never do DNS resolution/Always resolve [ default: sometimes ]
- -dns-servers <serv1[ ,serv2], . ..>: Specify custom DNS servers
- -system-dns: Use OS's DNS resolve r
-- traceroute: Trace hop path to each host
SCAN TECHNIQUES:
-sS/sT/sA/sW/sM: TCP SYN/Connect( ) /ACK/Window/Maimon scans
第一 s 是扫描的意思,都是对应的,sS 就指发次三次握手的第一次,第一个就是 xy 标记的意思,sT 是连接,sA 是 ack。
-sU: UDP Scan UDP 的扫描
-sN/sF/sX: TCP Null, FIN, and Xmas scans
sF 发一个 FIN
--scanflags <flags>: Customize
-sI <zombie host[ :probeport]>: Idle scan
-sY/sZ: SCTP INIT/COOKIE-ECHO scans
-s0: IP protocol scan
-b <FTP relay host>: FTP bounce scan
PORT SPECIFICATION AND SCAN ORDER:
用到端口这种方式,指定可以使用 AND 方式
-p <port ranges>: Only scan specified ports -p 后面跟端口的范围,仅仅扫描指定的端口
Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
有没有空格都可以,这是全端口扫描,没有写就是 tcp,如果不知道是哪个端口,可以输入$grep111/stc/services可以查询到是哪个端口,T 是 tcp 的端口。
--exclude-ports port ranges>: Exclude the specified ports from scanning
-F: Fast mode - Scan fewer ports than the default scan
f 是快速模式
-r: Scan ports
consecutively - don't randomize
-- top-ports <humber>: Scan <number> most common ports
- -port-ratio <ratio>: Scan ports more common than <ratio>
SERVICE/VERSION DETECTION:
除了可以定义端口以外,还可以定义 service 版本,服务的一个版本
-sV:Probe open ports to determine service/version info sv 就是尽可能去侦测一些服务的版本信息,还可以加一些脚本,nmap 不仅是可以去扫描,它还可以利用脚本去探测和攻击
--version- intensity <level>: Set from 0 (light) to 9 (try all probes)
--version-light: Limit to most likely probes ( intensity 2)
--version-all: Try every single probe(intensity 9)
--version-trace: Show detailed version scan activity (for debugging)
SCRIPT SCAN:
-sC: equivalent to --script=default
--script=<Lua scripts>: <Lua scripts> is a comma separated list of
directories, script-files or script-categories
--script-args=<n1=v1,[n2=v2,...]>: provide arguments to scripts
--script-args-file=filename: provide NSE script args in a file
--script-trace: Show all data sent and
received
--SC ript-updatedb: Update the script database.
--script-help=<Lua scripts>: Show help about scripts .
<Lua scripts> is a comma-separated list of script-files or
script-categories .
OS DETECTION
os 侦测就是对方的操作系统
-O: Enable OS detection
大 O 就是启用操作系统的检测,就是能够检测它的操作系统是什么,这个比较常用
- -osscan- limit: Limit OS detection to promising targets
--osscan-guess: Guess OS more aggressively
TIMING AND PERFORMANCE :
Options which take <time> are in seconds, or append ' ms‘(milliseconds) ,
s' (seconds), 'm'(minutes), or 'h' (hours) to the value (e.g. 30m) .
- T<0-5> :Set timing template (higher is faster)
- - min- hostg roup/max-hostgroup <size>: Parallel host scan group sizes
- - min-parallelism/max-parallelism <numprobes>: Probe parallelization
--min- rtt- timeout/max- rtt-timeout/initial-rtt-timeout <time>: Specifiesproberoundtrip time .
- -max- retries<tries>:Caps number of port scan probe ret ransmissions .
--host- timeout <time> : Give up on target after this long
--scan-delay/--max-scan-delay <time>: Adjust delay between probes
- - min- rate<numbẹr> :
Send packets no slower than <number> per second
- -max-raite<number> :Send packets no faster than <number> per second
FIREWALL/IDS EVASION AND SPOOFING:
防火墙和入侵检测相关的一些东西,比如怎么跳过防火墙,怎么绕过防火墙
-f; --mtu <val>: fragment packets (optionally w/given MTU)
-D <decoy1, decoy2[ ,ME], . . .>:Cloak a scan with decoys
-S<IP_ Address>: Spoof source address
-e <iface>:Use specified interface
-g/--source-port <po rtnum> :Use given port number
--proxies <url1,[url2],.. .>: Relay connections through HTTP/SOCKS4 proxies
-data <hex string> :Append a custom payload to sent packets
--data-string <string>:Append a custom ASCII string to sent pac kets
--data-length <num>: Append random data to sent packets
--ip-options <options>: Send packets with specified ip options
--ttl <val>: Set IP time-to-live field
--spoof-mac <mac address/prefix/vendor name>: Spoof your MAC address
- - badsum:Send packets with a bogus TCP/UDP/SCTP checksum
OUTRuT:
输出就是把扫描的结果输出来
- oN/-oX/-oS/-oG <file>: Output scan in normal, XML, sl<rIpt kIddi3,and Grepable format, respectively, to the given filename .
oN 就是一个常规的输出,oX 是 XML 格式
-oA <basename> :Output in the three major formats at once
-V :Increase verbosity level (use -VV or more for greater effect)
-d:Increase debugging level (use -dd or more for greater effect)
-- reason: Display the reason a port is in a particular state
- -open: Only show open (or possibly open) ports
--packet-trace: Show all packets sent and received
--iflist: Print host interfaces and routes (for debugging)
-- append- output: Append to rather than clobber specified output files
-- resume <filename> : Resume an aborted scan
--stylesheet <path/URL>: XSL stylesheet to transform XML output to HTML
- -webxml: Reference stylesheet from Nmap.Org for more portable XML
--no-stylesheet: Prevent associating of XSL stylesheet W/XML output
MISC: 杂项
-6: Enable IPv6 scanning
6启用 IPv6的扫描
-A: Enable OS detection, version detection, script scanning, and trace route
相当于好几个应用的集合,启用超系统政策,-A 包含-O,版本的侦测,路由的追踪,涵盖了好几个小选项。
--datadir <dirname>: Specify custom Nmap data file location
--send-eth/--send-ip: Send using raw ethernet frames or IP packets
--privileged: Assume that the user is fully privileged
- -unprivileged: Assume the user lacks raw socket privileges
-V: Print version number
-h: Print this help summary page.
EXAMPLES :
nmap -V -A scanme . nmap.org
nmap -v -sn 192.168.0.0/16 10.0.0.0/8
nmap -v -iR 10000 -Pn -p 80
SEE THE MAN PAGE (https: //nmap. org/book/man.html) FOR MORE OPTIONS AND EXAMPLES
(4)看一下对官方的扫描结果,注意扫描行为本身也是攻击行为,所以要注意一下的方式。
Network Distance: 2 hops
TCP Sequence Prediction: Difficulty=253 (Good luck! )
IP ID Sequence Gene ration: Incremental
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_ kernel
看目标主机,目标主机它是 Linux 系统
TRACEROUTE (using port 80/tcp)
HOP RTT ADDRESS
1 0.18 ms 192. 168.106.2
2 0.18 ms scanme . nmap.org (45.33.32.156)
并且经过两跳。它的距离是两条。两跳是从192. 168.106.2到 nmap 这个机器一共经过两跳,为什么会追踪到TRACEROUTE?因为-a 不仅可以进行操作系统侦测,版本侦测,还可以使用脚本,还可以去路由追踪,路由追踪就是把路上经过的所有的站记下来。比方现在到北京经过哪个省哪个地方记下来可以会有追踪,利用的是 ICP 协议。ICP 功能非常强大,其中 TRACEROUTE 就是基于这个协议去追踪的,ICP 协议,可以进行报文的探测,追踪,在这里就用到这个协议
NSE: Script Post- scanning.
Initiating NSE at 20:17
Completed NSE at 20:17, 0.00s elapsed
Initiating NSE at 20:17
Completed NSE at 20:17, 0.00s elapsed
Read data files from: /usr/bin/ . . /share/nmap .
OS andServicedetectionperformed.Pleasereportanyincorrectresultsathttps://nmap.org/submit/
Nmap done: 1 IP address (1 host up) scanned in 240.45 seconds
Raw packets sent: 1184 (55.396KB) [ Rcvd: 1150 (46. 608KB)
尽可能给它用一些攻击的脚本,这里是这样一个方式。
root@kali:~# nmap -V -A scanme . nmap.org
Starting Nmap 7.70 (
https://nmap.org
) at 2018-11-19 20:13 EST
NSE: Loaded 148 scripts for scanning.
NSE: Script Pre-scanning.
Initiating NSE at 20:13
Completed NSE at 20:13, 0.00s elapsed
Initiating NSE at 20:13
Completed NSE at 20:13, 0.00s elapsed
Initiating Ping Scan at 20:13
Scanning scanme . nmap.org (45.33.32.156) [4 ports]
四个端口
Completed Ping Scan at 20:13, 0.09s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 20:13
Completed Parallel DNS resolution of 1 host. at 20:13, 1.04s elapsed
Initiating SYN StealthScan at 20:13
Scanning scanme. nmap.org (45.33.32.156) [1000 ports]
扫描了1000个端口
Discovered open port 22/tcp on 45.33.32. 156侦
测它的22号端口
Discovered open port 80/tcp on 45.33.32. 156
80号端口
Discovered open port 31337/tcp on 45.33.32.156
Increasing send delay for 45.33.32.156 from 0 to 5 due to 11 outof23droppedprobessincelast increa
SYN Stealth Scan Timing: About 28.80% done; ETC: 20:15 (0:01:17 remaining )
Discovered open port 9929/tcp on 45.33.32. 156
(5)主机发现
nmap -sn 192.168. 106/24
打开一个看帮助,一个进行扫描。
root@kali:~# nmap --help |grep '\-n '
不能直接写-n,会被认为是 grep 的一个选项
-n/-R: Never do DNS resolution/Always resolve [default: sometimes ] 不要将名字做解析
- -no-stylesheet: Prevent associating of XSL stylesheet w/XML output
扫描结果:
root@kali:~# nmap -sn 192.168.106.134
Starting Nmap 7.70 (
https://nmap.org
) at 2018-11-19 20:27 EST
Nmap scan report for 192. 168.106.134
Host is up (0. 00079s latency) .
MAC Address: 00:0C:29:23:8F:D6 ( VMware)
Nmap done: 1 IP address (1 host up )scanned in 0.16 seconds
主机只得到了map 地址,还是个 VMware,这个扫描没有意义,sn只是一个简单的扫描方式,第一个只是主机发现而已,看主机有没有在线,只是发现,没有具体的意义。
(6)端口扫描
nmap -sS -p1- -1000 192.168.106.134
看帮助 sS 是 TCP 的 syn,
扫描结果:
root@kali:~# nmap -sS -p22 192.168. 106.134
Starting Nmap 7.70 (
https://nmap.org
) at 2018-11-19 20:29 EST
Nmap scan report for 192.168.106.134
Host is up (0.00070s latency) .
PORT STATE SERVICE
22/tcp open ssh
MAC Address: 00:0C:29:23:8F:D6 (VMware)
Nmap done: 1 IP address (1 host up) scanned in 0.29 seconds
对方主机是 ssh,端口是 open 的,扫描是很快的,原理就是发一个 s,就会回一个 sack,那么就会认为这个端口是开着的,
抓包常用的工具是 tcpdump -i eth0 -nn host 192.168.106.134 and port 22
nn 不将端口解析成为协议名,不加 IP 解析为主机名,现在在抓包,如果开着的,向它发起一个 s,它回 yes,发送之后回 s.,.是 ack 的意思,前面是标准的三次握手,tcp 的原理是如果20号开了会收到 sack,如果没开,对方会回 R.,tcp 的标记有 SYN ACK FIN RST RESET
重置标记位。
source port |
destination port |
sequence number |
|
acknowledgment number |
|
HL|rsvd |C|E|A|P|R|S|F |
window size |
TCP checksum |
urgent pointer |
这个是 tcp 的头部,它会在数据的前面加一个 header,tcp 面试的时候会问 icmp 协议是头部多少字节,tcp 多少字节,udp,ip,常见的四个协议。
root@kali :~# UDP ICMP header :8ByteC
root@kali:~# TCP IP header: 20Beyte
udp 它的头部也就是 header,额外会在数据前面加个头部是多少字节呢?是8个字节,tcp 和 ip 两个头部是20字节。
0-31的意思是32位,4个字节,一共是5行,5行是20字节,这里面包括原端口占了2个字节,目标端口占了两个字节,顺序号占了4个,确认号占了4个,HL 头长度,rsvd 保留位,C|E|A|P|R|S|F 这是 tcp 的标记,比较常见的s,a,f,r,p 推标记位,sy 只会在三次握手的前两次出现,第一次是纯 syn,第二次 syck,ack 是到处都出现,finish 只在断开连接时出现,r 当访问一个为开启的 tcp 端口的时候,服务器会回应一个带有重置的标记,有可能是没开,有可能是防火墙给拒绝了,就是访问不了,当访问一个服务器未开启的 udp 端口时会收到对方会使用 icp 协议回端口不可达。p 是告诉对方这个数据很紧急,不要往这里面放,直接用。window size 窗口大小,TCP checksum 校验位,是正确的还是错误的,urgent pointer 紧急指针。
抓包行为,访问 root@kali:~# nc 192. 168.106.134 -u 7777 or icmp
通讯一下,它就会回7777端口 unreachable 不可达,用 icmp协 议发的。
7777端口登陆,连接,可以对话,聊天。
root@owaspbwa:~# nc -l -u 7777
root@kali:~# nmap -sS 192.168.106.134 -p1-1024
Starting Nmap 7.70 (
https://nmap.org
) at 2018-11-19 20:46 EST
Nmap scan report for 192.168. 106.134
Host is up (0.00031s latency) .
Not shown : 1018 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
139/tcp open netbpios-ssn
143/tcp open imap
443/tcp open https
445/tcp open microsoft-ds
MAC Address:00:0C:29:23:8F:D6 ( VMware)
Nmap done: 1 IP address (1 host up) scanned in 0.32 seconds
探测的原理是发一个 sy 过去,如果对方回一个 sysk 表示 OK。