扫描与抓包,NMAP扫描与TCPDump抓包

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/ck784101777/article/details/102467677

一、概述

1.为什么要扫描

 1)获取一些非公开的信息

 2)检测潜在攻击风险

 3)查找可攻击目标

 4)收集设备/系统/软件信息

 5)发现可利用漏洞

感觉自己有点黑客的感觉了,扫描是攻击的前提,因为你总得找到攻击目标吧

2.经典的扫描方式

sniff:被动监听/嗅探

scan:主动探测

Capture:数据包获取(抓包)

扫描二维码关注公众号,回复: 7642129 查看本文章

后两者都是主动寻找被攻击主机

二、扫描工具NMAP

    nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。它是网络管理员必用的软件之一,以及用以评估网络系统安全。

    正如大多数被用于网络安全的工具,nmap 也是不少黑客及骇客(又称脚本小子)爱用的工具 。系统管理员可以利用nmap来探测工作环境中未经批准使用的服务器,但是黑客会利用nmap来搜集目标电脑的网络设定,从而计划攻击的方法。

   Nmap 常被跟评估系统漏洞软件Nessus 混为一谈。Nmap 以隐秘的手法,避开闯入检测系统的监视,并尽可能不影响目标系统的日常操作。

 支持多种探测技术,如ping扫描,多端口扫描,TCP/IP指纹校验

1.NMAP基本用法

nmap [扫描类型] [选项] <扫描目标>

扫描类型分类:

-sS,TCP SYN扫描(半开)

-ST,TCP连接扫描(全开)

-sU,UDP扫描

-sP,ICMP扫描

-A,目标系统全面分析

2.安装软件

  1. [root@proxy ~]# yum -y install nmap

3.使用nmap半开模式扫描主机

