Search
 
 

Display results as :
 


Rechercher Advanced Search

Latest topics
» Tuyệt Kỹ Đong Giai Chân Kinh (tuyệt Kỹ cua trai)
Thu Aug 23, 2012 5:38 am by Admin

» Tuyệt kỹ cua giai
Thu Aug 23, 2012 5:36 am by Admin

» NETCAT.........
Mon Aug 13, 2012 6:35 am by Admin

» Bảo mật CSDL bằng phương pháp mã hóa.
Tue Apr 17, 2012 10:04 pm by Admin

» Hàm mã hóa MD5 bằng JavaScript
Tue Apr 17, 2012 10:03 pm by Admin

» Giá của món quà
Fri Apr 13, 2012 6:01 am by Admin

» Sẽ chỉ yêu ai?
Fri Apr 13, 2012 6:01 am by Admin

» Cách đọc bảng chữ cái!
Thu Apr 12, 2012 10:37 pm by Admin

» Gắn trojan, keylog, virus vào website, forum
Tue Apr 10, 2012 1:14 am by Admin

Shopmotion


Affiliates
free forum


Hướng dẫn lập trình Virus, Dành cho newbie

View previous topic View next topic Go down

Hướng dẫn lập trình Virus, Dành cho newbie

Post  Admin on Sat Sep 05, 2009 9:38 pm

Bạn có muốn trở thành VXer? Mục đích bài này tôi muốn giới thiệu cho newbie
về cách viết VR. Yêu cầu trước hết là biết lập trình ASM. Đoạn ấy tôi
không hướng dẫn được các bác tự mua sách học lấy. Tôi không đưa dạng
từng lệnh một đâu. Làm như vậy mất hết tính sáng tạo của mọi người đi.
Chúng ta sẽ bắt đầu từ các định nghĩa cơ bản. Xin lỗi chua thêm 1 câu: suy
nghĩ kỹ khi thực hành, tôi không chịu trách nhiệm về những gì các bác làm
Bạn có muốn trở thành VXer? Mục đích bài này tôi muốn giới thiệu cho newbie
về cách viết VR. Yêu cầu trước hết là biết lập trình ASM. Đoạn ấy tôi
không hướng dẫn được các bác tự mua sách học lấy. Tôi không đưa dạng
từng lệnh một đâu. Làm như vậy mất hết tính sáng tạo của mọi người đi.
Chúng ta sẽ bắt đầu từ các định nghĩa cơ bản. Xin lỗi chua thêm 1 câu: suy
nghĩ kỹ khi thực hành, tôi không chịu trách nhiệm về những gì các bác làm

BÀI 1:
VR là gì?
E hèm... cũng khó đấy vì trong thực tế VR HẾT SỨC ĐA DẠNG. Tuy nhiên ta có
thể định nghiã nôm na VR là một đoạn code có khả năng tự sao chép, nhân bản
(không đúng với trojan lắm nhỉ ). VR có thể nằm trong các tệp khả thi
(executable files) như COM hoặc EXE, boot sector, MBR...

Chọn ngôn ngữ lập trình
Thông thường VR được xây dựng bằng Assembler nhưng không nhất thiết như vậy.
VR trên thực tế có thể xây dựng bằng Pascal, C, VB... thậm chí có VR còn được
viết bằng tệp BAT. Tuy vậy tôi khuyên nên chọn ASM với các lý do sau:
Kích thước nhỏ: ngôn ngữ ASM sẽ cho ta khả năng lập trình với kích thước
nhỏ nhất có thể. Đây là một đặc tính quan trong của VR. Bằng ASM ta sẽ bớt
đi rất nhiều code không cần thiết và trùng lặp do các trình biên dịch ngôn
ngữ bậc cao sinh ra. Trong quá trình tối ưu mã code ta có thể tối ưu đến từng
byte mã lệnh. Lựa chọn các lệnh có cùng kết quả với kích thước nhỏ
nhất....
Khả năng kiểm soát: Ta có thể kiểm soát từng lệnh, move code từ vị trí này
sang vị trí khác, vừa chạy vừa patch code ( patch on-the-fly ). Mã hoá code từng
phần ....
Tính linh hoạt: đây là ưu điểm mạnh nhất của ASM khi lập trình. Là một ngôn
ngữ phi cấu trúc, khả năng sáng tạo trên ASM là không bị giới hạn.
Cuối cùng nhiều khi VR không hoàn toàn là một chương trình (boot VR chẳng hạn)
nên chẳng có lý do gì để chọn một ngôn ngữ bâc cao cả trừ phi bạn quá
lười.

