Cracker Handbook 1.0 part 358 pptx

6 100 1
Cracker Handbook 1.0 part 358 pptx

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

Thông tin tài liệu

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 : 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: 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 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 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: 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 . nó, sau đó gọi hàm SUB_L 004 01 0 19 và thực thi một file mà tên của nó được lưu trữ ở L 004 235C8. Giờ thì hãy nhìn đến 00 4 01 0 19. Nó sẽ đưa ta tới một lệnh nhảy jmp 00 4 01 0 D0. Ừm, xem chuyện gì sẽ. đến một lệnh nhảy jmp 00 4 01 9 73 để đến lời gọi hàm con L 004 01 0 05 . Địa chỉ kế sẽ là L 004 01 9 C0, nhưng vì nó là một hàm chính của VIR, nên tôi sẽ bàn sau. Giờ là L 004 01 3 30: Hãy xem qua các lời. handle, L 004 236F8 (viral body) , 00 005 8FFh , L 004 236F0(byteswritten) , 0) ; ghi mã viral body vào file tạm WriteFile(Tempfile handle,L 004 236EC (victim body),L 004 236DC(Victimsize),L 004 236F0 (byteswritten)

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

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan