Tuesday, July 17, 2007

Truy tìm thủ phạm (1)

Hello bà con,

Mấy tháng nay công việc bù đầu, rồi thêm HVAOnline up/down liên tục thành ra thaidn tui chẳng viết được một bài nào cho "ra đầu ra đũa" cả. Cách đây 2h đồng hồ, một người bạn gọi điện cho hay là website của anh ấy vừa bị deface, nhờ tui tìm hiểu thử xem sự thể như thế nào. Sẵn máu forensic đã có trong người từ rất lâu, tui hâm hở nhận lời. Vầ dưới đây là toàn bộ câu chuyện -0-...

Trước khi bắt đầu, xin cho tui được "tâm sự" vài lời. Mặc dầu rất mê cái món forensic nhưng mà đây là lần đầu tiên tui có cơ hội phân tích, điều tra một vụ xâm nhập (chẳng biết hên hay xui nữa :D). Tui đã đọc qua một số cuốn sách nói về computer forensic và tự thấy rằng phương pháp mà tui áp dụng ở dưới đây là rất thiếu bài bản và sự chuyên nghiệp cần có trong công tác điều tra, do đó rất mong nhận được sự đóng góp, chỉ bảo từ các anh chị có nhiều kinh nghiệm trong lĩnh vực này. Vấn đề thứ hai mà tui muốn đề cập là đạo đức trong việc kinh doanh. Mong là những người đứng ngoài sau phá phách này ngộ ra được và chấm dứt những hành động bẩn thỉu của mình trước khi quá muộn. Ok, dài dòng xong rồi, giờ chúng ta bắt đầu.

Ngay khi nhận được tin báo, việc đầu tiên tui yêu cầu bạn tui phải làm là đổi hết tất cả các mật khẩu, từ mật khẩu email cá nhân, mật khẩu tài khoản quản trị diễn đàn cho đến mật khẩu root trên server cũng như các tài khoản khác; đồng thời giữ nguyên hiện trạng server -1- cho đến khi tui truy cập vào nó để điều tra. Đây là hai phản ứng cơ bản mà tui đọc được trong các cuốn sách nói về incident response. Tui nhanh chóng hoàn thành các bài tập gym rồi chạy về nhà và truy cập vào server liền. Tui cho là trong những trường hợp như thế này, thời gian giữ một vai trò rất quan trọng, càng sớm tiếp cận được hiện trường vụ án thì cơ hội thu thập được nhiều thông tin giá trị càng cao.

Đó là một dedicated server chạy LAMP -2-, đặt tại Mỹ, bạn tui thuê của một công ti Việt Nam để host một diễn đàn khá lớn về âm nhạc. Trao đổi với anh bạn, tôi được biết là vụ tấn công xảy ra lúc khoảng 4h-5h chiều. Bình thường khi user truy cập vào trang chủ, họ sẽ tự động được chuyển sang diễn đàn, nhưng chiều nay file index.html của anh đã bị thay đổi với nội dung như sau:
hacked by cana_ximuoi

chiu kho update thuong xuyen may loi bao mat moi cua webserver, ftp nhe admin, lan sau la mat sach data day
Có một cái gì đó bất thường, tui chợt nghĩ. Nếu như kẻ xâm nhập đã có nhã ý muốn nhắc nhở bạn tôi cần phải quan tâm hơn đến vấn đề bảo mật thì tui nghĩ họ đã không chọn cách làm thiếu văn hóa như thế này. Còn nếu như kẻ xâm nhập có dụng ý phá hoại thì chắc hẳn họ đã phô trương bản thân và chửi bới nhiều hơn, điều thường gặp ở những người nghĩ là họ thông minh hơn người khác. Dẫu là ai đi chăng nữa, với hành động deface như vầy, có vẻ kẻ xâm nhập không phải là một tay cừ khôi, âu cũng là một điều đáng mừng ;-).

Vừa login vào server, tui liền chạy lệnh:
# date
Tue Mar 21 12:02:57 GMT+7 2006

# last
root pts/0 223.231.66.125 Tue Mar 21 07:22 - still logged in
yeahlap pts/0 58.186.121.22 Mon Mar 20 00:37 - 00:40 (00:02)
root pts/0 222.253.137.62 Thu Mar 16 05:41 - 05:46 (00:04)
root pts/0 220.231.71.115 Sun Mar 12 10:13 - 10:38 (00:24)
root pts/0 222.253.151.186 Sat Mar 11 22:52 - 22:55 (00:02)
root pts/0 222.253.151.186 Sat Mar 11 22:17 - 22:17 (00:00)
root pts/1 222.253.144.24 Fri Mar 10 13:02 - 13:04 (00:01)
root pts/1 222.253.144.24 Fri Mar 10 12:48 - 12:55 (00:06)
root pts/1 222.253.144.24 Fri Mar 10 12:46 - 12:48 (00:02)
root pts/0 220.231.79.201 Fri Mar 10 12:29 - 13:54 (01:24)
root pts/0 222.253.150.142 Thu Mar 9 21:58 - 21:59 (00:00)
root pts/0 220.231.64.90 Thu Mar 9 10:25 - 10:29 (00:04)
root pts/0 222.253.127.115 Thu Mar 9 10:18 - 10:25 (00:06)
root pts/0 222.253.127.115 Thu Mar 9 10:13 - 10:17 (00:04)
root pts/0 222.253.127.115 Thu Mar 9 10:08 - 10:12 (00:04)
root pts/0 222.253.132.70 Thu Mar 9 04:28 - 04:29 (00:00)
root pts/1 221.133.4.5 Thu Mar 9 00:52 - 02:56 (02:04)
root pts/0 222.253.128.195 Thu Mar 9 00:48 - 00:57 (00:08)
root pts/0 222.253.146.9 Thu Mar 9 00:26 - 00:33 (00:06)
root pts/1 220.231.94.18 Wed Mar 8 12:24 - 15:10 (02:46)
root pts/0 222.253.146.9 Thu Mar 9 00:26 - 00:33 (00:06)
root pts/1 220.231.94.18 Wed Mar 8 12:24 - 15:10 (02:46)
root pts/0 222.253.120.248 Wed Mar 8 11:51 - 12:25 (00:33)
reboot system boot 2.6.9-22.0.2.EL Wed Mar 8 06:42 (13+05:14)
reboot system boot 2.6.9-22.0.2.EL Wed Mar 8 06:35 (00:06)
root pts/0 222.253.90.239 Sat Mar 4 21:12 - 21:41 (00:29)
root pts/0 222.253.120.248 Wed Mar 8 11:51 - 12:25 (00:33)
reboot system boot 2.6.9-22.0.2.EL Wed Mar 8 06:42 (13+05:14)
reboot system boot 2.6.9-22.0.2.EL Wed Mar 8 06:35 (00:06)
root pts/0 222.253.90.239 Sat Mar 4 21:12 - 21:41 (00:29)
root pts/0 222.253.90.239 Sat Mar 4 21:01 - 21:08 (00:07)
root pts/0 222.253.90.239 Sat Mar 4 20:38 - 21:01 (00:22)
reboot system boot 2.6.9-22.0.2.EL Fri Mar 3 22:28 (4+08:05)
reboot system boot 2.6.9-22.0.2.EL Fri Mar 3 22:08 (00:19)
reboot system boot 2.6.9-22.0.2.EL Fri Mar 3 21:58 (00:08)
reboot system boot 2.6.9-22.0.2.EL Fri Mar 3 21:50 (00:07)
reboot system boot 2.6.9-22.0.2.EL Fri Mar 3 21:40 (00:09)
reboot system boot 2.6.9-22.0.2.EL Fri Mar 3 11:03 (10:35)
wtmp begins Fri Mar 3 11:02:19 2006