Một Vxer cần có gì
Như vậy, hãy trang bị cho mình chút kiến thức về ASM rồi ta bắt tay với vài
công cụ tối thiểu sau:
Chương trình dịch ASM. Bạn có thể chọn TASM, MASM hoặc một chương trình dịch
bất kỳ tuỳ thích. Nói chung với tasm 3.1 là đủ với một dos VR
Chương trình link. Có thể là Tlink hoặc link.exe
Một tool debuger. Có nhiều lắm, debug, symdeb... (dos) softice, win32dasm... (win)
Một chương trình soạn text (quickedit, notepad, utraedit....)
Kiếm vài mẫu VR cơ bản, đừng bắt đầu từ VR phức tạp quá nếu không bạn
sẽ mệt mỏi vì debug thuật toán mã hoá và vượt qua một đống mã anti-debug.
Kiếm vài con cô cổ như LittleGirl, onehalf...
Tool dump bộ nhớ. Nếu không có thì sài tạm chức năng của debuger vậy
Bảng tra cứu ngắt trong vài quyển lập trình hệ thống hoặc dùng tech-help
Chương trình diệt VR (các AV xịn chứ không phải BKAV đâu) để kiểm tra xem VR
của bạn đã thực sự tàng hình trước các kiểm tra heuristic chưa
Email của tôi nếu cần giúp đỡ
Còn gì không nhỉ? Thôi tạm thế đã

Có một điều Vxer nên ghi nhớ KHÔNG MÁY MÓC. Bạn đã biết làm VR nhưng đừng
máy móc theo dập khuôn. Sáng tạo càng kỳ quặc VR của bạn càng nguy hiểm. Đảo
code đi thoải mái miễn đạt kết quả. Nghĩ ra càng nhiều tips & trịck càng tốt.
Tôi hy vọng sẽ lần lượt giới thiệu đủ các VR file trên dos, boot VR, VR file
trên win, VR file trên Linux, trojan và cuối cùng là VR trên nhiều hệ điều hành
DOS-WIN-UNIX.

Ta bắt đầu với một VR file đơn giản. Một VR file thường làm gì:
1. Mở file cần lây nhiễm
2. Kiểm tra xem đã từng nhiễm chưa
3. Nếu rồi thì bỏ qua
4. Lưu ngày giờ của file
5. Lưu đoạn code đầu chương trình (COM) hoặc header (EXE)
6. Nhét lệnh nhảy tới VR của ta đè lên code đã lưu (COM) hoặc sửa header (EXE)
để VR có thể bắt đầu trước chương trình gốc
7. Nối thêm VR của ta vào file
8. Cập nhật ngày tháng cũ
OK, ta đã có một VR đơn giản. Tôi sẽ phân tích từng mục ở các phần sau.

Thực ra có một loại VR tồi tệ nhất là overwriting VR. VR này thường ghi đè lên
tệp gốc dẫn đến què quặt dữ liệu. Bạn định tranh luận với tôi là còn
có rất nhiều hình thức lây lan khác ư? Tôi biết nhưng đây chỉ là bài cho
newbie đừng quên điều đó.

Tiếp tục nhá, các thao tác khác một VR có thể làm là gì:
Thường trú: Nhiều người nghĩ rằng VR là phải thường trú nhưng không hẳn
vậy. Chính vì thế tôi không liệt thao tác này vào trong nhóm các thao tác thường
làm.

Lây nhiễm: Một VR có thể lây nhiễm nhiều cách (ở trên là lây nhiễm tệp khả
thi) qua files, email... hoặc boot sector (đĩa mềm), macro... Nạn nhân sẽ chạy file
lây nhiễm mà không biết. Alê hấp, VR nắm quyền điều khiển

