49
SECURITY BOOTCAMP 2012 | Make yourself to be an expert! 1 2 Nguyễn Hải Long | [email protected] Penetration with Backtrack 5 R3 Nguyễn Phương Trường Anh | [email protected]

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

Embed Size (px)

Citation preview

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

1

2

Nguyễn Hải Long | [email protected]

Penetration with Backtrack 5 R3

Nguyễn Phương Trường Anh | [email protected]

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

2

2

Giới thiệu Diễn giả 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 ...)

Nội dung chính

2

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

3

2

Diễn giả Nguyễn Hải Long Nguyễn Phương Trường Anh

Backtrack

Giới thiệu

3

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

4

2

About me

4

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

5

2

• 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

• Chuyên môn chính Pentest, tư vấn và triển khai ISO/IEC 27001

Nguyễn Phương Trường Anh

5

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

6

2

6

Giới thiệu

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

7

2

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 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

Backtrack

7

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

8

2

Information Gathering: Nmap, traceroute, sqlmap …

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, …

Các công cụ sẵn có trên Backtrack

8

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

9

2

Sniffer

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

10

2

ARP Spoofing

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

11

2

Sniff Netcut/Anti-Netcut Man in the middle attack

ARP Spoofing (tt)

11

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

12

2

Buffer Overflows Format Strings Race Condition Integer Overflow Off by one

Software Exploit

12

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

13

2

Trình biên dịch và cấu trúc một hàm

13

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

14

2

Trình biên dịch và cấu trúc một hàm

int func ( int a , int b){ int c ; char d [7] ; short e ; return 0 ;}

14

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

15

2

Trà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ó.

Buffer Overflows

15

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

16

2

Buffer Overflows (tt)#include <stdio.h>int main ( ){ int cookie; char buf[16]; printf("&buf: %p, &cookie: %p\n", buf, &cookie); gets(buf); if (cookie == 0x41424344) { printf ( "You win ! \ n" ) ; }}

16

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

17

2

Buffer Overflows (tt)Thay đổi giá trị biến nội bộ

17

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

18

2

Truyền dữ liệu vào chương trình Thay đổi luồng thực thi Quay về thư viện chuẩn …

Buffer Overflows (tt)

18

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

19

2

Buffer Overflows Format Strings Race Condition Integer Overflow Off by one

Software Exploit

19

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

20

2

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:– 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%

Format Strings

20

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

21

2

Format Strings (tt) Dấu % có ý nghĩa đặc biệt % Đánh dấu sự bắt đầu của một yêu cầu định

dạng Yêu cầu định dạng tận cùng bởi ký tự định

dạng

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

22

2

Format Strings (tt)• % in ra ký tự %• c in tham số thứ nhất của một ký tự

• 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

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

23

2

Format Strings (tt)

#include <stdio.h>int main(int argc, char **argv ){ char buffer[512]; int cookie = 0 ; printf("&cookie: %p\n", &cookie); gets( buffer); printf("cookie = %.8X\n",cookie); printf(buffer); printf("\n cookie = %.8X\n", cookie); return 0 ;}

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

24

2

Format Strings (tt)• Nhập vào abcdef

• abcdef

• Nhập vào %x• 0

• Nhập vào %x%x%x%x• 0 0 0 6

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

25

2

Format Strings (tt)• Để gán 0x64 vào biến cookie

• [địa chỉ cookie]%x%x%x%x%x%x%x%x%x[…]%n

• [địa chỉ cookie] in ra 4 byte \x54\xF8\xFF\xBF

• 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 "\x54\xF8\xFF\xBF%x%x%x%x%x%x%x%x%x" + "a"*75 + "%n"' | ./fmt

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

26

2

Buffer Overflows Format Strings Race Condition Integer Overflow Off by one

Software Exploit

26

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

27

2

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 vào thứ tự truy cập

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

28

2

Race Condition (tt)• Để 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 → 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"); }

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

29

2

Race Condition (tt)• Giữa hàm access() và fopen() có một

khoảng thời gian nhỏ

• Hệ điều hành có thể sẽ chuyển qua tiến trình khác ở giữa các lệnh đó

CALL accessCMP EXA, 0JNZ ...PUSH ...PUSH ...CALL fopen

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

30

2

Race Condition (tt)

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

31

2

Race Condition (tt)• 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

• 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

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

32

2

Race Condition (tt)• Đ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 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

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

33

2

Buffer Overflows Format Strings Race Condition Integer Overflow Off by one

Software Exploit

33

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

34

2

• Số nguyên trong máy tính được biểu diễn• Ở dạng bù 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)

Integer Overflow

34

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

35

2

Integer Overflow (tt)• 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

• Xét ví dụ:

• 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

int i;i = atoi(argv[1]);if(i<0x1000) fgets(buf, i, stdin);

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

36

2

Integer Overflow (tt)• Xét ví dụ:

• 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

int i = -2,147,483,648; int j = -1;printf("%d \n", i/j);

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

37

2

Buffer Overflows Format Strings Race Condition Integer Overflow Off by one

Software Exploit

37

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

38

2

• Đâ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

• Xét ví dụ:

Off by one

38

void vuln(char *arg){ char buff[8]; strcpy(buff,arg);}void main (int argc, char **argv){ vuln(argv[1]);}

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

39

2

Off by one (tt)• 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

• 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

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

40

2

Off by one (tt)• 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() 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

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

41

2

Off by one (tt)

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

42

2

Demo Buffer Overflow

42

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

43

2

SQL Injection Cross-site scripting(XSS) Local and Remote file inclusion Web proxy

Web Attack

43

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

44

2

Boolean based blind Time based blind Error based UNION query Stacked queries Out of band

SQL Injection

44

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

45

2

Demo SQL Injection

45

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

46

2

Reflected Persistent DOM-based

Cross-site scripting(XSS)

46

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

47

2

Demo XSS

47

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

48

2

Các tài liệu tham khảo• Nghệ thuật tận dụng lỗi phần mềm – Nguyễn

Thành Nam

• Offensive Security - Penetration Testing with BackTrack (Lab Guide)

• Google

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

SECURITY BOOTCAMP 2012 | Make yourself to be an expert!

49

2

Thanks & Question

49