221
2081
CNTT - Viễn thông
cntt
/cntt/
785480
Kết thúc có hậu cho "câu chuyện xRobots"
1
Article
null
Kết thúc có hậu cho 'câu chuyện xRobots'
,

(VietNamNet) - “Tôi phân tích virus và nghiên cứu kiến trúc nên tảng Windows vì đam mê cá nhân. Đây là một công việc rất dễ gây ra các sai lầm nghiêm trọng, ảnh hưởng lớn đến cộng đồng, mong các bạn có cùng sở thích hãy suy nghĩ và hành động thật nghiêm túc”. Nguyễn Phố Sơn, sinh viên năm 3 khoa Điện tử-viễn thông ĐHBKHN, hiện là cộng tác viên của Trung tâm ứng cứu sự cố máy tính quốc gia VNCERT, tâm sự khi thuật lại ca "giải phẫu" và chế ngự xRobots, worm đã lây lan qua Yahoo Messenger trong cộng đồng Internet VN mới đây.

Nguyễn Phố Sơn: "...Mong các bạn có cùng sở thích hãy suy nghĩ và hành động thật nghiêm túc”.

Tôi nhận được một tin nhắn và năm cuộc gọi nhỡ vào giờ giải lao, nội dung rất ngắn gọn : “Slight VN viral outbreaking, online ASAP and chkmail” (một con virus VN "hạng xoàng" đang lây lan, online càng sớm càng tốt và check mail). Ngay lập tức tôi trở về nhà và online, một màn hình đầy ắp các cửa sổ Yahoo! Messenger của hàng chục người bạn gửi tới. Trong đầu tôi chợt nghĩ: “Slight mà như thế này sao? Hàng chục người bạn này đang ở rất nhiều khu vực và quốc gia khác nhau!”. Tất cả các tin nhắn hầu như chỉ có cùng một nội dung. “Em nay xinh lam, nhin ma fe http://xrobots.../Gift/?file=Gaixinh.jpg” rồi "Xem thu cai nay di http://xrobots.../Gift/?file=Anhdep.jpg". Nếu click vào các đường link, hộp thoại Save as file .exe hiện ra, … , à đúng là Slight thật! 

Kiểm tra email công việc, tôi nhận được đầy đủ thông tin sơ bộ về virus và các yêu cầu phải xử lý. Vậy là có chuyện rồi! Tôi gửi message (tin nhắn) cho nhiều người để xin thêm các sample (mẫu)  khác của xRobots, rất nhiều mẫu đã được gởi về đến tận ngày hôm sau.

Giải phẫu sơ bộ

Trong giới nghiên cứu virus trên thế giới có một thông điệp rất rõ ràng : “Virus hay worm không có gì là xấu xa, vấn đề tồi tệ xuất phát  từ những kẻ lợi dụng virus/worm cho các mưu đồ và động cơ đen tối của mình”.

Việc đầu tiên, tôi phải kiểm tra xem worm đó có được pack lại bằng packer hay không. Packer là các chương trình nén, mã hóa file exe, dll, ocx .. Khi file được nén thi hành, nó sẽ tự giải mã, giải nén và thi hành như bình thường. Packer được sử dụng với mục đích ban đầu là chống lại các cracker bẻ khóa phần mềm, nhằm thay đổi cấu trúc của file, chống debug và làm cho công việc của cracker khó khăn hơn. Tuy nhiên, virus và worm hiện nay đã lợi dụng loại phần mềm này để qua mặt các chương trình quét virus, cũng như làm cho việc phân tích virus gặp nhiều cản trở hơn. 

Với con worm này, tác giả của nó đã pack lại bằng packer có tên UPX – một packer rất bình thường. Tôi unpack và bắt đầu dissasembly nó.

