zoukankan      html  css  js  c++  java
  • SElinux安全防护

    SELinux安全防护

    1.1 问题

    本案例要求熟悉SELinux防护机制的开关及策略配置,完成以下任务:

    1. 将Linux服务器的SELinux设为enforcing强制模式
    2. 在SELinux启用状态下,调整策略打开vsftpd服务的匿名上传访问
    3. 从/root目录下移动一个包文件到FTP下载目录,调整策略使其能够被下载

    1.2 步骤

    实现此案例需要按照如下步骤进行。

    步骤一:将Linux服务器的SELinux设为enforcing强制模式

    1)固定配置:修改/etc/selinux/config文件

    确认或修改SELINUX为enforcing模式:

    1. [root@svr7 ~]# vim /etc/selinux/config
    2. SELINUX=enforcing
    3. SELINUXTYPE=targeted

    2)临时配置:使用setenforce命令

    查看当前SELinux状态,如果是disabled则需要根据第1)步的配置重启系统;如果是permissive则使用setenforce命令修改为enforcing即可:

    1. [root@svr7 ~]# getenforce
    2. Permissive
    3. [root@svr7 ~]# setenforce 1             //或者setenforce enforcing
    4. [root@svr7 ~]# getenforce
    5. Enforcing

    步骤二:在SELinux启用状态下,调整策略打开vsftpd服务的匿名上传访问

    1)配置一个允许匿名上传的vsftpd服务作为测试环境

    1. [root@svr7 ~]# yum –y install vsftpd
    2. .. ..
    3. [root@svr7 ~]# vim /etc/vsftpd/vsftpd.conf
    4. anonymous_enable=YES                                 //开启匿名访问
    5. write_enable=YES
    6. anon_umask=022
    7. anon_upload_enable=YES                             //允许上传文件
    8. anon_mkdir_write_enable=YES                         //允许上传目录
    9. [root@svr7 ~]# chown ftp /var/ftp/pub
    10. [root@svr7 ~]# service vsftpd start
    11. 为 vsftpd 启动 vsftpd: [确定]

    2)启用SELinux时验证FTP上传访问

    在targeted策略的布尔值设置中,默认禁止FTP匿名写入和完全访问:

    1. [root@svr7 ~]# ls > test.txt
    2. [root@svr7 ~]# ftp 192.168.4.7
    3. [root@svr7 ~]# ftp 192.168.4.7
    4. .. ..
    5. Name (192.168.4.7:root): ftp
    6. 331 Please specify the password.
    7. Password:
    8. 230 Login successful.
    9. Remote system type is UNIX.
    10. Using binary mode to transfer files.
    11. ftp> cd pub
    12. 250 Directory successfully changed.
    13. ftp> put test.txt                                         //尝试上传测试文件
    14. local: test.txt remote: test.txt
    15. 227 Entering Passive Mode (192,168,4,5,121,146).
    16. 553 Could not create file.                                 //上传失败
    17. ftp> quit
    18. 221 Goodbye.

    3)调整与FTP相关的SELinux布尔值,开放上传写入权限

    检查与allow_ftpd相关的SELinux布尔值,如果是off,则将其修改为on:

    1. [root@svr7 ~]# getsebool -a |grep allow_ftpd                 //查看布尔值
    2. allow_ftpd_anon_write --> off
    3. allow_ftpd_full_access --> off
    4. .. .
    5. [root@svr7 ~]# setsebool -P allow_ftpd_anon_write=1         //设置布尔值
    6. [root@svr7 ~]# setsebool -P allow_ftpd_full_access=1
    7. [root@svr7 ~]# getsebool -a |grep allow_ftpd                 //确认修改结果
    8. allow_ftpd_anon_write --> on
    9. allow_ftpd_full_access --> on

    4)再次访问vsftpd服务,经测试发现匿名上传已经可用

    1. [root@svr7 ~]# ftp 192.168.4.7
    2. .. ..
    3. Name (192.168.4.7:root): ftp
    4. 331 Please specify the password.
    5. Password:
    6. 230 Login successful.
    7. Remote system type is UNIX.
    8. Using binary mode to transfer files.
    9. ftp> cd pub
    10. 250 Directory successfully changed.
    11. ftp> put test.txt                                         //尝试上传测试文件
    12. local: test.txt remote: test.txt
    13. 227 Entering Passive Mode (192,168,4,5,63,249).
    14. 150 Ok to send data.
    15. 226 Transfer complete.                                     //上传成功
    16. 237 bytes sent in 6.3e-05 secs (3761.90 Kbytes/sec)
    17. ftp> quit
    18. 221 Goodbye.

    步骤三:从/root目录下移动一个包文件到FTP下载目录,调整文件的安全上下文

    1)关闭FTP布尔值allow_ftpd_full_access以便测试

    因为开启此项会扩大FTP目录的访问权限(忽略安全上下文),建议先将其关闭。

    1. [root@svr7 ~]# setsebool allow_ftpd_full_access=0
    2. [root@svr7 ~]# getsebool allow_ftpd_full_access
    3. allow_ftpd_full_access --> off

    2)建立两个FTP下载用的测试文件

    由root用户创建两个测试压缩包,一个直接建立到/var/ftp/目录下,另一个先在/root/下建立,然后移动至/var/ftp/目录 。

    1. [root@svr7 ~]# tar zcf /var/ftp/d1.tar.gz install.log*
    2. [root@svr7 ~]# tar zcf d2.tar.gz install.log*
    3. [root@svr7 ~]# mv d2.tar.gz /var/ftp/
    4. [root@svr7 ~]# ls -lh /var/ftp/d?.tar.gz
    5. -rw-r--r--. 1 root root 13K 8月 16 10:16 /var/ftp/d1.tar.gz
    6. -rw-r--r--. 1 root root 13K 8月 16 10:16 /var/ftp/d2.tar.gz

    3)通过FTP方式测试下载

    使用wget命令分别下载这两个包文件,第二个包将会下载失败(看不到文件)。

    1. [root@svr7 ~]# wget ftp://192.168.4.7/d1.tar.gz
    2. .. ..
    3. ==> PASV ... 完成。 ==> RETR d1.tar.gz ... 完成。
    4. .. ..
    5. 2017-08-16 10:36:16 (235 MB/s) - “d1.tar.gz” 已保存 [13124]
    6. [root@svr7 ~]# wget ftp://192.168.4.7/d2.tar.gz
    7. .. ..
    8. ==> PASV ... 完成。 ==> RETR d2.tar.gz ...
    9. 文件 “d2.tar.gz” 不存在。

    4)检查该测试包的安全上下文,正确调整后再次下载第二个包成功。

    1. [root@svr7 ~]# ls -Z /var/ftp/d?.tar.gz
    2. -rw-r--r--. root root unconfined_u:object_r:public_content_t:s0 /var/ftp/d1.tar.gz
    3. -rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 /var/ftp/d2.tar.gz
    4. [root@svr7 ~]# chcon -t public_content_t /var/ftp/d2.tar.gz
    5. [root@svr7 ~]# ls -Z /var/ftp/d2.tar.gz
    6. -rw-r--r--. root root unconfined_u:object_r:public_content_t:s0 /var/ftp/d2.tar.gz
    7. [root@svr7 ~]# wget ftp://192.168.4.7/d2.tar.gz
    8. .. ..
    9. ==> PASV ... 完成。 ==> RETR d2.tar.gz ... 完成。
    10. 长度:13124 (13K) (非正式数据)
    11. .. ..
    12. 2017-08-16 10:42:21 (178 MB/s) - “d2.tar.gz” 已保存 [13124]

    注意:上例中的chcon操作可替换为restorecon /var/ftp/d2.tar.gz 或者chcon --reference=/var/ftp/d1.tar.gz /var/ftp/d2.tar.gz ,效果相同。

    2 案例2:加密与解密应用

    2.1 问题

    本案例要求采用gpg工具实现加/解密及软件签名等功能,分别完成以下任务:

    1. 检查文件的MD5校验和
    2. 使用GPG实现文件机密性保护,加密和解密操作
    3. 使用GPG实现软件包的完整性校验,检查软件包签名

    2.2 方案

    使用两台RHEL7虚拟机,加密操作主要在svr7上完成,而pc207作为接收方、测试用客户机、软件签名发布用机。

    2.3 步骤

    实现此案例需要按照如下步骤进行。

    步骤一:检查文件的MD5校验和

    1) 查看文件改动前的校验和,复制为新文件其校验和不变

    1. [root@svr7 ~]# vim file1.txt
    2. abcdef
    3. 123456779
    4. [root@svr7 ~]# cp file1.txt file2.txt
    5. [root@svr7 ~]# cat file1.txt > file3.txt
    6. [root@svr7 ~]# md5sum file?.txt                 //文件内容一致,则校验和也不变
    7. b92aa0f8aa5d5af5a47c6896283f3536 file1.txt
    8. b92aa0f8aa5d5af5a47c6896283f3536 file2.txt
    9. b92aa0f8aa5d5af5a47c6896283f3536 file3.txt

    2) 对文件内容稍作改动,再次检查校验和,会发现校验和已大不相同

    1. [root@svr7 ~]# echo "x" >> file1.txt
    2. [root@svr7 ~]# md5sum file?.txt
    3. 6be3efe71d8b4b1ed34ac45f4edd2ba7 file1.txt
    4. b92aa0f8aa5d5af5a47c6896283f3536 file2.txt
    5. b92aa0f8aa5d5af5a47c6896283f3536 file3.txt

    步骤二:使用GPG对称加密方式保护文件

    1) gpg对称加密操作

    执行下列操作:

    1. [root@svr7 ~]# gpg -c file2.txt
    2. .. ..

    根据提示依次输入两次密码即可。如果是在GNOME桌面环境,设置密码的交互界面会是弹出的窗口程序,如图-1所示:

    图-1

    如果是在tty终端执行的上述加密操作,则提示界面也是文本方式的,如图-2所示。

    图-2

    根据提示输入两次口令,加密后的文件(自动添加后缀 .gpg)就生成了,传递过程中只要发送加密的文件(比如 file2.txt.gpg)就可以了。

    1. [root@svr7 ~]# file file2.txt*
    2. file2.txt: ASCII text
    3. file2.txt.gpg: data                             //传递给其他人时用这个文件

    2) gpg对称解密操作

    收到加密的文件后,必须进行解密才能查看其内容。

    1. [root@pc207 ~]# head -1 file2.txt.gpg             //未解密查看显示为乱码
    2. X▒ܶn▒-E▒▒0▒▒▒ u▒▒(▒
    3. 7>0-▒▒▒,=2▒9[*c{▒/▒▒,▒▒eSx
    4. [root@pc207 ~]# gpg -d file2.txt.gpg > file2.txt     //解密后保存
    5. gpg: 3DES 加密过的数据
    6. .. ..                                             //根据提示输入正确密码
    7. gpg: 以 1 个密码加密
    8. gpg: 警告:报文未受到完整的保护
    9. [root@pc207 ~]# cat file2.txt                     //查看解密后的文件
    10. abcdef
    11. 123456779

    步骤三:使用GPG非对称加密方式保护文件

    非对称加密/解密文件时,发送方(UserA)以接收方(UserB)的公钥加密文件,接收方以自己的私钥解密,实现过程如下所述。

    1)接收方UserB创建自己的公钥、私钥对

    执行gpg --gen-key操作,根据提示选择并创建密钥:

    1. [UserB@pc207 ~]$ gpg --gen-key
    2. gpg (GnuPG) 2.0.14; Copyright (C) 2009 Free Software Foundation, Inc.
    3. This is free software: you are free to change and redistribute it.
    4. There is NO WARRANTY, to the extent permitted by law.
    5. 请选择您要使用的密钥种类:
    6. (1) RSA and RSA (default)
    7. (2) DSA and Elgamal
    8. (3) DSA (仅用于签名)
    9. (4) RSA (仅用于签名)
    10. 您的选择?                                             //直接回车默认(1)
    11. RSA 密钥长度应在 1024 位与 4096 位之间。
    12. 您想要用多大的密钥尺寸?(2048)                             //接受默认2048位
    13. 您所要求的密钥尺寸是 2048 位
    14. 请设定这把密钥的有效期限。
    15. 0 = 密钥永不过期
    16. <n> = 密钥在 n 天后过期
    17. <n>w = 密钥在 n 周后过期
    18. <n>m = 密钥在 n 月后过期
    19. <n>y = 密钥在 n 年后过期
    20. 密钥的有效期限是?(0)                                     //接受默认永不过期
    21. 密钥永远不会过期
    22. 以上正确吗?(y/n)y                                         //输入y确认
    23. You need a user ID to identify your key; the software constructs the user ID
    24. from the Real Name, Comment and Email Address in this form:
    25. "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
    26. 真实姓名:UserB
    27. 电子邮件地址:UserB@tarena.com
    28. 注释:User B
    29. 您选定了这个用户标识:
    30. UserB (User B) <UserB@tarena.com>”
    31. 更改姓名(N)、注释(C)、电子邮件地址(E)或确定(O)/退出(Q)?o     //输入o确认
    32. 您需要一个密码来保护您的私钥。
    33. can't connect to `/home/UserB/.gnupg/S.gpg-agent': 没有那个文件或目录
    34. 我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动
    35. 鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。
    36.                                         //此处根据提示做些写操作,比如dd命令
    37. gpg: /home/UserB/.gnupg/trustdb.gpg:建立了信任度数据库
    38. gpg: 密钥 421C9354 被标记为绝对信任
    39. 公钥和私钥已经生成并经签名。
    40. gpg: 正在检查信任度数据库
    41. gpg: 需要 3 份勉强信任和 1 份完全信任,PGP 信任模型
    42. gpg: 深度:0 有效性: 1 已签名: 0 信任度:0-,0q,0n,0m,0f,1u
    43. pub 2048R/421C9354 2017-08-16
    44. 密钥指纹 = 8A27 6FB5 1315 CEF8 D8A0 A65B F0C9 7DA6 421C 9354
    45. uid UserB (User B) <UserB@tarena.com>
    46. sub 2048R/9FA3AD25 2017-08-16

    2)接收方UserB导出自己的公钥文件

    用户的公钥、私钥信息分别保存在pubring.gpg和secring.gpg文件内:

    1. [UserB@pc207 ~]$ gpg --list-keys                         //查看公钥环
    2. /home/UserB/.gnupg/pubring.gpg
    3. ------------------------------
    4. pub 2048R/421C9354 2017-08-16
    5. uid UserB (User B) <UserB@tarena.com>
    6. sub 2048R/9FA3AD25 2017-08-16
    7. [UserB@pc207 ~]$ gpg --list-secret-keys
    8. /home/UserB/.gnupg/secring.gpg                         //查看私钥环
    9. ------------------------------
    10. sec 2048R/421C9354 2017-08-16
    11. uid UserB (User B) <UserB@tarena.com>
    12. ssb 2048R/9FA3AD25 2017-08-16

    使用gpg命令结合--import选项将其中的公钥文本导出,传给发送方UserA:

    1. [UserB@pc207 ~]$ gpg -a --export UserB > /tmp/UserB.pub
    2. [UserB@pc207 ~]$ ftp 192.168.4.7
    3. .. ..
    4. Name (192.168.4.7:UserB): ftp
    5. 331 Please specify the password.
    6. Password:
    7. 230 Login successful.
    8. Remote system type is UNIX.
    9. Using binary mode to transfer files.
    10. ftp> cd pub
    11. 250 Directory successfully changed.
    12. ftp> lcd /tmp/
    13. Local directory now /tmp
    14. ftp> put UserB.pub                         //通过FTP将公钥传给发送方主机
    15. local: UserB.pub remote: UserB.pub
    16. 227 Entering Passive Mode (192,168,4,6,59,39).
    17. 150 Ok to send data.
    18. 226 Transfer complete.
    19. 1719 bytes sent in 0.000127 secs (13535.43 Kbytes/sec)
    20. ftp> quit
    21. 221 Goodbye.

    3)发送方UserA导入接收方的公钥信息

    使用gpg命令结合--import选项导入发送方的公钥信息,以便在加密文件时指定接收人来调用对应的公钥。

    1. [UserA@svr7 ~]$ gpg --import /var/ftp/pub/UserB.pub
    2. gpg: 密钥 421C9354:公钥“UserB (User B) <UserB@tarena.com>”已导入
    3. gpg: 合计被处理的数量:1
    4. gpg: 已导入:1 (RSA: 1)
    5. [UserA@svr7 ~]$ echo "I love you ." > tosend.txt
    6. [UserA@svr7 ~]$ gpg -e -r UserB tosend.txt
    7. gpg: 9FA3AD25:没有证据表明这把密钥真的属于它所声称的持有者
    8. pub 2048R/9FA3AD25 2017-08-16 UserB (User B) <UserB@tarena.com>
    9. 主钥指纹: 8A27 6FB5 1315 CEF8 D8A0 A65B F0C9 7DA6 421C 9354
    10. 子钥指纹: 08EA 5D11 FB25 9AF1 8137 0E47 AD13 F31B 9FA3 AD25
    11. 这把密钥并不一定属于用户标识声称的那个人。如果您真的知道自
    12. 己在做什么,您可以在下一个问题回答 yes。
    13. 无论如何还是使用这把密钥吗?(y/N)y                     //确认使用此密钥加密文件
    14. [UserA@svr7 ~]$ exit
    15. logout
    16. [root@svr7 ~]# cp /home/UserA/tosend.txt.gpg /var/ftp/tosend.txt.gpg

    4)接收方UserB收取加密文件,以自己的私钥解密文件

    1. [UserB@pc207 ~]$ wget ftp://192.168.4.7/tosend.txt.gpg
    2. 2017-08-16 15:28:30 (40.8 MB/s) - “tosend.txt.gpg” 已保存 [355]
    3. [UserB@pc207 ~]$ gpg -d tosend.txt.gpg > tosend.txt
    4. 您需要输入密码,才能解开这个用户的私钥:“UserB (User B) <UserB@tarena.com>”
    5. 2048 位的 RSA 密钥,钥匙号 9FA3AD25,建立于 2017-08-16 (主钥匙号 421C9354)
    6.                                                 //验证私钥口令
    7. can't connect to `/home/UserB/.gnupg/S.gpg-agent': 没有那个文件或目录
    8. gpg: 由 2048 位的 RSA 密钥加密,钥匙号为 9FA3AD25、生成于 2017-08-16
    9. UserB (User B) <UserB@tarena.com>”
    10. [UserB@pc207 ~]$ cat tosend.txt                     //获得解密后的文件内容
    11. I love you .

    步骤四:使用GPG实现软件包的完整性校验,检查软件包签名

    1)在pc207上,作者UserB为软件包创建分离式签名

    将软件包、签名文件、公钥文件一起发布给其他用户下载,。

    1. [UserB@pc207 ~]$ tar zcf tools-1.2.3.tar.gz /etc/hosts     //建立测试软件包
    2. [UserB@pc207 ~]$ gpg -b tools-1.2.3.tar.gz                 //创建分离式数字签名
    3. [UserB@pc207 ~]$ ls -lh tools-1.2.3.tar.gz* UserB.pub
    4. -rw-rw-r--. 1 UserB UserB 170 8月 17 21:18 tools-1.2.3.tar.gz
    5. -rw-rw-r--. 1 UserB UserB 287 8月 17 21:22 tools-1.2.3.tar.gz.sig
    6. -rw-rw-r--. 1 UserB UserB 1.7K 8月 17 21:26 UserB.pub
    7. [UserB@pc207 ~]$ exit
    8. logout
    9. [root@pc207 ~]# yum -y install vsftpd
    10. [root@pc207 ~]# cp /home/UserB/tools-1.2.3.tar.gz* /var/ftp/
    11. [root@pc207 ~]# cp /home/UserB/UserB.pub /var/ftp/
    12. [root@pc207 ~]# service vsftpd start
    13. 为 vsftpd 启动 vsftpd: [确定]

    2)在svr7上,下载软件包并验证官方签名

    下载主机pc207发布的UserB的软件包、签名、公钥,导入UserB的公钥后即可验证软件包的完整性。

    1. [root@svr7 ~]# wget ftp://192.168.4.207/tools-1.2.3*
    2. .. ..
    3. 2017-08-17 21:29:46 (31.7 MB/s) - “tools-1.2.3.tar.gz” 已保存 [170]
    4. 2017-08-17 21:29:46 (23.3 MB/s) - “tools-1.2.3.tar.gz.sig” 已保存 [287]
    5. [root@svr7 ~]# wget ftp://192.168.4.207/UserB.pub
    6. .. ..
    7. 2017-08-17 21:32:27 (208 MB/s) - “UserB.pub” 已保存 [1719]
    8. [root@svr7 ~]# gpg --import UserB.pub                     //导入作者的公钥信息
    9. .. ..
    10. [root@svr7 ~]# gpg --verify tools-1.2.3.tar.gz.sig tools-1.2.3.tar.gz
    11. gpg: 于 2013年08月17日 星期六 21时22分15秒 CST 创建的签名,使用 RSA,钥匙号 421C9354
    12. gpg: 完好的签名,来自于“UserB (User B) <UserB@tarena.com>”
    13. .. ..

    3 案例3:扫描与抓包分析

    3.1 问题

    本案例要求熟悉Linux主机环境下的常用安全工具,完成以下任务操作:

    1. 使用NMAP扫描来获取指定主机/网段的相关信息
    2. 使用Tcpdump分析FTP访问中的明文交换信息

    3.2 步骤

    实现此案例需要按照如下步骤进行。

    步骤一:使用NMAP扫描来获取指定主机/网段的相关信息

    1)检查目标主机mail所开启的TCP服务

    1. [root@svr7 ~]# nmap 192.168.4.100
    2. Starting Nmap 5.51 ( http://nmap.org ) at 2017-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. Nmap done: 1 IP address (1 host up) scanned in 1.31 seconds

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

    1. [root@svr7 ~]# 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. Nmap scan report for 192.168.4.7
    9. Host is up.
    10. PORT STATE SERVICE
    11. 21/tcp filtered ftp
    12. 22/tcp filtered ssh
    13. Nmap scan report for 192.168.4.120
    14. Host is up (0.00052s latency).
    15. PORT STATE SERVICE
    16. 21/tcp open ftp
    17. 22/tcp open ssh
    18. MAC Address: 00:0C:29:74:BE:21 (VMware)
    19. Nmap scan report for pc110.tarena.com (192.168.4.110)
    20. Host is up (0.00038s latency).
    21. PORT STATE SERVICE
    22. 21/tcp closed ftp
    23. 22/tcp closed ssh
    24. MAC Address: 00:50:56:C0:00:01 (VMware)
    25. Nmap scan report for 192.168.4.120
    26. Host is up (0.00051s latency).
    27. PORT STATE SERVICE
    28. 21/tcp closed ftp
    29. 22/tcp closed ssh
    30. MAC Address: 00:0C:29:DB:84:46 (VMware)
    31. Nmap done: 256 IP addresses (5 hosts up) scanned in 4.88 seconds

    3)检查192.168.4.0/24网段内哪些主机可以ping通

    1. [root@svr7 ~]# 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

    4)全面分析目标主机192.168.4.100、192.168.4.120的操作系统信息

    1. [root@svr7 ~]# nmap -A 192.168.4.100,120
    2. Starting Nmap 5.51 ( http://nmap.org ) at 2017-05-17 18:03 CST
    3. Nmap scan report for 192.168.4.100                     //主机mail的扫描报告
    4. Host is up (0.0016s latency).
    5. Not shown: 990 closed ports
    6. PORT STATE SERVICE VERSION
    7. 21/tcp open ftp vsftpd 2.2.2
    8. | ftp-anon: Anonymous FTP login allowed (FTP code 230)
    9. | -rw-r--r-- 1 0 0 1719 Aug 17 13:33 UserB.pub
    10. | -rw-r--r-- 1 0 0 122 Aug 13 05:27 dl.txt
    11. | drwxr-xr-x 2 14 0 4096 Aug 13 09:07 pub
    12. | -rw-rw-r-- 1 505 505 170 Aug 17 13:18 tools-1.2.3.tar.gz
    13. |_-rw-rw-r-- 1 505 505 287 Aug 17 13:22 tools-1.2.3.tar.gz.sig
    14. 22/tcp open ssh OpenSSH 5.3 (protocol 2.0)
    15. | ssh-hostkey: 1024 86:be:d6:89:c1:2d:d9:1f:57:2f:66:d1:af:a8:d3:c6 (DSA)
    16. |_2048 16:0a:15:01:fa:bb:91:1d:cc:ab:68:17:58:f9:49:4f (RSA)
    17. 25/tcp open smtp Postfix smtpd
    18. 80/tcp open http Apache httpd 2.2.15 ((Red Hat))
    19. |_http-methods: No Allow or Public header in OPTIONS response (status code 302)
    20. | http-title: 302 Found
    21. |_Did not follow redirect to https://192.168.4.100//
    22. 110/tcp open pop3 Dovecot pop3d
    23. |_pop3-capabilities: USER CAPA UIDL TOP OK(K) RESP-CODES PIPELINING STLS SASL(PLAIN)
    24. 111/tcp open rpcbind
    25. 143/tcp open imap Dovecot imapd
    26. |_imap-capabilities: LOGIN-REFERRALS STARTTLS IMAP4rev1 ENABLE AUTH=PLAIN LITERAL+ IDLE SASL-IR ID
    27. 443/tcp open ssl/http Apache httpd 2.2.15 ((Red Hat))
    28. | http-methods: Potentially risky methods: TRACE
    29. |_See http://nmap.org/nsedoc/scripts/http-methods.html
    30. |_http-title: Site doesn't have a title (text/html; charset=UTF-8).
    31. 993/tcp open ssl/imap Dovecot imapd
    32. |_imap-capabilities: IMAP4rev1 AUTH=PLAIN ENABLE ID LITERAL+ IDLE SASL-IR LOGIN-REFERRALS
    33. 995/tcp open ssl/pop3 Dovecot pop3d
    34. |_pop3-capabilities: OK(K) CAPA RESP-CODES UIDL PIPELINING USER TOP SASL(PLAIN)
    35. MAC Address: 00:0C:29:74:BE:21 (VMware)
    36. No exact OS matches for host (If you know what OS is running on it, see http://nmap.org/submit/ ).
    37. TCP/IP fingerprint:
    38. 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
    39. OS:11ED90%P=x86_64-redhat-linux-gnu)SEQ(SP=106%GCD=1%ISR=10B%TI=Z%CI=Z%II=I
    40. OS:%TS=A)OPS(O1=M5B4ST11NW6%O2=M5B4ST11NW6%O3=M5B4NNT11NW6%O4=M5B4ST11NW6%O
    41. OS:5=M5B4ST11NW6%O6=M5B4ST11)WIN(W1=3890%W2=3890%W3=3890%W4=3890%W5=3890%W6
    42. 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
    43. 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=
    44. 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%
    45. 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(
    46. 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=
    47. OS:N%T=40%CD=S)
    48. Network Distance: 1 hop
    49. Service Info: Host: mail.tarena.com; OS: Unix
    50. TRACEROUTE
    51. HOP RTT ADDRESS
    52. 1 1.55 ms 192.168.4.100
    53. Nmap scan report for 192.168.4.120                     //主机pc120的扫描报告
    54. Host is up (0.00047s latency).
    55. Not shown: 997 closed ports
    56. PORT STATE SERVICE VERSION
    57. 135/tcp open msrpc Microsoft Windows RPC
    58. 139/tcp open netbios-ssn
    59. 445/tcp open microsoft-ds Microsoft Windows XP microsoft-ds
    60. MAC Address: 00:0C:29:DB:84:46 (VMware)
    61. Device type: general purpose
    62. Running: Microsoft Windows XP
    63. OS details: Microsoft Windows XP SP2 - SP3
    64. Network Distance: 1 hop
    65. Service Info: OS: Windows
    66. Host script results:
    67. |_nbstat: NetBIOS name: PC-201307130328, NetBIOS user: <unknown>, NetBIOS MAC: 00:0c:29:db:84:46 (VMware)
    68. |_smbv2-enabled: Server doesn't support SMBv2 protocol
    69. | smb-os-discovery:
    70. | OS: Windows XP (Windows 2000 LAN Manager)
    71. | Name: WORKGROUPPC-201307130328
    72. |_ System time: 2017-05-17 18:04:40 UTC+8
    73. TRACEROUTE
    74. HOP RTT ADDRESS
    75. 1 0.47 ms 192.168.4.120
    76. OS and Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
    77. Nmap done: 2 IP addresses (2 hosts up) scanned in 43.01 seconds

    步骤二:使用Tcpdump分析FTP访问中的明文交换信息

    1)启用tcpdump命令行抓包

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

    1. [root@svr7 ~]# tcpdump -A host 192.168.4.100 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. .. ..                                            //进入等待捕获数据包的状态

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

    参考前面的测试操作,再次从客户机pc120访问主机mail的vsftpd服务。然后查看执行中tcpdump程序的输出,仔细分析FTP连接的建立过程、确认收集到的用户名和口令信息。

    1. .. ..
    2. 18:47:25.964110 IP 192.168.4.120.novation > 192.168.4.100.ftp: Flags [S], seq 1201822818, win 65535, options [mss 1460,nop,wscale 0,nop,nop,sackOK], length 0
    3. E..4..@.@......x...d.*..G.........;...............
    4. 18:47:25.964268 IP 192.168.4.100.ftp > 192.168.4.120.novation: Flags [S.], seq 2284929633, ack 1201822819, win 14600, options [mss 1460,nop,nop,sackOK,nop,wscale 6], length 0
    5. E..4..@.@......d...x...*.1BaG.c..9.7...............
    6. 18:47:25.964436 IP 192.168.4.120.novation > 192.168.4.100.ftp: Flags [.], ack 1, win 65535, length 0
    7. E..(..@.@.. ...x...d.*..G.c.1BbP.............
    8. 18:47:25.967592 IP 192.168.4.100.ftp > 192.168.4.120.novation: Flags [P.], seq 1:21, ack 1, win 229, length 20
    9. E..<FJ@.@.jE...d...x...*.1BbG.cP...V...220 (vsFTPd 2.2.2)
    10. 18:47:26.117057 IP 192.168.4.120.novation > 192.168.4.100.ftp: Flags [.], ack 21, win 65515, length 0
    11. E..(..@.@......x...d.*..G.c.1BvP.............
    12. 18:47:27.960530 IP 192.168.4.120.novation > 192.168.4.100.ftp: Flags [P.], seq 1:14, ack 21, win 65515, length 13
    13. E..5..@.@......x...d.*..G.c.1BvP.......USER mickey
    14. 18:47:27.960544 IP 192.168.4.100.ftp > 192.168.4.120.novation: Flags [.], ack 14, win 229, length 0
    15. E..(FK@.@.jX...d...x...*.1BvG.pP.............
    16. 18:47:27.960783 IP 192.168.4.100.ftp > 192.168.4.120.novation: Flags [P.], seq 21:55, ack 14, win 229, length 34
    17. E..JFL@.@.j5...d...x...*.1BvG.pP...i~..331 Please specify the password.
    18. 18:47:28.085168 IP 192.168.4.120.novation > 192.168.4.100.ftp: Flags [.], ack 55, win 65481, length 0
    19. E..(..@.@......x...d.*..G.p.1B.P.............
    20. 18:47:29.657364 IP 192.168.4.120.novation > 192.168.4.100.ftp: Flags [P.], seq 14:27, ack 55, win 65481, length 13
    21. E..5..@.@......x...d.*..G.p.1B.P.......PASS pwd123
    22. 18:47:29.696968 IP 192.168.4.100.ftp > 192.168.4.120.novation: Flags [.], ack 27, win 229, length 0
    23. E..(FM@.@.jV...d...x...*.1B.G.}P.............
    24. 18:47:29.702671 IP 192.168.4.100.ftp > 192.168.4.120.novation: Flags [P.], seq 55:78, ack 27, win 229, length 23
    25. E..?FN@.@.j>...d...x...*.1B.G.}P.......230 Login successful.
    26. 18:47:29.835258 IP 192.168.4.120.novation > 192.168.4.100.ftp: Flags [.], ack 78, win 65458, length 0
    27. E..(..@.@......x...d.*..G.}.1B.P.............
    28. 18:47:31.716375 IP 192.168.4.120.novation > 192.168.4.100.ftp: Flags [P.], seq 27:33, ack 78, win 65458, length 6
    29. E.....@.@......x...d.*..G.}.1B.P... ...QUIT
    30. 18:47:31.716532 IP 192.168.4.100.ftp > 192.168.4.120.novation: Flags [.], ack 33, win 229, length 0
    31. E..(FO@.@.jT...d...x...*.1B.G..P....}........
    32. 18:47:31.716634 IP 192.168.4.100.ftp > 192.168.4.120.novation: Flags [P.], seq 78:92, ack 33, win 229, length 14
    33. E..6FP@.@.jE...d...x...*.1B.G..P.......221 Goodbye.
    34. 18:47:31.716677 IP 192.168.4.100.ftp > 192.168.4.120.novation: Flags [F.], seq 92, ack 33, win 229, length 0
    35. E..(FQ@.@.jR...d...x...*.1B.G..P....n........
    36. 18:47:31.717053 IP 192.168.4.120.novation > 192.168.4.100.ftp: Flags [.], ack 93, win 65444, length 0
    37. E..(..@.@......x...d.*..G...1B.P.............
    38. 18:47:31.718796 IP 192.168.4.120.novation > 192.168.4.100.ftp: Flags [F.], seq 33, ack 93, win 65444, length 0
    39. E..(..@.@......x...d.*..G...1B.P.............
    40. 18:47:31.719097 IP 192.168.4.100.ftp > 192.168.4.120.novation: Flags [.], ack 34, win 229, length 0
    41. E..(..@.@......d...x...*.1B.G..P....m........
  • 相关阅读:
    POJ 1320 Street Numbers(佩尔方程)
    hdu 3292 No more tricks, Mr Nanguo
    佩尔方程
    hdu 4825 xor sum(字典树+位运算)
    Xor Sum 2(位运算)
    数串
    EJS
    JQuery性能优化
    常用正则
    JavaScript prototype继承中的问题
  • 原文地址:https://www.cnblogs.com/xiaoren112/p/8401147.html
Copyright © 2011-2022 走看看