• Security基础(二):SELinux安全防护、加密与解密应用、扫描与抓包分析


    一、SELinux安全防护

    目标:

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

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

    步骤:

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

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

    确认或修改SELINUX为enforcing模式:

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

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

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

        [root@svr7 ~]# getenforce
        Permissive
        [root@svr7 ~]# setenforce 1              //或者setenforce  enforcing
        [root@svr7 ~]# getenforce
        Enforcing

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        [root@svr7 ~]# setsebool  allow_ftpd_full_access=0
        [root@svr7 ~]# getsebool  allow_ftpd_full_access
        allow_ftpd_full_access --> off

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

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

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

    3)通过FTP方式测试下载

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

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

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

        [root@svr7 ~]# ls -Z /var/ftp/d?.tar.gz
        -rw-r--r--. root root unconfined_u:object_r:public_content_t:s0 /var/ftp/d1.tar.gz
        -rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 /var/ftp/d2.tar.gz
        [root@svr7 ~]# chcon -t public_content_t /var/ftp/d2.tar.gz
        [root@svr7 ~]# ls -Z /var/ftp/d2.tar.gz
        -rw-r--r--. root root unconfined_u:object_r:public_content_t:s0 /var/ftp/d2.tar.gz
        [root@svr7 ~]# wget ftp://192.168.4.7/d2.tar.gz
        .. ..
        ==> PASV ... 完成。    ==> RETR d2.tar.gz ... 完成。
        长度:13124 (13K) (非正式数据)
        .. ..
        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 ,效果相同。

    二、加密与解密应用

    目标:

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

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

    方案:

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

    步骤:

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

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

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

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

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

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

    1) gpg对称加密操作

    执行下列操作:

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

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

            

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

             

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

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

    2) gpg对称解密操作

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    三、扫描与抓包分析

    目标:

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

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

    步骤:

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

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

        [root@svr7 ~]# nmap 192.168.4.100
        Starting Nmap 5.51 ( http://nmap.org ) at 2017-05-17 17:55 CST
        Nmap scan report for 192.168.4.100
        Host is up (0.00028s latency).
        Not shown: 990 closed ports
        PORT    STATE SERVICE
        21/tcp  open  ftp
        22/tcp  open  ssh
        25/tcp  open  smtp
        80/tcp  open  http
        110/tcp open  pop3
        111/tcp open  rpcbind
        143/tcp open  imap
        443/tcp open  https
        993/tcp open  imaps
        995/tcp open  pop3s
        MAC Address: 00:0C:29:74:BE:21 (VMware)
        Nmap done: 1 IP address (1 host up) scanned in 1.31 seconds

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

        [root@svr7 ~]# nmap -p 21-22 192.168.4.0/24
        Starting Nmap 5.51 ( http://nmap.org ) at 2017-05-17 18:00 CST
        Nmap scan report for 192.168.4.1
        Host is up (0.000025s latency).
        PORT   STATE SERVICE
        21/tcp open  ftp
        22/tcp open  ssh
        Nmap scan report for 192.168.4.7
        Host is up.
        PORT   STATE    SERVICE
        21/tcp filtered ftp
        22/tcp filtered ssh
        Nmap scan report for 192.168.4.120
        Host is up (0.00052s latency).
        PORT   STATE SERVICE
        21/tcp open  ftp
        22/tcp open  ssh
        MAC Address: 00:0C:29:74:BE:21 (VMware)
        Nmap scan report for pc110.tarena.com (192.168.4.110)
        Host is up (0.00038s latency).
        PORT   STATE  SERVICE
        21/tcp closed ftp
        22/tcp closed ssh
        MAC Address: 00:50:56:C0:00:01 (VMware)
        Nmap scan report for 192.168.4.120
        Host is up (0.00051s latency).
        PORT   STATE  SERVICE
        21/tcp closed ftp
        22/tcp closed ssh
        MAC Address: 00:0C:29:DB:84:46 (VMware)
        Nmap done: 256 IP addresses (5 hosts up) scanned in 4.88 seconds

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

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

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

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

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

    1)启用tcpdump命令行抓包

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

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

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

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

        .. ..
        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
        E..4..@.@......x...d.*..G.........;...............
        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
        E..4..@.@......d...x...*.1BaG.c..9.7...............
        18:47:25.964436 IP 192.168.4.120.novation > 192.168.4.100.ftp: Flags [.], ack 1, win 65535, length 0
        E..(..@.@.. ...x...d.*..G.c.1BbP.............
        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
        E..<FJ@.@.jE...d...x...*.1BbG.cP...V...220 (vsFTPd 2.2.2)
        18:47:26.117057 IP 192.168.4.120.novation > 192.168.4.100.ftp: Flags [.], ack 21, win 65515, length 0
        E..(..@.@......x...d.*..G.c.1BvP.............
        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
        E..5..@.@......x...d.*..G.c.1BvP.......USER mickey
        18:47:27.960544 IP 192.168.4.100.ftp > 192.168.4.120.novation: Flags [.], ack 14, win 229, length 0
        E..(FK@.@.jX...d...x...*.1BvG.pP.............
        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
        E..JFL@.@.j5...d...x...*.1BvG.pP...i~..331 Please specify the password.
        18:47:28.085168 IP 192.168.4.120.novation > 192.168.4.100.ftp: Flags [.], ack 55, win 65481, length 0
        E..(..@.@......x...d.*..G.p.1B.P.............
        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
        E..5..@.@......x...d.*..G.p.1B.P.......PASS pwd123
        18:47:29.696968 IP 192.168.4.100.ftp > 192.168.4.120.novation: Flags [.], ack 27, win 229, length 0
        E..(FM@.@.jV...d...x...*.1B.G.}P.............
        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
        E..?FN@.@.j>...d...x...*.1B.G.}P.......230 Login successful.
        18:47:29.835258 IP 192.168.4.120.novation > 192.168.4.100.ftp: Flags [.], ack 78, win 65458, length 0
        E..(..@.@......x...d.*..G.}.1B.P.............
        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
        E.....@.@......x...d.*..G.}.1B.P...    ...QUIT
        18:47:31.716532 IP 192.168.4.100.ftp > 192.168.4.120.novation: Flags [.], ack 33, win 229, length 0
        E..(FO@.@.jT...d...x...*.1B.G..P....}........
        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
        E..6FP@.@.jE...d...x...*.1B.G..P.......221 Goodbye.
        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
        E..(FQ@.@.jR...d...x...*.1B.G..P....n........
        18:47:31.717053 IP 192.168.4.120.novation > 192.168.4.100.ftp: Flags [.], ack 93, win 65444, length 0
        E..(..@.@......x...d.*..G...1B.P.............
        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
        E..(..@.@......x...d.*..G...1B.P.............
        18:47:31.719097 IP 192.168.4.100.ftp > 192.168.4.120.novation: Flags [.], ack 34, win 229, length 0
        E..(..@.@......d...x...*.1B.G..P....m........

  • 相关阅读:
    WEB安全第二篇--用文件搞定服务器:任意文件上传、文件包含与任意目录文件遍历
    WEB安全第一篇--对服务器的致命一击:代码与命令注入
    python的内存管理与垃圾回收机制学习
    java反序列化漏洞的检测
    python epoll实现异步socket
    Python class的属性访问控制和内建函数重写实现高级功能以及@property
    weblogic新漏洞学习cve-2017-10271
    PHP后门的eval类和system类 函数到底有哪些区别
    JS 转整型
    .NET MVC model数据验证
  • 原文地址:https://www.cnblogs.com/baichuanhuihai/p/8337783.html
Copyright © 2020-2023  润新知