Tôi dùng IDA Pro để assembly. Mọi người đều dissasembly bằng IDA Pro. Đây là công cụ dissasembly mạnh nhất và hữu dụng nhất với hàng loạt tính năng cũng như hỗ trợ plugin và script riêng cho công việc phân tích. Bật IDA Pro, đưa file đã unpack vào và quay sang chạy VMWare. VMWare là phần mềm giả lập một máy tính thực sự, nó cho phép bạn chạy một chiếc máy tính giả lập trên một chiếc máy tính thật. Chiếc máy giả lập này giống hệt một chiếc máy tính thật sự. Khi phân tích, tất nhiên không thể chạy worm trên máy tính đang dùng, tôi thử nghiệm xRobots trên môi trường VMWare.

IDA Pro và VMWare chạy song song ngốn RAM khủng khiếp. Tôi chỉ có 256MB RAM cùng chiếc CPU P4 1,8GHz. VMWare giật loạn xạ. Không thể làm gì trong lúc máy tính như vậy. Có lẽ sẽ mất 1 tiếng nữa để IDA Pro hoàn thành công việc. Bụng đói cồn cào, tôi đi tìm một chiếc bánh mì!

Tìm lời giải 

Như mọi lần dissasembly, việc đầu tiên tôi sẽ phải lướt qua các string có sẵn trong virus. Nó cho phép tôi tìm được một số manh mối đầu tiên để tiến hành công việc phân tích. Vấn đề thường gặp nhất với dissasembly là sự rời rạc. Phần code này của chương trình sẽ hầu như không có ý nghĩa gì cho đến khi bạn hiểu các phần code khác của chương trình ấy. Bạn sẽ chẳng hiểu chương trình ấy sẽ làm gì, hoạt động thế nào cho đến khi bạn hiểu chính xác chương trình gọi hàm nào, với biến gì và làm gì với chúng. Thường, bạn phải suy luận và phán đoán để có một định hướng. Và các string trong chương trình sẽ gợi ý cho bạn để xây dựng các phán đoán này. 

Không có gì đặc biệt. Tôi thử search các chuỗi như “Yahoo!!!” hoặc “xrobots” nhưng không hề thấy kết quả gì. Uhmm, có lẽ tác giả đã encrypt các xâu này và worm khi hoạt động sẽ tự động giải mã nó khi cần đến. Cần phải xem hoạt động của nó thế nào đã. Chạy sang VMWare, tôi bật Regmon và Filemon. Thanh cuốn của Regmon chạy liên tục, save kết quả tương tác của Xrobots với registry ra dạng text, và tìm kiếm với từ khóa Run. Đúng thật, con worm này có ghi vào registry một string value có tên là “Yahoo!!!”. Vậy vấn đề là cần biết khi nào nó giải mã và sử dụng chuỗi này. 

Quay sang IDA, tôi tiếp tục tìm hiểu thêm về hoạt động của nó. Nó được coding bằng Microsoft Visual C++ 6.0, quá trình dissasembly dẫn tôi tới các string liên tiếp như sau: 

Soạn: AM 750227 gửi đến 996 để nhận ảnh này
 

Trông giống như cú pháp script vậy. Có lẽ nào đây là một loader chạy script được tích hợp phía bên trong nó? Nếu là script loader, chắc phải có một string nào đó chứa tên của nó. Ngừng việc dissassembly, tôi trở lại với việc search string, và có vẻ như tôi đã tìm thấy tên của loại script loader này – AutoIt v3: 

Soạn: AM 750229 gửi đến 996 để nhận ảnh này
 

Như vậy, phán đoán dùng script để viết worm này là chính xác. 

Với Google, tôi đã có được vài thông tin quan trọng về AutoIt. Và trong số những thông tin ấy, tôi tìm thấy một thông tin quan trọng nhất: có thể extract script của AutoIt từ file exe đã biên dịch, kể cả những comment có trong script của chính tác giả của script. Điều này có 2 ý nghĩa: thứ nhất, tôi có thể sẽ tiết kiệm thời gian được bằng cách dùng phần mềm đó lấy mã của worm; thứ hai, mã script của worm được lưu giữ trong file EXE, có thể được mã hóa (đó chính là lý do tại sao tôi lại không thể tìm thấy xâu ký tự “Yahoo!!!” hoặc “xrobots”). Như vậy, cơ chế hoạt động của AutoIt có thể phán đoán như sau: 