Nắm quyền điều khiển: Một khi VR đã chạy ta có thể làm mọi điều ta muốn.
Phát huy trí tưởng tượng thoải mái. Bạn có thể lấy mọi thông tin của nạn
nhân (trojan hay làm) từ pwd email đến thư tình... thậm chí mở một backdoor để
điều khiển máy tính từ xa.

Phá hoại: Một khi đã nắm quyền điều khiển, bạn có thể phá hoại những gì
bạn thích phá. Theo nhận xét của tôi, phá hoại là hình thức chỉ các beginner
mới thích làm. Nó hơi thất đức, và tất nhiên có VR hoàn toàn không phá
hoại

Một vài kỹ thuật nâng cao tôi sẽ phân tích thêm trong bài viết là:
ARMOURING: chống debug và disassembler. Đây là một trong các kỹ thuật tự bảo vệ
cho VR (xem thêm bài kỹ thuật lập trình VR). Tôi sẽ cung cấp chi tiết cho các
bạn một số cách bẫy ngắt lạ (int 1, int 0, int 6...), đánh lừa stack, đặt
điểm dừng (break points), fetch code on-the-fly

STEALTH: có một số thuật toán rất hay ( FCB, Handles, SFT, tự tháo gỡ...). Các kỹ
thuật này nhằm làm nạn nhân thấy tệp tin có vẻ như chưa bị nhiễm. Nó có
thể trả về kích thước chuẩn khi nạn nhân rờ đến hoặc thậm chí tự tháo
gỡ VR ra khỏi tệp khi nạn nhân mở file. Tôi sẽ trình bày kỹ về FCBStealth,
SFTStealth, Handle stealth. Tự tháo gỡ thì chắc các bạn sẽ tự làm được

ENCRYPTION: tôi sẽ trình bày vài cách mã hoá đơn giản và thông dụng. VR thường
mã hoá code của nó và chỉ giải mã ra khi chạy.

POLYMORPHISM: Đa hình là kỹ thuật tự thay đổi code mã hoá nhằm tạo ra càng
nhiều phiên bản càng tốt. Tự thay đổi liên tục là một chức năng sinh
tồn.

ANTI-HEURISTIC: Thuật toán chống tìm kiếm hueristic (xem thêm Kỹ thuật lập trình
VR)

TUNNELING: kỹ thuật bẫy ngắt

ANTI-TUNNELING: Cách giữ ngắt cho riêng mình, tránh AV hoặc VR khác

ANTI-BAIT: Điều cần tránh khi lây nhiễm (xem thêm kỹ thuật lập trình VR)

OPTIMIZATION: Một số kinh nghiệm tối ưu code
Tôi có ý định trình bày các kỹ năng lập trình VR tuần tự từ các loại VR
COM/EXE không thường trú trên DOS, VR có thướng trú, boot VR rồi mới sang win/unix
nhằm tạo cho các bạn nắm được các kiến thức cơ bản trước. Tuy nhiên tôi
thấy một số bạn quan tâm tới các kỹ thuật mới nhiều hơn vì vậy tôi sẽ
cắt ngắn chương trình đào tạo.....
Tôi có ý định trình bày các kỹ năng lập trình VR tuần tự từ các loại VR
COM/EXE không thường trú trên DOS, VR có thướng trú, boot VR rồi mới sang win/unix
nhằm tạo cho các bạn nắm được các kiến thức cơ bản trước. Tuy nhiên tôi
thấy một số bạn quan tâm tới các kỹ thuật mới nhiều hơn vì vậy tôi sẽ
cắt ngắn chương trình đào tạo. Chúng ta sẽ phân tích nhanh một VR file COM trên
DOS để lấy khái niệm rồi bài sau sẽ đi vào VR trên win và unix luôn. Sau các
bài này khi các bạn đã tự thực hành và trở thành VXer, các bạn nào muốn nâng
cao trình độ có thể thảo luận về các kỹ thuật nâng cao trong bài Kỹ thuật
lập trình VR của tôi.