Lệnh thứ nhất cho tui biết ngày giờ trên server, từ đó tui sẽ tính ra được độ chênh lệch giữa múi giờ trên server và múi giờ ở Việt Nam, trong trường hợp này là 14 giờ, nghĩa là server được đặt ở vùng GMT -7. Đây là một yếu tố cực kì quan trọng, nó sẽ giúp ích rất nhiều trong công tác event correlation -3-. Như vậy, nếu tính theo giờ server, chắc hẳn website của bạn tui đã bị deface trong khoảng Mar 21 02:00:00 GMT -7 đến Mar 21 03:00:00 GMT -7. Lệnh thứ hai cho tui biết ai đã truy cập vào máy chủ kể từ Fri Mar 3 11:02:19 2006. Dòng đầu tiên cho thấy một người truy cập vào lúc Tue Mar 21 07:22 và vẫn còn đang ở trong server. Kẻ đó chính là...tui. Chà, ngoài tui ra, chẳng có ma nào ssh vào server trong ngày Mar 21 cả. Như vậy có vẻ kẻ xâm nhập không vào server (và từ đó thay đổi nội dung file index.html) qua đường ssh. Một câu hỏi tự nhiên được đặt ra: ngoài ssh, còn có con đường nào khác đi vào server này?

Trước đây, tui đã có vài lần giúp giải quyết sự cố trên server này thành ra nó cũng tương đối quen thuộc với tui. Ngoài ssh ra, server này còn chạy các dịch vụ: cpanel, ftp (sử dụng pureftpd), smtp/pop3 (sử dụng exim) và http (sử dụng apache). Đó là nói về dịch vụ, về phía user thì ngoài root và yeahlap như đã thấy ở trên, server này còn một user là hippie. Có hai website được host trên server này, mỗi website tương ứng với hippie và yeahlap. Website bị deface chính là website của hippie. Ngó nghiêng qua /etc/passwd thì tui thấy:
yeahlap:x:32004:505::/home/yeahlap:/usr/local/cpanel/bin/jailshell
hippie:x:32007:508::/home/hippie:/usr/local/cpanel/bin/noshell
Chà, user hippie không có shell -4-! Phản xạ tự nhiên, tui chạy:
# ls -l /home/hippie/public_html/index.html
-rw-r--r-- 1 hippie hippie 702 Mar 21 04:18 /home/hippie/public_html/index.html
Chà, file index.html này có permission là 644 với owner là hippie, mà thằng hippie lại chẳng có shell, vậy muốn thay đổi nó thì thằng attacker phải hoặc a) chiếm được quyền root trên server hoặc b) lấy được password user hippie rồi thông qua ftp để upload file lên. Đó là hai hướng tấn công mà tui nghĩ đến đầu tiên. Tui nghiêng về hướng thứ hai hơn, đơn giản vì như tui đã nói, tui không nghĩ kẻ xâm nhập là một tay lành nghề đủ khả năng chiếm được quyền root trên server. Nếu hắn chôm được password root thì hằn cũng chẳng thể ftp vào được server bởi vì mặc định các ftp daemon đều không cho phép account root đăng nhập. Mà như đã thấy ở trên, chẳng có ma nào ssh vào server trong ngày 21/03/2006 trừ tui ra. Dĩ nhiên khi có quyền root thì kẻ xâm nhập có thể xóa sạch tất cả những dấu vết mà hắn để lại trên server, nhưng chẳng ai dày công làm như vậy chỉ để hăm dọa một người không rành về máy tính như bạn của tui.

Bạn tui cho biết ngày 20/03/2006, anh có ra chơi ở tiệm cafe Thụy Du trên đường Lý Chính Thắng, chỗ đó nổi tiếng là có nhiều "hacker", cho nên khả năng bị ai đó chôm mật khẩu là rất lớn. Một tay rỗi hơi nào đó cài vài ba con keylogger lên các máy tính ở Thụy Du và rồi vô tình vớ được mật khẩu của hippie khi bạn tui upload file lên server. Là một Google "hacker", hắn chẳng biết làm gì với một cái account của một server Linux, hắn bèn "mua vui" bằng cách deface cho bỏ công chôm chia. Nghe cũng hợp lý chứ nhỉ?

Tui có sử dụng pure-ftpd từ trước nên biết rõ là thằng này nó lưu thông tin log vào thẳng syslog /var/log/messages. Tui vớ lấy cái đám /var/log/messages* "nóng hổi", rồi chạy các lệnh sau:
# cat /var/log/messages | grep index.html | grep "Mar 21"
Mar 21 04:17:45 server pure-ftpd: (hippie@222.253.127.219) [NOTICE] /home/hippie//public_html/index.html downloaded (206 byte, 3801.33KB/sec)
Mar 21 04:18:13 server pure-ftpd: (hippie@222.253.127.219) [NOTICE] /home/hippie//public_html/media/index.html downloaded (702 byte, 15570.32KB/sec)
Mar 21 04:18:35 server pure-ftpd: (hippie@222.253.127.219) [NOTICE] /home/hippie//public_html/index.html uploaded (702 byte, 2.14KB/sec)
Lệnh trên giúp tui lấy ra tất cả những dòng thông báo của pure-ftpd có liên quan đến file index.html trong ngày 21/03/2006. Kết quả như mọi người đã thấy, đầu tiên vào lúc Mar 21 04:17:45 (nghĩa là khoảng 6h chiều giờ VN) file index.html được download xuống, rồi sau đó nó được upload lên liên tục hai lần vào lúc Mar 21 04:18:13Mar 21 04:18:35.

Những con số được tô màu chính là kích thước của file index.html tại từng thời điểm. Như vậy đã rõ, cả 3 lần upload/download này đều là do bạn tui thực hiện sau khi website bị deface. Lần đầu anh download file index.html đã bị sửa đổi, file này có kích thước là 206 byte. Lần hai và ba anh upload lại file nguyên mẫu ban đầu, có kích thước là 702 byte. Chà, sao chẳng thấy ai upload file index.html có kích thước 206 byte lên hết nhỉ? Để chắc ăn, tui kiểm tra mớ log file lại một vài lần nữa nhưng vẫn không tìm thấy bất cứ thông tin gì liên quan đến file index.html ngoài 3 lần ở trên. Tui bắt đầu hoang man, phải chăng tui đã đánh giá quá thấp đối thủ của mình?

(còn tiếp)

---
Ghi chú
-0-: Thật ra tôi đã cố tình chỉnh sửa, thêm thắt, làm cho câu chuyện hấp dẫn và dài thêm một chút để tiện trình bày những điều tôi muốn gửi đến người đọc.

-1-: Lẽ ra lời khuyên phải là tắt server đó ngay. Những chứng cứ trên server sẽ trở nên vô nghĩa trước pháp luật nếu như server vẫn tiếp tục hoạt động ngay sau khi bị phát hiện tấn công. Tuy nhiên trong trường hợp này, do anh bạn tôi chỉ có một server duy nhất và anh ấy cũng không có ý định kiện tụng ai cả, nên tôi chỉ yêu cầu anh ta không được thay đổi gì trên server.

-2-: LAMP là thuật ngữ dùng để chỉ các server chạy hệ điều hành Linux, website Apache, máy chủ database MySQL và sử dụng PHP để làm web-application.

-3-: event correlation là quá trình chỉ ra sự tương quan giữa ra các sự kiện khác nhau trên các thành phần khác nhau trong cùng một hệ thống hoặc trên các hệ thống khác nhau. Sự tương quan này sẽ giúp cho điều tra viên có được cái nhìn toàn cảnh về những gì đã diễn ra trên toàn hệ thống trước, trong và sau vụ tấn công. Có được thông tin về múi giờ chính xác là điều kiện tiên quyết để có thể tiến hành công tác event correlation.

-4-: shell tương ứng với khả năng đăng nhập và làm việc (thông qua rsh hoặc ssh) trên một server *nix. Có shell trên một server nghĩa là có khả năng đăng nhập và làm việc trên server đó và ngược lại.

4 comments:

Anonymous said...

Thú vị lắm anh thaidn ơi. Hy vọng anh sẽ sớm viết. :D

Anonymous said...

hy vọng trong các bài viết của bạn,bên cạnh những từ chuyên môn,bạn nên giải thích để newbie hay những người ngoài nghành có thể hiểu được rõ ràng hơn
Vài dòng,thân!

Anonymous said...

Bài viết rất thú vị cho người chuyên và không chuyên. Người không chuyên sẽ tìm được cái họ cần tìm. Người chuyên thì nhận được điều mà họ đã bỏ quên hay tính chủ quan trong nhận định.
Rất hay, mình đọc bài này nhận ra được điều còn thiếu sót cho bản thân.
Thân chào.
H.C.D

Cao Hữu Quý said...
This comment has been removed by the author.