- File exe được thi hành.

- Phần loader sẽ extract, giải mã phần script được mã hóa.

- Thông dịch và chạy dựa trên script đã được giải mã.

Đầu tiên tôi thử dùng phần mềm Exe2au để lấy source script. Tuy nhiên, file EXE đã bị pack bằng UPX nên Exe2au không thể lấy ra được đoạn script gốc của worm. Đành phải debug con worm này và tìm ra ở đâu AutoIt giải mã đoạn script ấy.

Đến lượt Olly hoạt động. Đã biết là worm này sẽ tạo value “Yahoo!!!” trong registry để worm có thể chạy mỗi khi Windows khởi động, tôi set một breakpoint vào API RegSetValueExA. Tại sao tôi lại làm như vậy? Tôi phán đoán rằng, khi worm thực hiện công việc viết vào registry, phần script của nó đã được AutoIt giải mã và thông dịch lại. Nghĩa là, phần script của nó chắc chắn sẽ có trong bộ nhớ. Vấn đề là phải tìm được AutoIt sẽ giải mã ở đâu mà thôi.

Soạn: AM 750231 gửi đến 996 để nhận ảnh này
 

Không lâu lắm, tôi đến được đây. Search trong các vùng heap, nhanh chóng tôi nhận ra vùng nhớ chứa một loạt các chuỗi giống như script: 

Soạn: AM 750233 gửi đến 996 để nhận ảnh này
 

Tôi đã tìm thấy các đoạn script gốc của worm!!! Vẫn chưa hoàn thiện, tôi cần tìm thêm để đạt tới chính xác đoạn mã mà AutoIt extract các script này. Không mất nhiều thời gian, tôi đã hoàn toàn extract được toàn bộ đoạn code có trong nó:

Soạn: AM 750237 gửi đến 996 để nhận ảnh này
 

Việc tiếp theo là kết hợp cả phân tích source script, cả Filemon va Regmon để hoàn thành báo cáo các hành vi của con worm này. Sau đó, tôi viết một chương trình nhỏ để remove nó ra khỏi hệ điều hành. Tôi đã gửi bản báo cáo đi cùng với Xrobots Remover và yêu cầu thử nghiệm khả năng hoạt động của nó. Tôi tranh thủ ngủ một tý!

Tung tích tác giả

Tiếng chuông điện thoại kéo dồn dập bên tai, tôi bừng tỉnh. Mệt quá! Tôi nhận được thêm 2 sample khác. Nghĩa là có 3 biến thể cho xRobots worm. Lần này, bật Olly lên, tìm tới source script chứa trong 2 biến thể mới này, tôi nhận thấy có vẻ như tác giả của con worm đã để lại danh tính của mình thông phần comment trong file script gốc. Ở biến thể tôi phân tích vào lúc 9:15 PM thì đó là H. L.”: 

Biến thể 1:

 

Trong 2 biến thể nhận được thì chỉ có một biến thể chứa một cái tên mà có thể là tên tác giả con worm đó.

Biến thể 2:

Soạn: AM 750249 gửi đến 996 để nhận ảnh này
 

Biến thể 3:
 

 

H. N." H. L.. Bằng một phép search Google, tôi dễ dàng tìm ra H. N. trên một forum, kèm theo cả ngày sinh, trường học. Theo tôi, anh ta không hề có ý định che giấu thân phận của mình, hoặc không đủ khả năng làm việc này!

Phần việc điều tra cụ thể còn lại và biện pháp răn đe là của cơ quan điều tra, tôi chỉ thực hiện nhiệm vụ phân tích của mình và bàn giao kết quả cho cơ quan điều phối quốc gia VNCERT. Công cụ remove xRobots khỏi máy tính bị nhiễm cũng đã được hoàn thành và chạy ổn định. Cuộc giải phẫu đã kết thúc tốt đẹp.

  • Nguyễn Phố Sơn - CTV Trung tâm VNCERT

Cập nhật: Ngay sau khi bài viết này được xuất bản, một số ý kiến phản hồi về VietNamNet đã tranh luận về thời điểm bạn Nguyễn Phố Sơn thực hiện việc giải mã worm xRobots, cho rằng quá trình phân tích và giải mã toàn bộ này phải muộn hơn đêm 10/4, sau khi đã có một số đánh giá khác về con sâu máy tính lây qua YM này. Để đảm bảo tính chính xác của bài viết, VietNamNet quyết định tạm lược bỏ yếu tố thời gian, và xem đây là bài viết thuật lại quá trình giải mã xRobots mà Sơn đã thực hiện. Các thông tin cụ thể hơn sẽ được tiếp tục cập nhật sau.

LTS: Quá trình truy tìm xuất xứ sâu xRobots của Sơn đã chỉ ra tên đầy đủ của tác giả, tuy nhiên chúng tôi đã sửa lại thành tên viết tắt để đảm bảo không tiết lộ danh tính theo đề nghị của người này.

Qua trao đổi trực tiếp với người đã tạo ra và phát tán xRobots, là một sinh viên còn rất trẻ cũng ở độ tuổi của Sơn, VietNamNet nhận thấy sự chân thực của H.N. Đúng là N. đã không hề có ý định che giấu thân phận của mình khi tạo ra con worm chỉ với mục đích nghiên cứu chứ không phải để phá hoại.

H.N. đã làm việc với cơ quan điều tra ngay sau hôm worm xRobots phát tán, khai báo toàn bộ sự việc và giao nộp ổ cứng máy tính của mình để phục vụ công tác điều tra. H.N. cũng đã chủ động tìm cách diệt từ xa các sâu xRobots trên các máy tính bị nhiễm, nhưng không kịp vì website bị khoá quyền quản trị. H.N. cũng đã chủ động gửi email xin lỗi những người vô tình bị nhiễm xRobots trên VietNamNet và các tờ báo khác.

Xét ở khía cạnh tích cực, xRobots phần nào cũng đã giúp người dùng YM tại Việt Nam có ý thức thận trọng hơn khi bấm vào các đường link do bạn bè gửi tới qua chat. Cũng tương tự như trước đây, người dùng VN có thể dễ dàng bị lây nhiễm virus qua email của người quen gửi tới, nhưng bây giờ họ đã thận trọng hơn.

xRobots cũng chỉ là một dạng worm ở mức slight (đơn giản, thông thường), nhưng cách thức lây nhiễm của nó vào hàng chục ngàn máy tính qua Y!M là khá sáng tạo. H.N. cho biết quá trình lây nhiễm xRobots không dựa vào lỗi bảo mật nào, mà do sự bất cẩn, ý thức bảo mật kém và thói quen thông thường của người sử dụng Y!M. Trong lĩnh vực bảo mật, đây là cách lây nhiễm dựa vào "common sense" (quan niệm thông thường), còn hiệu quả hơn nhiều so với việc lây lan dựa vào lỗi bảo mật.

H.N và Sơn đều là những sinh viên trẻ tuổi, có niềm đam mê nghiên cứu máy tính với mục đích tích cực. Sơn đã giải mã thành công và tạo ra công cụ gỡ bỏ xRobots, một công việc mà đôi khi phải huy động nhiều chuyên gia nghiên cứu về virus cùng thực hiện. Họ là những tài năng trẻ cần được tạo điều kiện, định hướng đúng để có thể phát huy tối đa khả năng vào những mục đích tốt.

Hy vọng sẽ có một kết thúc có hậu cho vụ việc xRobots, vì nó chưa gây hậu quả nghiêm trọng. Hy vọng danh tính của H.N, với sự khoan hồng của cơ quan điều tra, sẽ được giữ kín, và không bị coi như một thứ "chiến lợi phẩm" dùng để phô trương thành tích trên mặt báo. H.N cho biết: "Mong muốn lớn nhất của em lúc này là tiếp tục việc học tập và nghiên cứu của mình".

B.M.V.

 

                 Ý kiến của bạn về "câu chuyện xRobots"?

,
Ý kiến của bạn
Ý kiến bạn đọc
,
,
,
,