不同与ping命令,nmap的ping会显示目标的,准备一个可以ping通的主机ip,你要是想的话可以去试试抓baidi(使用nslookup www.baidu.com获取ip地址)

  1. [root@proxy ~]# nmap -sP 192.168.4.100
  2. Starting Nmap 6.40 ( http://nmap.org ) at 2018-06-06 21:59 CST
  3. mass_dns: warning: Unable to determine any DNS servers. Reverse DNS is disabled. Try using --system-dns or specify valid servers with --dns-servers
  4. Nmap scan report for host3 (192.168.4.100)
  5. Host is up (0.00036s latency).
  6. MAC Address: 52:54:00:71:07:76 (QEMU Virtual NIC)
  7. Nmap done: 1 IP address (1 host up) scanned in 0.02 seconds

不清楚什么是TCP SYN? 

 TCP SYN扫描一下子不太好理解,但如果将它与TCP connect(全开)扫描比较,就很容易看出这种扫描方式的特点。在TCP connect()扫描中,扫描器利用操作系统本身的系统调用打开一个完整的TCP连接——也就是说,扫描器打开了两个主机之间的完整握手过程(SYN,SYN-ACK,和ACK)。一次完整执行的握手过程表明远程主机端口是打开的。

 TCP SYN扫描创建的是半打开的连接,它与TCP connect()扫描的不同之处在于,TCP SYN扫描发送的是复位(RST)标记而不是结束ACK标记(即,SYN,SYN-ACK,或RST):如果远程主机正在监听且端口是打开的,远程主机用SYN-ACK应答,Nmap发送一个RST;如果远程主机的端口是关闭的,它的应答将是RST,此时Nmap转入下一个端口。

 如果要勾画一个网络的整体情况,Ping扫描和TCP SYN扫描最为实用。Ping扫描通过发送ICMP (Internet Control Message Protocol,Internet控制消息协议)回应请求数据包和TCP应答(Acknowledge,简写ACK)数据包,确定主机的状态,非常适合于检测指定网段内正在运行的主机数量。

使用-n选项可以不执行DNS解析

  1. [root@proxy ~]# nmap -n -sP 192.168.4.100
  2. Starting Nmap 6.40 ( http://nmap.org ) at 2018-06-06 22:00 CST
  3. Nmap scan report for 192.168.4.100
  4. Host is up (0.00046s latency).
  5. MAC Address: 52:54:00:71:07:76 (QEMU Virtual NIC)
  6. Nmap done: 1 IP address (1 host up) scanned in 0.03 seconds

4.检查某网段内哪些主机可以ping通

 如果你是在一个公司里,你可以试试自己网段的哪些主机是开机的,如下操作发现了4.0网段有5个主机可以ping通

  1. [root@proxy ~]# nmap -n -sP 192.168.4.0/24
  2. Starting Nmap 5.51 ( http://nmap.org ) at 2017-05-17 18:01 CST
  3. Nmap scan report for 192.168.4.1
  4. Host is up.
  5. Nmap scan report for 192.168.4.7
  6. Host is up.
  7. Nmap scan report for 192.168.4.120
  8. Host is up (0.00027s latency).
  9. MAC Address: 00:0C:29:74:BE:21 (VMware)
  10. Nmap scan report for 192.168.4.110
  11. Host is up (0.00016s latency).
  12. MAC Address: 00:50:56:C0:00:01 (VMware)
  13. Nmap scan report for 192.168.4.120
  14. Host is up (0.00046s latency).
  15. MAC Address: 00:0C:29:DB:84:46 (VMware)
  16. Nmap done: 256 IP addresses (5 hosts up) scanned in 3.57 seconds

5.检查目标主机所开启的TCP服务(检测有哪些端口正在运行)

 使用全扫描来发现目标主机哪些端口是打开的,如我下面的操作发现此台主机运行了21,22,25,80...这就是你可以尝试攻击的对象(通过某端口发起的攻击)

  1. [root@proxy ~]# nmap -sT 192.168.4.100
  2. Starting Nmap 5.51 ( http://nmap.org ) at 2018-05-17 17:55 CST
  3. Nmap scan report for 192.168.4.100
  4. Host is up (0.00028s latency).
  5. Not shown: 990 closed ports
  6. PORT STATE SERVICE
  7. 21/tcp open ftp
  8. 22/tcp open ssh
  9. 25/tcp open smtp
  10. 80/tcp open http
  11. 110/tcp open pop3
  12. 111/tcp open rpcbind
  13. 143/tcp open imap
  14. 443/tcp open https
  15. 993/tcp open imaps
  16. 995/tcp open pop3s
  17. MAC Address: 00:0C:29:74:BE:21 (VMware)
  18.  
  19. Nmap done: 1 IP address (1 host up) scanned in 1.31 seconds

6.检查192.168.4.0/24网段内哪些主机开启了FTP、SSH服务

  你也可以扫描某个网段的主机开启的端口

  1. [root@proxy ~]# nmap -p 21-22 192.168.4.0/24
  2. Starting Nmap 5.51 ( http://nmap.org ) at 2017-05-17 18:00 CST
  3. Nmap scan report for 192.168.4.1
  4. Host is up (0.000025s latency).
  5. PORT STATE SERVICE
  6. 21/tcp open ftp
  7. 22/tcp open ssh
  8.  
  9. Nmap scan report for 192.168.4.7
  10. Host is up.
  11. PORT STATE SERVICE
  12. 21/tcp filtered ftp
  13. 22/tcp filtered ssh
  14.  
  15. Nmap scan report for 192.168.4.120
  16. Host is up (0.00052s latency).
  17. PORT STATE SERVICE
  18. 21/tcp open ftp
  19. 22/tcp open ssh
  20. MAC Address: 00:0C:29:74:BE:21 (VMware)
  21.  
  22. Nmap scan report for pc110.tarena.com (192.168.4.110)
  23. Host is up (0.00038s latency).
  24. PORT STATE SERVICE
  25. 21/tcp closed ftp
  26. 22/tcp closed ssh
  27. MAC Address: 00:50:56:C0:00:01 (VMware)
  28.  
  29. Nmap scan report for 192.168.4.120
  30. Host is up (0.00051s latency).
  31. PORT STATE SERVICE
  32. 21/tcp closed ftp
  33. 22/tcp closed ssh
  34. MAC Address: 00:0C:29:DB:84:46 (VMware)
  35.  
  36. Nmap done: 256 IP addresses (5 hosts up) scanned in 4.88 seconds

7.检查目标主机所开启的UDP服务

  1. [root@proxy ~]# nmap -sU 192.168.4.100             //指定-sU扫描UDP
  2. 53/udp open domain
  3. 111/udp open rpcbind

8.全面分析目标主机192.168.4.100的操作系统信息

   全面分析显示的信息更为全面,能够被扫描到的你基本上都可以通过某些方式访问

  1. [root@proxy ~]# nmap -A 192.168.4.100
  2.  
  3. Starting Nmap 5.51 ( http://nmap.org ) at 2017-05-17 18:03 CST
  4. Nmap scan report for 192.168.4.100                     //主机mail的扫描报告
  5. Host is up (0.0016s latency).
  6. Not shown: 990 closed ports
  7. PORT STATE SERVICE VERSION
  8. 21/tcp open ftp vsftpd 2.2.2
  9. | ftp-anon: Anonymous FTP login allowed (FTP code 230)
  10. | -rw-r--r-- 1 0 0 1719 Aug 17 13:33 UserB.pub
  11. | -rw-r--r-- 1 0 0 122 Aug 13 05:27 dl.txt
  12. | drwxr-xr-x 2 14 0 4096 Aug 13 09:07 pub
  13. | -rw-rw-r-- 1 505 505 170 Aug 17 13:18 tools-1.2.3.tar.gz
  14. |_-rw-rw-r-- 1 505 505 287 Aug 17 13:22 tools-1.2.3.tar.gz.sig
  15. 22/tcp open ssh OpenSSH 5.3 (protocol 2.0)
  16. | ssh-hostkey: 1024 86:be:d6:89:c1:2d:d9:1f:57:2f:66:d1:af:a8:d3:c6 (DSA)
  17. |_2048 16:0a:15:01:fa:bb:91:1d:cc:ab:68:17:58:f9:49:4f (RSA)
  18. 25/tcp open smtp Postfix smtpd
  19. 80/tcp open http Apache httpd 2.2.15 ((Red Hat))
  20. |_http-methods: No Allow or Public header in OPTIONS response (status code 302)
  21. | http-title: 302 Found
  22. |_Did not follow redirect to https://192.168.4.100//
  23. 110/tcp open pop3 Dovecot pop3d
  24. |_pop3-capabilities: USER CAPA UIDL TOP OK(K) RESP-CODES PIPELINING STLS SASL(PLAIN)
  25. 111/tcp open rpcbind
  26. MAC Address: 00:0C:29:74:BE:21 (VMware)
  27. No exact OS matches for host (If you know what OS is running on it, see http://nmap.org/submit/ ).
  28. TCP/IP fingerprint:
  29. OS:SCAN(V=5.51%D=8/19%OT=21%CT=1%CU=34804%PV=Y%DS=1%DC=D%G=Y%M=000C29%TM=52
  30. OS:11ED90%P=x86_64-redhat-linux-gnu)SEQ(SP=106%GCD=1%ISR=10B%TI=Z%CI=Z%II=I
  31. OS:%TS=A)OPS(O1=M5B4ST11NW6%O2=M5B4ST11NW6%O3=M5B4NNT11NW6%O4=M5B4ST11NW6%O
  32. OS:5=M5B4ST11NW6%O6=M5B4ST11)WIN(W1=3890%W2=3890%W3=3890%W4=3890%W5=3890%W6
  33. OS:=3890)ECN(R=Y%DF=Y%T=40%W=3908%O=M5B4NNSNW6%CC=Y%Q=)T1(R=Y%DF=Y%T=40%S=O
  34. OS:%A=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=
  35. OS:0%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%
  36. OS:S=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(
  37. OS:R=Y%DF=N%T=40%IPL=164%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=
  38. OS:N%T=40%CD=S)
  39.  
  40. Network Distance: 1 hop
  41. Service Info: Host: mail.tarena.com; OS: Unix
  42.  
  43. TRACEROUTE
  44. HOP RTT ADDRESS
  45. 1 1.55 ms 192.168.4.100

三、TCPDump抓包

1.什么是TCPDump   

 TCPDump可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。

2.安装TCPDump

yum -y install tcpdump

3.基本命令

 tcpdump [选项][过滤条件]

监控选项如下:

  1.  -i,指定监控的网络接口(默认监听第一个网卡)
  2.  -A,转换为 ACSII 码,以方便阅读
  3.  -w,将数据包信息保存到指定文件
  4.  -r,从指定文件读取数据包信息

tcpdump的过滤条件:

  1.  类型:host、net、port、portrange
  2.  方向:src、dst
  3.  协议:tcp、udp、ip、wlan、arp、……
  4.  多个条件组合:and、or、not

4.使用tcpdump分析FTP访问中的明文交换信息

1)准备Vsftpd服务器(192.168.4.5操作)

  1. [root@proxy ~]# yum -y install vsftpd
  2. [root@proxy ~]# systemctl restart vsftpd

2)启用tcpdump命令行抓包

 执行tcpdump命令行,添加适当的过滤条件,只抓取访问主机192.168.4.5的21端口的数据通信 ,并转换为ASCII码格式的易读文本。

 这里假设,192.168.4.5主机有vsftpd服务,如果没有需要提前安装并启动服务!!!

    此处我们抓取ip为192.168.4.5的主机,并附带条件,主区基于tcp协议的21端口(ftp端口)

 当执行这条命令后会锁定终端,你无法进行其他操作,除非重开一台终端(控制台)

  1. [root@proxy ~]# tcpdump -A host 192.168.4.5 and tcp port 21
  2. tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
  3. listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
  4. .. ..                                            //进入等待捕获数据包的状态
  5.  

3)执行FTP访问,并观察tcpdump抓包结果

从192.168.4.100访问主机192.168.4.5的vsftpd服务。

我们常见的ftp是通过访问ftp://ip 的形式,但是最早的访问ftp的方法是通过命令获取文件的,虽然现在已经被淘汰,但是还是可以在这里作为实验教材

我们在使用ftp时需要输入用户名和密码(用户名密码在ftp服务器设定.用于验证用户是否有权访问).我们这里的目的是截取这个用户名和密码,通过抓包的方法

  1. [root@client ~]# yum -y install ftp
  2. [root@client ~]# ftp 192.168.4.5
  3. Connected to 192.168.4.200 (192.168.4.200).
  4. 220 (vsFTPd 3.0.2)
  5. Name (192.168.4.200:root): tom         //输入用户名
  6. 331 Please specify the password.
  7. Password:                  //输入密码
  8. 530 Login incorrect.
  9. Login failed.
  10. ftp>quit                    //退出

观察抓包的结果(回到porxy主机观察tcpdump抓包的结果):

  1. [root@proxy ~]#
  2. ... …
  3. 18:47:27.960530 IP 192.168.4.100.novation > 192.168.4.5.ftp: Flags [P.], seq 1:14, ack 21, win 65515, length 13
  4. E..5..@[email protected].*..G.\c.1BvP.......USER tom
  5. 18:47:29.657364 IP 192.168.4.100.novation > 192.168.4.5.ftp: Flags [P.], seq 14:27, ack 55, win 65481, length 13
  6. E..5..@[email protected].*..G.\p.1B.P.......PASS 123

4)再次使用tcpdump抓包,使用-w选项可以将抓取的数据包另存为文件,方便后期慢慢分析。

  1. [root@proxy ~]# tcpdump -A -w ftp.cap  host 192.168.4.5 and tcp port 21                            //抓包并保存

tcpdump命令的-r选项,可以去读之前抓取的历史数据文件

  1. [root@proxy ~]# tcpdump -A -r ftp.cap | egrep '(USER|PASS)'    //分析数据包
  2. .. ..
  3. E..(..@.@.. ...x...d.*..G.\c.1BbP.............
  4. 18:47:25.967592 IP 192.168.4.5.ftp > 192.168.4.100.novation: Flags [P.], seq 1:21, ack 1, win 229, length 20
  5. E..<FJ@[email protected]...*.1BbG.\cP...V...220 (vsFTPd 2.2.2)
  6. … …
  7. 18:47:27.960530 IP 192.168.4.100.novation > 192.168.4.5.ftp: Flags [P.], seq 1:14, ack 21, win 65515, length 13
  8. E..5..@[email protected].*..G.\c.1BvP.......USER mickey
  9. … …
  10. 18:47:27.960783 IP 192.168.4.5.ftp > 192.168.4.100.novation: Flags [P.], seq 21:55, ack 14, win 229, length 34
  11. E..JFL@[email protected]...*.1BvG.\pP...i~..331 Please specify the password.
  12. … …
  13. 18:47:29.657364 IP 192.168.4.5.ftp > 192.168.4.100.novation: Flags [P.], seq 14:27, ack 55, win 65481, length 13
  14. E..5..@[email protected].*..G.\p.1B.P.......PASS pwd123
  15. … …
  16. 18:47:29.702671 IP 192.168.4.100.novation > 192.168.4.5.ftp: Flags [P.], seq 55:78, ack 27, win 229, length 23
  17. E..?FN@[email protected]>...d...x...*.1B.G.\}P.......230 Login successful.

四、使用tcpdump分析Nginx的明文账户认证信息信息

1.在proxy主机(192.168.4.5)准备一台需要用户认证的Nginx服务器

  1. [root@proxy ~]# cd /usr/local/nginx/conf/
  2. [root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
  3. server {
  4. listen 80;
  5. server_name localhost;
  6. auth_basic "xx";
  7. auth_basic_user_file "/usr/local/nignx/pass";
  8. … …
  9. [root@proxy ~]# htpasswd -c /usr/local/nginx/pass jerry //创建账户文件
  10. New password:123           //输入密码
  11. Re-type new password:123       //确认密码
  12. [root@proxy ~]# nginx -s reload

2.在proxy主机使用tcpdump命令抓包

  1. [root@proxy ~]# tcpdump -A host 192.168.4.5 and tcp port 80

3.在真实机使用浏览器访问192.168.4.5

  1. [root@pc001 ~]# firefox http://192.168.4.5 //根据提示输入用户名与密码

4.回到proxy查看抓包的数据结果

  1. [root@proxy ~]# tcpdump -A host 192.168.4.5 and tcp port 80
  2. tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
  3. listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
  4. … …
  5. Authorization: Basic dG9tOjEyMzQ1Ng==
  6. … …

5.查看base64编码内容

抓到的密码还需要解码,使用base64解码

  1. [root@proxy ~]# echo "dG9tOjEyMzQ1Ng==" | base64 -d
  2. tom:123456
  3. [root@proxy ~]# echo "tom:123456" | base64
  4. dG9tOjEyMzQ1Ngo=

猜你喜欢

转载自blog.csdn.net/ck784101777/article/details/102467677
今日推荐