Như ta đã phân tích ở bài trước, VR COM sẽ làm thao tác nối (append) chính nó
vào chương trình của nạn nhân. Yêu cầu của VR là nắm quyền kiểm soát trước
khi chương trình gốc chạy. Chính vì vậy VR sẽ thay đổi code ở đầu chương
trình gốc để tạo một lệnh nhảy xuống đoạn mã VR mới nối thêm. Sau khi VR
chạy xong, đoạn mã gốc sẽ được phục hồi VR sẽ trả lại quyền điều
khiển để chương trình gốc có thể chạy bình thường. Chính vì vậy nạn nhân
vẫn có thể ung dung hút thuốc làm việc bình thường mà không biết máy tính đã
nhiễm VR.
Hình vẽ sau mô tả hoạt động của một VR. Tôi rất muỗn đưa ra nhiều hình
vẽ minh hoạ nhưng không biết làm thế nào, các bạn xem tạm vậy.

. . . . . . . . . . . . . . . . . . . . . |Jump VR|
------------. . ---------. . . . . . ---------
| File. . . | + |Virus. | ===>|File. . |
-----------. . ----------. . . . . ---------
. . . . . . . . . . . . . . . . . . . . . |Virus. |

Tất nhiên các bạn có thể dễ dàng nhận ra có cách khác là đẩy chương trình
gốc ra sau VR theo dạng

------------. . ---------. . . . . . ---------
| File. . . | + |Virus. | ===>|Virus. |
-----------. . ----------. . . . . ---------
. . . . . . . . . . . . . . . . . . . . . |File. . |

Tuy nhiên cách này thường không được sử dụng vì chạy chậm hơn nhiều. Tổng
kết khái niệm ở đây chỉ còn là: VR và tệp tin sau khi lây nhiễm sẽ được
hợp làm một, VR nắm quyền điều khiển chương trình và được chạy trước,
chương trình gốc sẽ được trả lại nguyên vẹn và chạy sau khi VR kết thúc.
Dựa trên nguyên tắc này các cách đã trình bày là phương pháp cơ bản còn thực
ra các bạn có thể sáng tạo tuỳ theo ý mình để đạt được mục đích.
Sơ đồ sau là diễn giải một tệp .COM trước và sau khi lây nhiễm:

Bat dau ct |-------------------|. . . . . |----------------------|
. . . . . . . . | Ma dau ct cu. |--|. . . | Ma jump cho VR |--|
. . . . . . . . |-------------------|. |. . . |----------------------|. |
. . . . . . . . |. . . . . . . . . . . . |. |. . . |. . . . . . . . . . . . . |. |
. . . . . . . . |. . . . . . . . . . . . |. |. . . |. . . . . . . . . . . . . |. |
. . . . . . . . |. . . . . . . . . . . . |. |. . . |. . . . . . . . . . . . . |. |
. . . . . . . . |. . . . . . . . . . . . |. |. . . |. . . . . . . . . . . . . |. |
. . . . . . . . |. . . . . . . . . . . . |. |. . . |. . . . . . . . . . . . . |. |
. . . . . . . . |. . . . . . . . . . . . |. |. . . |. . . . . . . . . . . . . |. |
. . . . . . . . |. . . . . . . . . . . . |. |. . . |. . . . . . . . . . . . . |. |
. . . . . . . . |. . . . . . . . . . . . |. |. . . |. . . . . . . . . . . . . |. |
. . . . . . . . |-------------------|. |. . . |----------------------|. |
. . . . . . . . . . . . . . . . . . . . . . |---->| Ma dau ct cu. . . |. |
. . . . . . . . . . . . . . . . . . . . . . . . . . |----------------------|. |
. . . . . . . . . . . . . . . . . . . . . . . . . . |. . . . . . . . . . . . . |<-|
. . . . . . . . . . . . . . . . . . . . . . . . . . |. Ma VR. . . . . . . |
. . . . . . . . . . . . . . . . . . . . . . . . . . |. . . . . . . . . . . . . |
. . . . . . . . . . . . . . . . . . . . . . . . . . |----------------------|

Admin
Admin

Tổng số bài gửi : 782
Join date : 2009-08-15

View user profile http://hackis.forumotion.com

Back to top Go down

View previous topic View next topic Back to top


 
Permissions in this forum:
You cannot reply to topics in this forum