1. Trang chủ
  2. » Công Nghệ Thông Tin

Cracker Handbook 1.0 part 358 pptx

6 101 1
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 6
Dung lượng 207,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Kéo xuống một chút, bạn sẽ thấy 2 hàm kế FindFirstFile/FindNextFile sẽ tìm kiếm các file *.exe và WORM này sẽ dùng các file đã tìm thấy làm đối số cho lời gọi hàm L00401330... Phần mã tr

Trang 1

Kéo xuống một chút, bạn sẽ thấy 2 hàm kế FindFirstFile/FindNextFile sẽ tìm kiếm các file *.exe và WORM này sẽ dùng các file đã tìm thấy làm đối số cho lời gọi hàm L00401330 Ta sẽ nghiên cứu L00401330 sau

Giờ thì ngâm cứu hàm L00401050:

Ừm, ta các bạn hãy tìm phần mã này nhé, trong Olly :

Trang 2

Phần mã trên sẽ lấy tên của file vir thực thi thiện tại (Tham số cuối cùng đã lưu trong ngăn xếp là 0), nó chộp lấy tên của chính nó Sau đó nó sẽ tóm kích cỡ của

nó rồi lưu trong [0042370] và tiếp tục thực thi

Hãy đừng đào sâu thêm các hàm và lời gọi như trong hình, vì nó sẽ mất rất nhiều thời gian

Chúng ta sẽ xem xét tiếp tới hàm tại L004011F0 sẽ rất khó hiểu đối với ai chưa từng viết mã về Virus Tôi sẽ giải thích:

CreateFileA SetFilePointer ReadFile CloseHandle

SUB_L00401019

WinExec

Ừm, những tham số của CreateFileA dường như là dùng để tạo file mới, nhưng nếu chúng ta nhìn xa hơn là nó đang làm cho việc phân tích của ta rối loạn (vì chỉ số điều khiển trả lại chỉ được sử dụng bởi ReadFileA) Vì thế hãy cẩn thận, dường như là file virus thực thi sẽ đọc phần mã của nó, sau đó gọi hàm SUB_L00401019

và thực thi một file mà tên của nó được lưu trữ ở L004235C8 Giờ thì hãy nhìn đến

00401019

Nó sẽ đưa ta tới một lệnh nhảy jmp 004010D0 Ừm, xem chuyện gì sẽ xảy ra

Chuỗi sau: P$.exe liên hệ tới một bộ đệm mà chứa tên file vir (địa chỉ đã được thay đổi) Sau đó, một file gắn với tên của nó được tạo Thuộc tính của file sẽ là

SYSTEM+READONLY và một bộ đệm dữ liệu mà được đọc trong hàm ở

004011F0 sẽ được ghi vào file mới

Chúng ta rút ra nhận xét là hàm này với hàm L004011F0 sẽ đọc file host với filr Vir, và ghi chúng tới một file P$.exe và thực thi nó

Chúng ta nghiên cứu tiếp hàm tại L00401910:

Trang 3

Như chúng ta thấy, công việc này sẽ lặp lại trong partition C đến partition Z

Kế đến là sự kiểm tra xem có ổ đĩa di động hay không, nếu có chúng ta sẽ gặp một hàm là L00401005, rồi đến một lệnh nhảy jmp 00401973 để đến lời gọi hàm con L00401005

Địa chỉ kế sẽ là L004019C0, nhưng vì nó là một hàm chính của VIR, nên tôi sẽ bàn sau

Giờ là L00401330:

Hãy xem qua các lời gọi API:

GetFileAttributesA ; chộp lấy thuộc tính của File và lưu trữ chúng

SetFileAttributesA (0x80 là một tham số (FILE_ATTRIBUTE_NORMAL)) ;

Thuộc tính bình thường

CreateFileA (<VirusFileName>, GENERIC_READ, FILE_SHARE_READ, 0,

OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); Mở file Vir

GlobalAlloc ; cấp phát vùng nhớ

GlobalLock ; khóa vùng nhớ

ReadFile(<Handle To Viral File>, Allocated memory,000058FFh , L004236F4 ,

0) ; đọc tên của VIR

CloseHandle ; xóa chỉ số điều khiển File

Trang 4

CreateFile(<file that serves as argument to this function (victimfile)>,

GENERIC_READ + GENERIC_WRITE, FILE_SHARE_READ +

FILE_SHARE_WRITE, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0) ; Mở victim file

GetFileSize(<victimfile>) ; lấy kích cỡ victim

GlobalAlloc ; cấp phát memory

GlobalLock ; lock it

SetFilePointer (7 bytes before victim's end) ; duh

ReadFile (7 bytes) ; duh

lstrcmpA(readbytes,"BogimpX") ;So sánh bytes đã đọc với chuỗi "BogimpX", đây

là tín hiệu bị lây nhiễm

SetFilePointer(To begin) ; duh

ReadFile(VictimFile Handle, allocated memory, VictimSize, L004236F4

(bytesread) , 0) ;Đọc thân mã VICTIm

CloseHandle

Trang 5

CreateFile("penor.exe", GENERIC_WRITE, FILE_SHARE_WRITE, 0,

CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0) ; Tạo một file tạm mà

sẽ lưu giữ victim được gắn kết

SetFilePointer(begin)

WriteFile(tempfile handle, L004236F8 (viral body) , 000058FFh ,

L004236F0(byteswritten) , 0) ; ghi mã viral body vào file tạm

WriteFile(Tempfile handle,L004236EC (victim

body),L004236DC(Victimsize),L004236F0 (byteswritten) , 0); ghi host body vào file tạm

WriteFile(Tempfile handle,"BogimpX",7,L004236F0 (byteswritten),0) ; Ghi dấu hiệu bị lây nhiễm

CloseHandle

CopyFileA("penor.exe",victimfile) ; Ghi file được kết hợp đến Victim

DeleteFileA("penor.exe");xóa file tạm

SetFileAttributesA(victimfile,host's original attributes)

Thường trình này là một thường trình gắn kết Virus sẽ xem xét thuộc tính của HOST, thiết lập trở thành NORMAL, rồi mở VIR, cấp phát bộ nhớ, đọc thân virus, đóng file, mở VICTIM, lấy kích cỡ FILE, đọc 7 bytes cuối, kiểm tra xem đã bị lây nhiễm chưa, nếu chưa thì chép thân virus vào, đóng file, tạo một file tạm, ghi virus, host và dấu hiệu lây nhiễm vào file đó rồi ghi đè file host ban đầu

L004019C0 : Hàm chính của VIR sẽ như thế này:

Trang 6

Vì thế, tóm gọn là nó sẽ tìm kiếm thông tin về tên và kích cỡ của VIR (chính nó), sau đó sẽ scan tất cả ổ đĩa và thư mục con, lây nhiễm tất cả các file *.exe Trong trường hợp kích cỡ có tăng dần lên thì sẽ được tạo sự gắn kết và thực thi host

UNPACK ARMADILLO 3.70a

Target : VCT crackme #5

Ngày đăng: 03/07/2014, 18:20

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN