امروز می خواهیم در خصوص انواع تکنیک های Enumeration و آموزش انجام حمله Enumeration بصورت عملی صحبت کنیم. شما که در حال خواندن این مطلب آموزشی هستید حتما با ماهیت Enumeration چیست و انواع Enumeration که قبلا در وب سایت توسینسو بصورت مقاله قرار گرفته اند آشنایی دارید و در فکر این هستید که چگونه این حملات را انجام بدهید ، این مقاله برای شما طراحی شده است بنابراین با آموزش Enumeration در هک و نفوذ در خدمت شما هستیم.
آموزش Enumeration با دستور rpcinfo در لینوکس
یکی دیگر از ابزارهای لینوکسی که می تواند در فرآیند Enumeration به ما کمک کند rpcinfo نام دارد. همانطور که از نام این ابزار مشخص است دستور rpcinfo یک RPC Call به یک RPC سرور انجام می دهد و وضعیت سرور را به ما گزارش می دهد. بصورت کلی اگر سرویس RPC بر روی سرور مورد نظر فعال باشد این ابزار به ما می گوید که سرور مورد نظر آیا آماده سرویس دهی است یا اینکه در دسترس نیست. پارامترهایی که در این ابزار استفاده می شوند هم می توانند اسم باشند و هم شماره ، برای مثال اگر شما version یا شماره دقیقی را در این ابزار در پارامترها عنوان کنید دستور rpcinfo دقیقا به دنیال call یا فراخوانی همان نسخه از آن برنامه می رود.
- بیشتر بخوانید : سرویس RPC چیست؟ کاربرد Remote Procedure Call در ویندوز
در غیر اینصورت بصورت خودکار rpcinfo به دنیا سایر نسخه های موجود از برنامه می گردد و هر نسخه ای که بتواند را فراخوانی می کند. RPC مخفف Remote Procedure Call است و این سرویس امکان ارائه خدمات تحت شبکه نرم افزارها را فراهم می کند ، در فرآیند Enumeration می توان از این دستور برای Enumerate کردن اطلاعات از سرویس RPC استفاده کرد ، Syntax استفاده از این ابزار به شکل زیر می باشد :
Rpcinfo [-a] [-b] [-d] [-l] [-m] [-n + Port Number] [-p] [-s] [-t] [-T] [-u] Target (IP or Name)
عنوان کردن تک تک سویچ ها و کاربردهای آن در هر بحث متفاوت است و بهتر است در ITPRO برای معرفی بهتر این ابزار از مثال های کاربردی آن استفاده کنیم :
1- برای نمایش دادن کلیه سرویس های مبتنی بر RPC بر روی Local Machine
rpcinfo -p
2- برای نمایش دادن کلیه سرویس های مبتنی بر RPC بر روی سیستم هدف
rpcinfo -p Server1.tosinso.com
3- برای نمایش دادن کلیه ماشین های شبکه که نسخه خاصی از یک سرویس را اجرا کرده اند ( نام سرویس ypserv )
rpcinfo -b ypserv 2
4- برای حذف کردن registration یک سرویس در سیستم Local ( نام سرویس sprayd )
rpcinfo -d sprayd 1
5- برای بررسی اینکه آدرس IP شماره 127.0.0.1 و برنامه به ID 100003 و نسخه 3 بر روی پورت TCP شماره 2049 شنود دارند یا خیر
rpcinfo -a 127.0.0.1.8.1 -T tcp 100003 3
اینها تنها مثالهایی از استفاده از این ابزار در شبکه برای Enumeration یا دریافت و مدیریت سرویس ها می باشد . شما می توانید اطلاعات بیشتری را با استفاده از مثالهای کاربردی و عملی و همچنین استفاده از راهنمای این ابزار به دست بیاورید.
آموزش NTP Enumeration و دستورات کاربردی در NTP
در ادامه می خواهیم در خصوص دستوراتی که می توانند این فرآیند را برای ما انجام بدهند صحبت کنیم. مجموعه ای از ابزارهای لینوکسی خط فرمانی به نام NTP Suite وجود دارد که می توانند فرآیند NTP Enumeration را به سادگی برای ما انجام بدهند. NTP Suite برای Query گرفتن از NTP سرورها برای دریافت اطلاعات برای Enumeration استفاده می شود. این مجموعه ابزارها شامل دستورات زیر هستند که بیشتری کاربرد را دارند :
- دستور ntptrace : با استفاده از این دستور به شما زنجیره یا چرخه ای که NTP سرور از آن Update ها را دریافت می کند را بدست خواهید آورد. قالب استفاده از این دستور به شکل زیر است :
ntptrace [-vdn] [-r retries] [-t timeout] [servername/IP_Address]
- بیشتر بخوانید : NTP چیست؟ کاملترین معرفی سرویس زمان ویندوز (Time Service)
مثالی از استفاده از دستور ntptrace :
# ntptrace localhost: stratum 4, offset 0.0019529, synch distance 0.143235 192.168.0.1: stratum 2, offset 0.0114273, synch distance 0.115554 192.168.1.1: stratum 1, offset 0.0017698, synch distance 0.011193
- دستور ntpdc : این دستور برای query گرفتن از سرویس ntpd استفاده می شود و وضعیت فعلی سرویس را شناسایی کرده و تغییرات را درخواست می کند ، قالب استفاده از این دستور به شکل زیر می باشد :
ntpdc [-ilnps] [-c command] [hostname/IP_Address]
مثالی از استفاده از دستور ntpdc :
root@attacker]# ntpdc -c sysinfo 192.168.0.1 ***Warning changing to older implementation ***Warning changing the request packet size from 160 to 48 system peer: 192.168.1.100 system peer mode: client leap indicator: 00 stratum: 5 precision: -15 root distance: 0.00107 s root dispersion: 0.02306 s reference ID: [192.168.1.100] reference time: f66s4f45.f633e130 Wed, Jun 28 2006 11:06:11.631 system flags: monitor ntp stats calibrate jitter: 0.000000 s stability: 4.256 ppm broadcastdelay: 0.003875 s authdelay: 0.000107 s
- دستور ntpq : این دستور برای مانیتور کردن سرویس ntpd سرور مورد استفاده قرار می گیرد و کلیه فرآیند و وضعیت سرویس را شناسایی و گزارش می کند ، قالب استفاده از آن به شکل زیر می باشد :
ntpq [-inp] [-c command] [Host/IP_Address]
مثالی از استفاده از دستور ntpq :
root@attacker]# ntpq 192.168.01 ntpq> lpeers remote refid st t when poll reach delay offset jitter *192.168.1.100 LOCAL(0) 4 u 18 58 344 0.655 -0.039 0.029 ntpq> version ntpq 4.2.0a@1.1196-r Mon May 07 14:14:14 EDT 2006 (1) ntpq> host current host is 192.168.0.1 ntpq> readlist assID=0 status=0674 leap_none, sync_ntp, 7 events, event_peer/strat_chg, system="SunOS", leap=00, stratum=5, rootdelay=0.655, rootdispersion=20.080, peer=40852, refid=192.168.1.100, reftime=c66b4f07.d732d455 Sat, Jul 01 2006 17:28:11.773, poll=6, clock=0xc66b4f3b.595ed455, phase=-0.040, freq=80337.65, error=0.01
آموزش SMB Enumeration با ابزار enum4linux
ابزاری برای شمارش اطلاعات از سیستم های ویندوز و سامبا است. سعی می کند عملکرد مشابهی را برای enum.exe که قبلاً از www.bindview.com در دسترس بود ارائه بدهد. این نرم افزار به زبان Perl نوشته شده است و اساساً یک حلقه در اطراف ابزارهای Samba smbclient ، rpclient ، net و nmblookup می باشد.
- بیشتر بخوانید : SMB چیست؟ بررسی سرویس Server Message Block
***اما ممکنه براتون سوال پیش بیاد که سامبا (samba) دقیقا چیه؟
Samba چیست؟
Samba یک نرم افزار رایگان است که مجددا پروتکل شبکه SMB را پیاده سازی می کند و در ابتدا توسط اندرو تریدگل توسعه داده شد. Samba خدمات فایل و چاپ را برای سرویس گیرندگان مختلف Microsoft Windows ارائه می دهد و می تواند با یک دامنه Microsoft Windows Server ، به عنوان یک کنترل کننده دامنه یا به عنوان یک عضو دامنه ادغام شود.
*** خب همونطور که تا الان متوجه شدیم این ابزار روی سرویس smb کار خودشو انجام میده حالا میخوایم یه توضیحی در رابطه با خوده پروتکل smb بدیم و با این سرویس بیشتر آشنا بشیم.
- بیشتر بخوانید : سامبا (Samba) چیست؟ به زبان ساده
پروتکل SMB (Server massage Block) چیست؟
SMB یا (بلوک پیام سرور) یک پروتکل است که به منابع یک شبکه اجازه می دهد فایل ها را به اشتراک بگذارند ، شبکه را مرور کرده و از طریق شبکه چاپ کنند. در ابتدا در ویندوز استفاده می شد ، اما سیستم های یونیکس می توانند از SMB از طریق Samba استفاده کنند. امروز ، ما از ابزاری به نام Enum4linux برای استخراج اطلاعات از یک هدف و همچنین smbclient برای اتصال به اشتراک SMB و انتقال فایل ها استفاده خواهیم کرد. خب تا اینجا ارتباط بین ابزار enum4linux و پروتکل smb را متوجه شدیم.
منظور از شمارش در enum4linux چیست؟
شمارش عبارت است از جمع آوری اطلاعات روی یک هدف به منظور یافتن بردارهای احتمالی حمله و کمک به بهره برداری. این فرایند برای موفقیت یک حمله ضروری است ، زیرا اتلاف وقت با سوء استفاده هایی که یا کار نمی کند یا می تواند سیستم را خراب کند می تواند فاجعه بار باشد. از شمارش می توان برای جمع آوری نام های کاربری ، گذرواژه ها ، اطلاعات شبکه ، نام میزبان ، داده های برنامه ، خدمات یا هر اطلاعات دیگری که ممکن است برای مهاجم ارزشمند باشد استفاده کرد.
به طور معمول ، درایوهای اشتراکی SMB روی سرور وجود دارد که می توانند به آنها متصل شده و برای مشاهده یا انتقال فایل ها استفاده شوند. SMB اغلب می تواند یک نقطه شروع عالی برای مهاجمی باشد که به دنبال کشف اطلاعات حساس است. شما از آنچه که گاهی در این سهام درج می شود شگفت زده خواهید شد. در برخی موارد نادر ، مانند زمانی که دایرکتوری اشتراک SMB و فهرست اصلی سرور وب یکسان هستند ، مهاجم حتی می تواند از پیکربندی نادرست برای دستیابی به اجرای کد سوء استفاده کند.
چگونه باید از ابزار enum4linux استفاده کنیم؟
برای مشاهده اطلاعات راهنما و استفاده از ابزار میتوانید enum4linux را به تنهایی در ترمینال وارد کنید.
بسته Samba برای استفاده از ابزار باید نصب شود. اگر قبلاً روی سیستم شما وجود ندارد ، می توانید آن را با دستور زیر نصب کنید.
~# apt-get install samba
اساسی ترین استفاده از Enum4linux این هست که یک گزینه و آدرس IP هدف را می گیرد. ما می توانیم از سوئیچ -U برای مشخص کردن هدف استفاده کنیم.
~# enum4linux -U 10.10.0.89
سوئیچ -S اطلاعاتی در مورد نام گروه (Group User) و کاربران حاضر در سیستم SMB در دستگاه را به ما می دهد.
~# enum4linux -S 10.10.0.89
ما می توانیم با استفاده از سوئیچ -L به همراه آدرس IP سرور ، لیستی از اشتراک گذاری های مورد نظر را ، مانند آنچه قبلاً در Enum4linux انجام دادیم ، بدست آوریم.
~# smbclient -L //10.10.0.89/
Enter WORKGROUP\root's password:
Anonymous login successful
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
tmp Disk oh noes!
opt Disk
IPC$ IPC IPC Service (metasploitable server (Samba 3.0.20-Debian))
ADMIN$ IPC IPC Service (metasploitable server (Samba 3.0.20-Debian))
Reconnecting with SMB1 for workgroup listing.
Anonymous login successful
Server Comment
--------- -------
Workgroup Master
--------- -------
WORKGROUP METASPLOITABLE
برای دریافت Cheet Sheet کامل ابزار میتونید از لینک زیر استفاده کنید.
آموزش Enumeration با rpcclient به زبان ساده
زمانیکه شما در یک فرآیند تست نفوذ هستید و فاز Enumeration را انجام می دهید ، یکی از ابزارهای سیستم عامل لینوکس که به شما در این راستا می تواند کمک کند ابزار rpcclient است. این ابزار با استفاده از شناسایی کردن سرورهایی که از پروتکل SMB در شبکه استفاده می کنند و پورت های مربوط به سرویس NetBIOS آنها نیز باز است اقدام به ایجاد کردن Null Session به سرور مقصد کردن و امکان بدست آوردن اطلاعات بسیار خوبی از هدف را به ما می دهد .
- بیشتر بخوانید : Null Session چیست؟ بررسی مفهوم و آناتومی حملات نال سشن
قبلا در توسینسو در خصوص Null Session یا Anonymous Session صحبت کرده ایم ، فراموش نکنید که این ابزار امکان اسکن پورت ندارد و شناسایی سیستم های هدف به وسیله ابزارهای دیگری مانند Nmap انجام می شود. خوب این ابزار دارای پارامترها و سویچ های مختلفی است که برخی از آنها را با ذکر مثال در ادامه با هم یاد می گیریم ، دستور زیر تلاش برای ایجاد کردن Null Session به سرور مقصد را نشان می دهد ، با توجه به اینکه سرور مقصد آسیب پذیر نیست پاسخ زیر را دریافت خواهید کرد :
$ rpcclient -U "" 192.168.1.31 Enter 's password: could not initialise lsa pipe. Error was NT_STATUS_ACCESS_DENIED could not obtain sid for domain WORKGROUP error: NT_STATUS_ACCESS_DENIED
اما اگر سرور مقصد دارای این آسیب پذیری باشد نتیجه به شکل زیر نمایش داده می شود :
$ rpcclient -U "" 192.168.1.18 Enter 's password: rpcclient $>
بعد از اینکه با موفقیت به سرور مقصد متصل شدید ، شما می توانید با استفاده از Help ابزار دستورات موجود برای این ابزار را مشاهده کنید ، در ادامه دستوراتی که بیشترین کاربرد را دارند را به شما معرفی می کنیم ، دستور زیر به شما اطلاعات ساده و اولیه ای در خصوص سرور مقصد ارائه می دهد :
rpcclient $> srvinfo LUIGI Wk Sv PrQ Unx NT SNT nintendo server platform_id : 500 os version : 4.9 server type : 0x809a03
دستور زیر برای بدست آوردن لیست کاربران یا User Enumeration استفاده می شود :
rpcclient $> enumdomusers user:[admin] rid:[0x3ec] user:[Administrator] rid:[0x1f4] user:[Guest] rid:[0x1f5] user:[lisa] rid:[0x3f1] user:[mark] rid:[0x3f2]</pre>
دستور زیر برای بدست آوردن لیست گروه ها یا Group Enumeration استفاده می شود :
rpcclient $> enumalsgroups builtin group:[Administrators] rid:[0x220] group:[Backup Operators] rid:[0x227] group:[Guests] rid:[0x222] group:[Power Users] rid:[0x223] group:[Users] rid:[0x221]
دستور زیر می تواند سطح دسترسی های کاربران را به شما نمایش بدهد که در اصطلاح Privilege گفته می شود :
rpcclient $> enumprivs found 8 privileges SeMachineAccountPrivilege 0:6 (0x0:0x6) SeTakeOwnershipPrivilege 0:9 (0x0:0x9) SeBackupPrivilege 0:17 (0x0:0x11) SeRestorePrivilege 0:18 (0x0:0x12) SeRemoteShutdownPrivilege 0:24 (0x0:0x18) SePrintOperatorPrivilege 0:4097 (0x0:0x1001) SeAddUsersPrivilege 0:4098 (0x0:0x1002) SeDiskOperatorPrivilege 0:4099 (0x0:0x1003)
دستور زیر لیست Share های شبکه ای که بر روی سیستم مقصد وجود دارد را نمایش می دهد :
rpcclient $> netshareenum netname: IPC$ remark: IPC Service path: C:\tmp password: netname: Lisa Share remark: Lisa Docs path: C:\home\lisa\files password:
البته مجموعه ابزارهای قویتر و کاربردی تری هم وجود دارند که بسیاری از فرآیند های مربوط به Null Session را خودکار انجام می دهد که از آن جمله می توانیم به enum4linux اشاره کنیم .
آموزش دستور Showmount در Shared Folder Enumeration
در ادامه مباحث مربوط به Enumeration در هک قانونمند به معرفی ابزاری ساده و کاربردی به نام showmount می پردازیم. Showmount همانطور که از نام ابزار هم مشخص است دستوری است که لیستی از دایرکتوری های به اشتراک گذاری شده در یک سیستم را به ما نمایش می دهد. همچنین کلاینت هایی که از راه دور به سیستم متصل شده و در حال استفاده از منابع آن هستند نیز در خروجی این دستور نمایش داده می شوند. این ابزار برای فعالیت کردن معمولا به سرویسی به نام mountd وابسته است ، mountd یک سرور RPC است که به درخواست ها و سئوالاتی که در خصوص File System و NFS به سیستم ارسال می شوند پاسخ می دهد.
سرویس mountd بر روی سیستم اطلاعات مربوط به host را نگهداری و به ما نمایش می دهد. فایلی به نام rmtab نیز وجود دارد که اطلاعات در آن نگهداری شده و در برابر از بین رفتن و صدمه دیدن نگهداری می شوند. مقدار پیشفرضی که برای host در واقع همان مقدار اولیه ای است که توسط اسم سیستم مقصد دریافت می شود. شاید یک مقدار این ابزار در مراحل اولیه مبهم باشد اما فراموش نکنید که با مثال زیر می توانید مفهوم را به درستی درک کنید ، بصورت ساده ابتدا شما با دستور mountd سرویس مورد نظر را فعال می کنید و سپس با showmount اطلاعات را دریافت می کنید . syntax یا نحوه استفاده از این دو ابزار به شکل زیر می باشد :
/user/lib/nfs/mountd [-v] [-r] /usr/sbin/showmount [-ade] [hostname]
از مهمترین option ها یا پارامترهای این دستورات می توانیم به موارد زیر اشاره کنیم :
- پارامتر a : تمامی mount هایی که بر روی سیستم ریموت وجود دارد را برای شما لیست می کند
- پارامتر d : تمامی mount هایی که بر روی سیستم ریموت وجود دارند و کلاینت ها در حال استفاده از آنها هستند را لیست می کند
- پارامتر e : تمامی File System های Share شده را نشان می دهد.
برای مثال اگر شما دستوری به شکل showmount –e 192.168.1.1. 255.255.255.0 را وارد کنید کلیه Shared Directory هایی که بر روی Host مورد نظر Mount شده اند برای شما لیست خواهد شد. امیدوارم مورد توجه شما قرار گرفته باشد.
آموزش حمله DNS Enumeration | انواع | تکنیک ها | ابزارها
در مورد DNS Enumerating در ویندوز بسیار صحبت کردیم. در این آموزش قصد داریم تا بصورت عملی نحوه کار با ابزار DNSenum را در لینوکس کالی بشما آموزش دهیم. مطالب گفته شده جزو مطالب پایه ای در آموزش کالی لینوکس ( PWK ) یا تست نفوذ با کالی میباشند. پس بی مقدمه به سراغ آموزش میرویم:
آموزش DNS Enumeration قسمت 1 : آموزش ابزار DNSEnum
DNS یا بعبارتی (Domain Name System (Service// Server، یک سرویس تحت شبکه است که نام های شبکه (Domain name) را به آدرس های IP و بلعکس تبدیل میکند. به علت آن که نام های شبکه متشکل از حروف الفبا هستند، راحت تر بخاطر سپرده میشوند؛ اما این در حالی است که اینترانت بر اساس IP کار میکند. هر زمانی که شما از نام های دومینی استفاده میکنید، سرویس DNS باید این نام را به آدرس IP متناظر آن تبدیل کند. برای مثال نام دومینی www.tosinso.com به آدرس 198.105.232.4 تبدیل میشود.
یکی از مهمترین مراحل در یک حمله، جمع آوری اطلاعات است. برای آن که بتوان یک حمله را ترتیب داد، نیاز است تا اطلاعات پایه و اساسی را در مورد هدف جمع آوری کنیم. بنابراین هرچه اطلاعات بیشتری در مورد هدف جمع شود، احتمال موفقیت آمیز بودن حمله بالاتر میرود.Enumeration فرایندی است که بما این اجازه را میدهد تا بتوانیم از یک شبکه اطلاعات لازم را جمع آوری کنیم. در اینجا بطور مختصر قصد داریم تا تکنیک های DNS Enumeration و SNMP Enumeration را برای شما در لینوکس کالی توضیح دهیم.
DNS Enumeration فرآیند مکان یابی تمام سرورهای DNS و داده های موجود در آن ها در مورد یک سازمان است. DNS Enumeration بما این امکان را میدهد تا اطلاعات حساس درمورد یک سازمان مانند یوزرنیم ها، نام سیستم ها، آدرس های IP و نظایر آن را جمع آوری نماییم. برای آن که بتوانیم این کار را انجام دهیم، از ابزار DNSenum استفاده میکنیم.در مورد SNMP Enumeration نیز از ابزاری بنام SnmpEnum استفاده خواهیم نمود. این ابزار یکی از قویترین ابزارها در زمینه SNMP Enumeration است که به کاربران این اجازه را میدهد تا ترافیک SNMP را بر روی یک شبکه آنالیز کنند.برای اجرای DNSenum به مسیر زیر رفته و آن را اجرا نمایید:
Application> Kali Linux> Information Gathering> DNS Analysis> dnsenum
و در نهایت فرمان زیر را وارد کنید:
root@kali:~# dnsenum – – enum test.com
اجرای این فرمان بشما آدرس هاست، آدرس Name Server ها، میل سرورها (MX) و اطلاعات Zone Transfer را نشان خواهد داد.
اگر میخواهید اسکن قدرتمند تری در مورد دومین های زیرمجموعه هم داشته باشید، از عبارت زیر باید استفاده کنید:
root@kali:~# dnsenum – – enum –f –r test.com
گزینه های زیادی وجود دارند که ما بوسیله آن ها میتوانیم از DNSenum استفاده کنیم؛ آن ها عبارتند از:
- [threads [number- بشما این امکان را میدهد تا پردازش های زیادی را آن واحد انجام دهید.
- r- بشما این امکان را میدهد تا جستجوهای بازگشتی را فعال کنید.
- d- بشما این امکان را میدهد تا در حد چند ثانیه بین درخواست های Whois تاخیر بیاندازید.
- o- این امکان را میدهد تا مکان خروجی را مشخص کنیم.
- w- این امکان را میدهد تا جستجویهای Whois را فعال کنیم.
خوب دوستان در این آموزش کوتاه توانستیم با ابزار DNSenum که یکی از ابزار قدرتمند Enumerate کردن سرورها و رکوردهای DNS است، آشنا شویم. با آموزش های بعد در این زمینه با ما همراه باشید.
- نکته: این آموزش صرفا در جهت اهداف علمی و آموزشی مطرح شده است.
آموزش DNS Enumeration قسمت 2 : دسترسی به رکوردهای DNS
در مورد جمع آوری اطلاعات به کرات و با استفاده از ابزارهای مختلف در جلسات پیش صحبت شد. هنگامی که شما اطلاعات لازم و کافی را درباره هدف با استفاده از ابزارهای متن باز (open source) و دیگر تکنیک های جمع آوری پسیو اطلاعات بدست آوردید، در گام بعد میتوانید اطلاعات تکمیلی و بیشتری را از سرویس های خاص و دیگری که در شبکه هدف وجود دارند بدست آورید. در این سری از نکات قصد داریم تا چندین آپشن از جمع آوری اکتیو اطلاعات را خدمت شما بیان کنیم. توجه داشته باشید که سریوس هایی که در این سری آموزشات خدمت شما معرفی میشوند جزو سرویس های مقدماتی و پایه در جمع آوری اکتیو اطلاعات هستند.
آموزش DNS Enumeration قسمت 3 : آموزش کار کردن با DNS در کالی
سرور DNS معمولا اطلاعات DNS و سرور Mail موجود در دامینی که ثبت شده است را براحتی در فاش میکند. البته نمیتوان این موضوع را جز باگ های DNS بشما آورد چرا که علاوه بر این که این افشای اطلاعات باگ نیست، بلکه در شبکه نیز جز موارد لازم بحساب میآید. برای مثال درخواست عمومی برای دسترسی به آدرس سرورهای mail و DNS، یکی از پایه ای ترین موارد لازم در دنیای اینترنت است. برای مثال دامین megacorpone.com را مورد آزمایش قرار میدهیم. میخواهیم از فرمان host به همراه سوئیچ -t استفاده کنیم تا از طریق آن سرورهای Mail و DNS برای دامین megacorpone.com پیدا نماییم.
root@kali:~# host –t ns megacorpone.com megacorpone.com name server ns2.megacorpone.com. megacorpone.com name server ns1.megacorpone.com. megacorpone.com name server ns3.megacorpone.com. root@kali:~# host –t mx megacorpone.com megacorpone.com mail is handled by 60 mail.megacorpone.com. megacorpone.com mail is handled by 50 mail2.megacorpone.com.
بصورت پیش فرض هر دامینی که ساختاربندی میشود، حداقل باید برای آن دامین باید سرورهای DNS و Mail را نیز به عنوان سرورهای عمومی آن شبکه معرفی کرد.
آموزش DNS Enumeration قسمت 4 : انجام جستجوهای اتوماتیک
با انجام مثال قبل توانستیم اطلاعات اولیه را از دامین megacorpone.com بدست آوریم. میتوانیم با استفاده از کوئری های دیگری از DNS، اطلاعات بیشتری از نام هاست ها و آدرس های IP ای که متعلق به دامین megacorpone.com هستند، بدست آوریم. برای مثال میتوانیم فرض کنیم که دامین megacorpone.com یک وب سرور با نام احتمالی www دارد. میتوانیم این فرضیه را با استفاده مجدد از فرمان host تست کنیم:
root@kali:~# host www.megacorpone.com www.,egacorpone.com has address 50.7.67.162
حالا میخواهیم بررسی کنیم که دامین megacorpone.com آیا سروری با نام idontexist دارد؟ به خروجی کوئری های زده شده، توجه کنید.
root@kali:~# host idontexist.megacorpone.com Host idontexist.megacorpone.com not found: 3(NXDOMAIN)
آموزش DNS Enumeration قسمت 5 : جستجوی مستقیم با Brute force
با استفاده از مفهوم بیان شده در مرحله قبل میتوانیم این گام را نیز اجرا کنیم. در واقع میتوانیم با استفاده از فرمان "host" و یک اسکریپت Bash، فرآیند درخواست مستقیم جستجوی (lookup) نام هاست های عمومی شبکه را خودکار کنیم. ایده ای که پشت سر این روش وجود دارد، حدس زدن نام سرورهای (host name) فعال از طریق تلاش در تبدیل این نام های حدس زده شده به IP متناظر آن ها است.
اگر نامی (host name) که حدس زده بودیم در فرآیند lookup، موجودیت آن به اثبات رسید، از طریق آن میتوان فعال بودن و گهگاهی نقش آن سرور را نیز تعیین نمود. میتوانیم لیستی کوتاه و یا بلند از نام های (host name) محتمل را تهیه کرده و با ایجاد یک حلقه بی نهایت (loop) از فرمان "host"، صحت وجود هرکدام از آن ها را امتحان نماییم.
root@kali:~# echo www >> list.txt root@kali:~# echo ftp >> list.txt root@kali:~# echo mail >> list.txt root@kali:~# echo owa >> list.txt root@kali:~# echo proxy >> list.txt root@kali:~# echo router >> list.txt root@kali:~# for ip in $(cat list.txt); do host $ip.megacorpone.com;done www.megacorpone.com hass address 50.7.67.162 Host ftp.megacorpone.com not found: 3(NXDOMAIN) mail.megacorpone.com has address 50.7.67.155 Host owa.megacorpone.com not found: 3(NXDOMAIN) Host proxy.megacorpone.com not found: 3(NXDOMAIN) Router.megacorpone.com has address 50.7.67.190 root@kali:~#
در این مثال ساده، متوجه شدیم که موجودیت نام های هاست www، router و mail از طریق این حمله Brute-Force کشف شده اند. در طرف دیگر، نام های هاست owa، ftp و proxy، پیدا نشدند.
آموزش DNS Enumeration قسمت 6 : جستجوی معکوس با Brute force
جستجوی مستقیم ما با استفاده از روش brute-force، مجموعه ای از IP های پراکنده را بما نشان داد. اگر مسئول پیکربندی DNS در دامین megacorpone.com رکوردهای PTR را نیز برای این دامین پیکربندی میکرد، در جستجوی پیش ممکن بود نام های دامینی بیشتری را با جستجوی رنج IP های پیدا شده در یک لوپ بدست آوریم.
root@kali:~# for ip in $(seq 155 190);do host 50.7.67.$ip;donw | grep –v "not found" ; done 155.67.7.50.in-addr.arpa domain name pointer mail.megacorpone.com. 162.67.7.50.in-addr.arpa domain name pointer www.megacorpone.com. 163.67.7.50.in-addr.arpa domain name pointer mail2.megacorpone.com. 164.67.7.50.in-addr.arpa domain name pointer www2.megacorpone.com. 165.67.7.50.in-addr.arpa domain name pointer beta.megacorpone.com. ….
آموزش DNS Enumeration قسمت 7 : آموزش انجام Zone Transfer
فرآیند Zone transfer بسیار شبیه عمل همانند سازی (replicate) مابین سرورهای DNS مرتبط بهم است. این فرآیند شامل کپی شدن فایل های زون از یک سرور DNS اصلی (Master) به یک سرور DNS فرمانبردار (slave) است. فایل زون شامل لیستی از تمام نام های DNS است که در آن زون ایجاد و ساختاربندی شده اند.
فرآیند انتقال زون (zone transfer) معمولا باید در مواجهه با سرورهای slave غیر مجاز و شناخته نشده با محدودیت روبرو شوند اما متاسفانه بسیاری از مدیران شبکه سرورهای DNS را بطور صحیح پیکربندی نمیکنند. درنتیجه هرکسی که با درخواست انتقال یک کپی از فایل زون، میتواند یک نسخه آن را دریافت کند.
یک فرآیند انتقال زون موفق مستقیما به معنی وجود رخنه در یک شبکه نیست. عبارت دستوری "host" برای انجام فرآیند انتقال زون در زیر بیان شده است:
Host –l <domain name> <dns server address>
در آخرین فرمان "host" که وارد کردیم، متوجه شدیم که دو سرور DNS در اختیار دامین megacorpone.com هستند: ns1 و ns2. میخواهیم بر روی هرکدام از آن ها فرآیند انتقال زون را تست کنیم:
root@kali:~# host –l megacorpone.com ns1.megacorpone.com ; transfer failed Using domain server: Name: ns1.megacorpone.com Address: 50.7.67.186#53 Aliases: Host megacorpone.com not found: 5(REFUSED) ; Transfer failed. root@kali:~# host –l megacorpone.com ns2.megacorpone.com Using domain server: Name: ns2.megacorpone.com Address: 50.7.67.154#53 Aliases: Megacorpone.com name server ns1.megacorpone.com. Megacorpone.com name server ns2.megacorpone.com. Megacorpone.com name server ns3.megacorpone.com. Admin.megacorpone.com has address 50.7.67.187 Beta.megacorpone.com has address 50.7.67.165 Fs1.megacorpone.com has address 50.7.67.166 interanet.megacorpone.com has address 50.7.67.188 mail.megacorpone.com has address 50.7.67.155 mail2.megacorpone.com has address 50.7.67.163 ns1.megacorpone.com has address 50.7.67.186 ns2.megacorpone.com has address 50.7.67.154 ns3.megacorpone.com has address 50.7.67.170 router.megacorpone.com has address 50.7.67.190 router.megacorpone.com has address 10.7.0.1 siem.megacorpone.com has address 50.7.67.180 snmp.megacorpone.com has address 50.7.67.181 syslog.megacorpone.com has address 50.7.67.178 test.megacorpone.com has address 50.7.67.182 vpn.megacorpone.com has address 50.7.67.189 www.megacorpone.com has address 50.7.67.162 www2.megacorpone.com has address 50.7.67.164 root@kali:~#
در این مثال، ns1 در مقابل درخواست انتقال زون، جواب رد داد در حالی ns2 آن را قبول کرد. در نتیجه یک دامپ کامل از فایل زون برای دامین megacorpone.com را شاهد هستیم که در قالب لیستی از IP ها و نام های DNS ای برای دامین megacorpone.com بما ارائه شده است.
در مثال بالا دامین megacorpone.com فقط دو سرور DNS دارد که باید هرکدام چک شوند اما برخی از شرکت های بزرگ ممکن است تعداد بیشتری سرور DNS داشته باشند و یا ممکن است بخواهند تا درخواست های انتقال زون را علیه یک دامین خاص اجرا کنند. در اینجا اسکریپت نویسی Bash به بازی میآید. برای انجام انتقال زون توسط فرمان "host" به دو پارامتر نیاز داریم: نام دامین تحلیل شده و آدرس name server. برای دریافت name server های یک دامین در فرمت صحیح باید دستور زیر را دنبال کنیم:
root@kali:~# host –t ns megacorpone.com | cut –d " " –f 4 ns2.megacorpone.com. ns1.megacorpone.com.
برای آن که بتوانیم این کار را در دفعات بعدی نیز انجام دهیم، اسکریپت ساده ای از Bash را مینویسیم تا فرآیند تلاش برای انتقال زون برای روی هر سرور DNS ای که پیدا میکنیم، خودکار صورت پذیرد.
# /bin/bash # Simple Zone Transfer Bash Script # $1 is the first argument given after the bash script # Check if argument was given, if not, print usage If [ -z "$1" ]; then Echo "[*] Simple Zone transfer script" Echo "[*] Usage : $0 <domain name> " Exit 0 Fi # if argument was given, identify the DNS servers for the domain For server in $(host –t ns $1 | cut –d " " –f4);do # for each of these servers, attempt a zone transfer Host –l $1 $server |grep "has address" Done
اجرای این اسکریپت بر روی دامین megacorpone.com باید بصورت خودکار هر دو name server را شناسایی کرده و تلاش کند تا بر روی هر کدام از آن ها عمل انتقال زون را انجام دهد.
root@kali:~# chmod 755 dns-axfr.sh root@kali:~# ./dns-axfr.sh megacorpone.com admin.megacorpone.com has address 50.7.67.187 beta.megacorpone.com has address 50.7.67.165 Fs1.megacorpone.com has address 50.7.67.166 interanet.megacorpone.com has address 50.7.67.188 mail.megacorpone.com has address 50.7.67.155 mail2.megacorpone.com has address 50.7.67.163 ns1.megacorpone.com has address 50.7.67.186 ns2.megacorpone.com has address 50.7.67.154 ns3.megacorpone.com has address 50.7.67.170 router.megacorpone.com has address 50.7.67.190 router.megacorpone.com has address 10.7.0.1 siem.megacorpone.com has address 50.7.67.180 snmp.megacorpone.com has address 50.7.67.181 syslog.megacorpone.com has address 50.7.67.178 test.megacorpone.com has address 50.7.67.182 vpn.megacorpone.com has address 50.7.67.189 www.megacorpone.com has address 50.7.67.162 www2.megacorpone.com has address 50.7.67.164 root@kali:~#
آموزش DNS Enumeration قسمت 8 : آموزش ابزار DNSRecon
ابزار DNSRecon یک اسکریپت مدرن و پیشرفته در بازیابی رکوردها و اطلاعات DNS میباشد که بزبان Python نوشته شده است. اجرای اسکریپت dnsrecon بر روی دامین تستی megacorpone.com، خروجی زیر را در بر خواهد داشت:
root@kali:~# dnsrecon –d megacorpone.com –t axfr [*] testing NS Servers for Zone transfer [*] Checking fore Zone Transfer for megacorpone.com name servers [*] Resolving SOA Record [*] SOA ns1.megacorpone.com 50.7.67.186 [*] Resolving NS Records [*] NS Servers found: [*] NS ns2.megacorpone.com 5.7.67.154 [*] NS ns1.megacorpone.com 5.7.67.186 [*] NS ns3.megacorpone.com 5.7.67.170 [*] Removing any duplicate NS server IP Addresses… [*] [*] trying NS server 50.7.67.154 [*] 50.7.67.154 Has port 53 TCP open [*] Zone Transfer was successful!! [*] MX@.megacorpone.com fb.mail.gandi.net 217.70.184.163 [*] MX@.megacorpone.com fb.mail.gandi.net 217.70.184.162 [*] MX@.megacorpone.com spool.mail.gandi.net 217.70.184.6 [*] MX@.megacorpone.com spool.mail.gandi.net 2001:4b98:c:521::6 [*] A admin.megacorpone.com 50.7.67.187 [*] A fs1.megacorpone.com 50.7.67.166 [*] A www2.megacorpone.com 50.7.67.174 [*] A test.megacorpone.com 50.7.67.182 [*] A ns1.megacorpone.com 50.7.67.186 [*] A ns2.megacorpone.com 50.7.67.154 [*] A ns3.megacorpone.com 50.7.67.170 [*] A www.megacorpone.com 50.7.67.162 [*] A siem.megacorpone.com 50.7.67.180 [*] A mail2.megacorpone.com 50.7.67.163 [*] A router.megacorpone.com 50.7.67.190 [*] A mail.megacorpone.com 50.7.67.155 [*] A vpn.megacorpone.com 50.7.67.189 [*] A snmp.megacorpone.com 50.7.67.181 [*] A syslog.megacorpone.com 50.7.67.178 [*] A beta.megacorpone.com 50.7.67.165 [*] A interanet.megacorpone.com 50.7.67.188
آموزش DNS Enumeration قسمت 9 : آموزش ابزار DNSEnum
این ابزار یکی دیگر از ابزارهای محبوب در زمینه بازیابی و بدست آوردن اطلاعات از DNS یا همان DNS Enumeration است. اجرای این اسکریپت را بر روی دامین zonetransfer.me، که صرفا اجازه انتقال زون (zone transfer) بما میدهد، تست خواهیم کرد که در نهایت خروجی زیر بما برگشت داده میشود:
root@kali:~# dnsenum zonetransfer.me dnsenum.pl VERSION:1.2.2 ------ zonetransfer.me ------ Host’s addresses: Zonetransfer.me 7200 IN A 217.147.180.162 Name Servers: Ns12.zoneedit.com 3653 IN A 209.62.64.46 Ns16.zoneedit.com 6975 IN A 69.64.68.41 Mail (MX) Servers: ASPMX5.GOOGLEMAIL.COM 293 IN A 173.194.69.26 ASPMX.L.GOOGLE.COM 293 IN A 173.194.74.26 ALT1.ASPMX.L.GOOGLE.COM 293 IN A 173.194.66.26 ALT2.ASPMX.L.GOOGLE.COM 293 IN A 173.194.65.26 ASPMX2.GOOGLEMAIL.COM 293 IN A 173.194.78.26 ASPMX3.GOOGLEMAIL.COM 293 IN A 173.194.65.26 ASPMX4.GOOGLEMAIL.COM 293 IN A 173.194.70.26 Trying Zone Transfer for zonetransfer.me on ns12.zoneedit.com… Zonetransfer.me 7200 IN SOA Zonetransfer.me 7200 IN NS Zonetransfer.me 7200 IN NS Zonetransfer.me 7200 IN MX Zonetransfer.me 7200 IN MX Zonetransfer.me 7200 IN MX Zonetransfer.me 7200 IN MX Zonetransfer.me 7200 IN MX Zonetransfer.me 7200 IN MX … Office.zontransfer.me 7200 IN A 4.23.39.254 Owa.zonetransfer.me 7200 IN A 207.46.197.32 Info.zonetransfer.me 7200 IN TXT Asfdbbox.zonetransfer.me 7200 IN A 127.0.0.1 Conberra_office.zonetransfer.me 7200 IN A 202.14.81.230 Asfdbvolume.zonetransfer.me 7800 IN AFSDB Email.zonetransfer.me 2222 IN NAPTR Dzc.zonetransfer.me 7200 IN TXT Robinwood.zonetransfer.me 302 IN TXT Vpn.zonetransfer.me 4000 IN A 174.36.59.154 _sip._tcp.zonetransfer.me 14000 IN SRV Dc_office.zonetransfer.me 7200 IN A 143.228.181.132 Ns16.zoneedit.com Bind Version: 8.4.x Brute force file not specified, bye. root@kali:~#
نظرات کاربران (0)