• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
SBC 2012 - Penetration Testting với Backtrack 5 (Nguyễn Phương Trường Anh + Nguyễn Hải Long)
 

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

on

  • 1,982 views

 

Statistics

Views

Total Views
1,982
Views on SlideShare
1,389
Embed Views
593

Actions

Likes
1
Downloads
104
Comments
0

9 Embeds 593

http://www.crc.lactien.com 260
http://kmasecurity.blogspot.com 191
http://securitybootcamp.vn 125
http://kmasecurity.blogspot.jp 7
http://ec2-54-251-157-37.ap-southeast-1.compute.amazonaws.com 4
http://www.toihoc.info 3
http://kmasecurity.blogspot.co.uk 1
http://www.kmasecurity.blogspot.com 1
http://www.securitybootcamp.vn 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

    • 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
    • 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
    • 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
    • SECURITY BOOTCAMP 2012 | Make yourself to be an expert! About me 4 2 4
    • 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
    • SECURITY BOOTCAMP 2012 | Make yourself to be an expert! 6 Giới thiệu 2 6
    • 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
    • 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
    • SECURITY BOOTCAMP 2012 | Make yourself to be an expert! 9 Sniffer 2
    • SECURITY BOOTCAMP 2012 | Make yourself to be an expert! ARP Spoofing 10 2
    • SECURITY BOOTCAMP 2012 | Make yourself to be an expert! ARP Spoofing (tt) Sniff 11 Netcut/Anti-Netcut Man in the middle attack 2 11
    • 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
    • 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
    • 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
    • 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
    • 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
    • SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Buffer Overflows (tt) 17Thay đổi giá trị biến nội bộ 2 17
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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 ;}
    • 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
    • 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
    • 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
    • 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
    • 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"); }
    • 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 đó
    • SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Race Condition (tt) 30 2
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Off by one (tt) 41 2
    • SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Demo Buffer Overflow 42 2 42
    • 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
    • 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
    • SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Demo SQL Injection 45 2 45
    • SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Cross-site scripting(XSS) 46 Reflected Persistent 2 DOM-based 46
    • SECURITY BOOTCAMP 2012 | Make yourself to be an expert! 47 Demo XSS 2 47
    • 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
    • SECURITY BOOTCAMP 2012 | Make yourself to be an expert! Thanks & Question 49 2 49