Ethical Hacking 简明教程
Ethical Hacking - Fingerprinting
道德黑客中的术语 OS 指纹识别是指用来确定远程计算机上运行什么操作系统的任何方法。这可能是−
-
Active Fingerprinting − 活动指纹识别是通过向目标机器发送特制的包来完成的,然后记下其响应并分析收集到的信息来确定目标 OS。在以下部分中,我们给出了一个示例来说明如何使用 NMAP 工具检测目标域的 OS。
-
Passive Fingerprinting − 被动指纹识别基于远程系统的信息收集器痕迹。基于包的收集器痕迹(例如 Wireshark),您可以确定远程主机的操作系统。
我们有以下四个重要元素,我们将在其中查看这些元素以确定操作系统−
-
TTL − 操作系统在出站包上设置 Time-To-Live 。
-
Window Size − 操作系统设置窗口大小。
-
DF − 操作系统是否设置 Don’t Fragment 位。
-
TOS − 操作系统是否设置 Type of Service ,如果是,则设置什么。
通过分析数据包的这些因素,你能确定远程操作系统。此系统并非 100% 准确,且适用于某些操作系统,而不适用于其他操作系统。
Basic Steps
在攻击系统之前,你必须知道是哪些操作系统承载网站。一旦知道了目标操作系统,就很容易确定可能存在哪些漏洞以利用目标系统。
下面是一个简单的 nmap 命令,可以用来识别用于承载网站的操作系统,以及与域名相关的所有已打开端口,即 IP 地址。
$nmap -O -v tutorialspoint.com
它将向你展示有关给定域名或 IP 地址的以下敏感信息:
Starting Nmap 5.51 ( http://nmap.org ) at 2015-10-04 09:57 CDT
Initiating Parallel DNS resolution of 1 host. at 09:57
Completed Parallel DNS resolution of 1 host. at 09:57, 0.00s elapsed
Initiating SYN Stealth Scan at 09:57
Scanning tutorialspoint.com (66.135.33.172) [1000 ports]
Discovered open port 22/tcp on 66.135.33.172
Discovered open port 3306/tcp on 66.135.33.172
Discovered open port 80/tcp on 66.135.33.172
Discovered open port 443/tcp on 66.135.33.172
Completed SYN Stealth Scan at 09:57, 0.04s elapsed (1000 total ports)
Initiating OS detection (try #1) against tutorialspoint.com (66.135.33.172)
Retrying OS detection (try #2) against tutorialspoint.com (66.135.33.172)
Retrying OS detection (try #3) against tutorialspoint.com (66.135.33.172)
Retrying OS detection (try #4) against tutorialspoint.com (66.135.33.172)
Retrying OS detection (try #5) against tutorialspoint.com (66.135.33.172)
Nmap scan report for tutorialspoint.com (66.135.33.172)
Host is up (0.000038s latency).
Not shown: 996 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
443/tcp open https
3306/tcp open mysql
TCP/IP fingerprint:
OS:SCAN(V=5.51%D=10/4%OT=22%CT=1%CU=40379%PV=N%DS=0%DC=L%G=Y%TM=56113E6D%P=
OS:x86_64-redhat-linux-gnu)SEQ(SP=106%GCD=1%ISR=109%TI=Z%CI=Z%II=I%TS=A)OPS
OS:(O1=MFFD7ST11NW7%O2=MFFD7ST11NW7%O3=MFFD7NNT11NW7%O4=MFFD7ST11NW7%O5=MFF
OS:D7ST11NW7%O6=MFFD7ST11)WIN(W1=FFCB%W2=FFCB%W3=FFCB%W4=FFCB%W5=FFCB%W6=FF
OS:CB)ECN(R=Y%DF=Y%T=40%W=FFD7%O=MFFD7NNSNW7%CC=Y%Q=)T1(R=Y%DF=Y%T=40%S=O%A
OS:=S+%F=AS%RD=0%Q=)T2(R=N)T3(R=N)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%
OS:Q=)T5(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=0%S=
OS:A%A=Z%F=R%O=%RD=0%Q=)T7(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R=
OS:Y%DF=N%T=40%IPL=164%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%
OS:T=40%CD=S)
如果你没有在 Linux 系统上安装 nmap 命令,那么你可以使用以下 yum 命令安装它:
$yum install nmap
你可以仔细查看 nmap 命令来检查和了解与系统相关并保护其免遭恶意攻击的不同功能。
Port Scanning
我们刚刚看到 nmap 命令给出的信息。此命令会列出给定服务器上所有打开的端口。
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
443/tcp open https
3306/tcp open mysql
你还可以使用以下命令检查是否打开了特定的端口:
$nmap -sT -p 443 tutorialspoint.com
它将产生以下结果 −
Starting Nmap 5.51 ( http://nmap.org ) at 2015-10-04 10:19 CDT
Nmap scan report for tutorialspoint.com (66.135.33.172)
Host is up (0.000067s latency).
PORT STATE SERVICE
443/tcp open https
Nmap done: 1 IP address (1 host up) scanned in 0.04 seconds
一旦黑客知道打开的端口,那么他就可以通过打开的端口计划不同的攻击技术。
Ping Sweep
Ping 扫描是一种网络扫描技术,你可以使用它来确定 IP 地址范围内的哪些 IP 地址映射到活动主机。Ping 扫描也称为 ICMP sweep 。
你可以对 Ping 扫描使用 fping 命令。此命令是一个类似 ping 的程序,它使用因特网控制消息协议 (ICMP) 回声请求来确定主机是否已启动。
fping 不同于 ping ,因为你可以在命令行上指定任意数量的主机,或指定包含要 ping 的主机列表的文件。如果主机在某个时间限制和/或重试限制内没有响应,它将被认为不可达。
DNS Enumeration
域名服务器 (DNS) 像地图或地址簿。事实上,它就像一个分布式数据库,用于将 IP 地址 192.111.1.120 转换为名称 www.example.com, 反之亦然。
DNS 枚举是查找所有 DNS 服务器及其对应记录的过程。其目的是在发起攻击之前尽可能收集有关目标的有趣详细信息。
你可以在 Linux 上使用 nslookup 命令来获取 DNS 和主机相关信息。此外,你可以使用以下 DNSenum 脚本来获取有关域名的详细信息:
DNSenum 脚本可以执行以下重要操作 −
-
Get the host’s addresses
-
Get the nameservers
-
Get the MX record
-
对名称服务器执行 axfr 查询
-
通过 Google scraping 获取额外名称和子域名
-
从文件进行蛮力破解子域还可以对有 NS 记录的子域执行递归
-
计算 C 类域网络范围并在其上执行 whois 查询
-
在 reverse lookups 上执行 netranges