SBC 2012 - Penetration Testting với Backtrack 5 (Nguyễn Phương Trường Anh + Nguyễn Hải Long)

2,490 views

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,490
On SlideShare
0
From Embeds
0
Number of Embeds
771
Actions
Shares
0
Downloads
160
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

SBC 2012 - Penetration Testting với Backtrack 5 (Nguyễn Phương Trường Anh + Nguyễn Hải Long)

  1. 1. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! 1 2Penetration with Backtrack 5 R3 Nguyễn Hải Long | kyo1412@gmail.com Nguyễn Phương Trường Anh | truonganhnl@gmail.com
  2. 2. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Nội dung chính 2 Giới thiệu  Diễn giả 2  Backtrack Các phương thức tấn công phổ biến:  ARP Spoofing (Ettercap)  Software Exploit (Windows and Linux)  Web Application Attack (SQLi, XSS, Local ...) 2
  3. 3. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! 3 Giới thiệu Diễn giả  Nguyễn Hải Long 2  Nguyễn Phương Trường Anh Backtrack 3
  4. 4. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! About me 4 2 4
  5. 5. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Nguyễn Phương Trường Anh 5• Kinh nghiệm 5 năm làm việc trong lĩnh vực bảo mật và an toàn thông tin 2• Chuyên môn chính Pentest, tư vấn và triển khai ISO/IEC 27001 5
  6. 6. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! 6 Giới thiệu 2 6
  7. 7. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! 7 Backtrack Backtrack là một bản phân phối linux được tích hợp các công cụ, driver hỗ trợ việc 2 pentest hệ thống. Live DVD or Live USB Flash Phát triển hợp nhất từ 3 công cụ nổi tiếng Whoppix, IWHAX, và Auditor Phiên bản mới nhất Backtrack 5 R3 7
  8. 8. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Các công cụ sẵn có trên Backtrack 8 Information Gathering: Nmap, traceroute, sqlmap … 2 Vulnerability assessment: Nessus, OpenVAS … Exploitation Tool: Metasploit, Aircrack-ng … Privilege Escalation: John the Ripper, Ophcrack, … Maintenance Access Reverse Engineering: gdb, ollydbg, ida … Forensic: sleuthkit, chkrootkit, … 8
  9. 9. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! 9 Sniffer 2
  10. 10. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! ARP Spoofing 10 2
  11. 11. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! ARP Spoofing (tt) Sniff 11 Netcut/Anti-Netcut Man in the middle attack 2 11
  12. 12. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Software Exploit 12 Buffer Overflows Format Strings 2 Race Condition Integer Overflow Off by one 12
  13. 13. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Trình biên dịch và cấu trúc một hàm 13 2 13
  14. 14. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Trình biên dịch và cấu trúc một hàm 14int func ( int a , int b){ int c ; char d [7] ; 2 short e ; return 0 ;} 14
  15. 15. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Buffer Overflows 15Tràn bộ đệm xảy ra khi dữ liệu xử lý dài quá giới hạn vùng nhớ chứa nó. 2 15
  16. 16. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Buffer Overflows (tt) 16#include <stdio.h>int main ( ){ 2 int cookie; char buf[16]; printf("&buf: %p, &cookie: %pn", buf, &cookie); gets(buf); if (cookie == 0x41424344) { printf ( "You win ! n" ) ; }} 16
  17. 17. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Buffer Overflows (tt) 17Thay đổi giá trị biến nội bộ 2 17
  18. 18. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Buffer Overflows (tt) 18 Truyền dữ liệu vào chương trình Thay đổi luồng thực thi 2 Quay về thư viện chuẩn … 18
  19. 19. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Software Exploit 19 Buffer Overflows Format Strings 2 Race Condition Integer Overflow Off by one 19
  20. 20. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Format Strings 20 Là lỗi khi dữ chuỗi dữ liệu nhập vào được đánh giá là tập lệnh của chương trình. Hàm printf()có dạng: 2 – printf(const char *format, ...)Nếu gọi printf("Hello"); – HelloNếu gọi printf("1%"); – 1%Nếu gọi printf("1%%"); – 1% 20
  21. 21. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Format Strings (tt) 21 Dấu % có ý nghĩa đặc biệt % Đánh dấu sự bắt 2 của một yêu cầu định đầu dạng Yêu cầu định dạng tận cùng bởi ký tự định dạng
  22. 22. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Format Strings (tt) 22• % in ra ký tự %• c in tham số thứ nhất của một ký tự 2• x in tham số thứ nhất ở dạng thập lục• X in tham số thứ nhất ở dạng THẬP LỤC• s in chuỗi được chỉ tới bởi tham số thứ nhất• n ghi vào ô nhớ có địa chỉ xác định bởi tham số thứ nhất số lượng ký tự đã in (4 byte)• hn giống với n nhưng chỉ in 2 byte
  23. 23. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Format Strings (tt) 23#include <stdio.h>int main(int argc, char **argv ){ 2 char buffer[512]; int cookie = 0 ; printf("&cookie: %pn", &cookie); gets( buffer); printf("cookie = %.8Xn",cookie); printf(buffer); printf("n cookie = %.8Xn", cookie); return 0 ;}
  24. 24. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Format Strings (tt) 24• Nhập vào abcdef • abcdef 2• Nhập vào %x • 0• Nhập vào %x%x%x%x • 0 0 0 6
  25. 25. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Format Strings (tt) 25• Để gán 0x64 vào biến cookie • [địa chỉ cookie]%x%x%x%x%x%x%x%x%x[…]%n 2• [địa chỉ cookie] in ra 4 byte x54xF8xFFxBF• 9 %x in ra 21 byte 0006b7ead8e0fffff5100• Để in ra tổng cộng 100 ký tự ta cần thêm 100-21- 4=75 ký tự• Vậy […] sẽ là 75 ký tự python -c print "x54xF8xFFxBF%x%x%x%x%x%x%x%x%x" + "a"*75 + "%n" | ./fmt
  26. 26. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Software Exploit 26 Buffer Overflows Format Strings 2 Race Condition Integer Overflow Off by one 26
  27. 27. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Race Condition 27• Xảy ra nhiều tiến trình (tiểu trình) truy cập và sửa đổi cùng một dữ liệu vào cùng một lúc, Kết quả phụ thuộc 2 thứ tự truy cập vào 27
  28. 28. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Race Condition (tt) 28• Để tận dụng lỗi thì người ta chạy thật nhiều tiến trình ngoài để “đua” với tiến trình bị lỗi 2 → Chữ “đua” (race)• Còn được gọi là TOC/TOU• Xét ví dụ: if(access(argv[1], R_OK)==0) { f = fopen(arvg[1], "r"); }
  29. 29. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Race Condition (tt) 29• Giữa hàm access() và fopen() có một khoảng thời gian nhỏ 2 CALL access CMP EXA, 0 JNZ ... PUSH ... PUSH ... CALL fopen• Hệ điều hành có thể sẽ chuyển qua tiến trình khác ở giữa các lệnh đó
  30. 30. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Race Condition (tt) 30 2
  31. 31. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Race Condition (tt) 31• access() và fopen() nhận tên file• Cùng một tên nhưng có thể là 2 file khác nhau • Symlink 2• Do đó ta có thể tận dụng bằng cách: • Chỉ symlink đến tập tin có thể đọc được • Chỉ symlink đến tập tin không có quyền đọc nhưng chương trình bị lỗi có thể đọc được • Lập lại 2 việc này liên tục • Song song đó, ta sẽ chạy chương trình bị lỗi và truyền tên symlink vào
  32. 32. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Race Condition (tt) 32• Điều kiện đua thường gặp ở các ứng dụng xử lý file, ứng dụng mạng, database, ứng dụng đa 2 tiểu trình, ứng dụng web• Ứng dụng web đặc biệt dễ mắc phải vì vừa đa tiến(tiểu) trình, vừa truy cập database, vừa truy cập file
  33. 33. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Software Exploit 33 Buffer Overflows Format Strings 2 Race Condition Integer Overflow Off by one 33
  34. 34. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Integer Overflow 34• Số nguyên trong máy tính được biểu diễn • Ở dạng bù 2 2 • Có dấu hoặc không dấu• Giá trị âm lớn nhất cũng có thể là giá trị dương cao nhất• Số có dấu hiệu bị lệch giá trị âm (-128→127)• Hiện tượng quay vòng (127 +1 = -128, 255+1=0)• Kích thước kiểu dữ liệu ảnh hưởng quan trọng (255 kiểu short là 1 kiểu char) 34
  35. 35. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Integer Overflow (tt) 35• Tràn số nguyên xảy ra khi giá trị số nằm ngoài phạm vi biểu diễn của kiểu dữ liệu 2• Xét ví dụ: int i; i = atoi(argv[1]); if(i<0x1000) fgets(buf, i, stdin);• atoi() trả về số nguyên có dấu• Tham số thứ 2 của fget() là kiểu số nguyên không dấu.• Nếu arvg[1] là số âm thì sẽ gây tràn
  36. 36. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Integer Overflow (tt) 36• Xét ví dụ: int i = -2,147,483,648; int j = -1; 2 printf("%d n", i/j);• i là số âm nhất• j là -1• Khi thực hiện phép chia sẽ ra 2,147,483,648, nhưng 2,147,483,648 vượt quá phạm vi biểu diễn (2,147,483,647) →crash
  37. 37. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Software Exploit 37 Buffer Overflows Format Strings 2 Race Condition Integer Overflow Off by one 37
  38. 38. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! 38 Off by one• Đây là một trường hợp đặc biệt của lỗi tràn bộ đệm, trong đó chỉ duy nhất chỉ tràn một byte 2• Xét ví dụ: void vuln(char *arg) { char buff[8]; strcpy(buff,arg); } void main (int argc, char **argv) { vuln(argv[1]); } 38
  39. 39. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Off by one (tt) 39• Giả sử argv[1] có độ dài 8 ký tự• Khi vào vuln() thì biến buff chứa 8 ký tự này 2• Ký tự kết thúc chuỗi sẽ lem ra ngoài• Ký tự x00 sẽ bị lem vào EBP cũ• Trong phần kết thúc của hàm vuln(): POP EBP => sẽ khiến EBP mang giá trị XXXXXX00• Trong phần kết thúc của hàm main(): MOV ESP, EBP => sẽ khiễn ESP mang giá trị XXXXXX00
  40. 40. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Off by one (tt) 40• Sau đó POP EBP sẽ làm ESP tăng thêm 4• Cuối cùng RET sẽ lấy giá trị hiện tại trên đỉnh ngăn xếp để quay về →lỗi xảy ra trong hàm vuln() 2 nhưng tận dụng trong hàm main()• Hai điểm cần lưu ý: • Giá trị mới của EBP sẽ nhỏ hơn giá trị EBP đã lưu• Và do đó có thể chỉ tới phần ngăn xếp trong vuln()• Giả sử biến buff có địa chỉ tận cùng là 00→cơ hội EBP chỉ tới biến buff sẽ cao → địa chỉ trở về của hàm main() sẽ là địa chỉ của biến buff+4
  41. 41. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Off by one (tt) 41 2
  42. 42. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Demo Buffer Overflow 42 2 42
  43. 43. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! 43 Web Attack SQL Injection Cross-site scripting(XSS) 2 Local and Remote file inclusion Web proxy 43
  44. 44. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! SQL Injection 44 Boolean based blind Time based blind 2 Error based UNION query Stacked queries Out of band 44
  45. 45. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Demo SQL Injection 45 2 45
  46. 46. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Cross-site scripting(XSS) 46 Reflected Persistent 2 DOM-based 46
  47. 47. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! 47 Demo XSS 2 47
  48. 48. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Các tài liệu tham khảo 48• Nghệ thuật tận dụng lỗi phần mềm – Nguyễn Thành Nam 2• Offensive Security - Penetration Testing with BackTrack (Lab Guide)• Google
  49. 49. SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Thanks & Question 49 2 49

×