محمد نصیری
بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

آموزش Enumeration و تکنیک های دریافت اطلاعات از هدف نفوذ

امروز می خواهیم در خصوص انواع تکنیک های Enumeration و آموزش انجام حمله Enumeration بصورت عملی صحبت کنیم. شما که در حال خواندن این مطلب آموزشی هستید حتما با ماهیت Enumeration چیست و انواع Enumeration که قبلا در وب سایت توسینسو بصورت مقاله قرار گرفته اند آشنایی دارید و در فکر این هستید که چگونه این حملات را انجام بدهید ، این مقاله برای شما طراحی شده است بنابراین با آموزش Enumeration در هک و نفوذ در خدمت شما هستیم.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

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

یکی دیگر از ابزارهای لینوکسی که می تواند در فرآیند Enumeration به ما کمک کند rpcinfo نام دارد. همانطور که از نام این ابزار مشخص است دستور rpcinfo یک RPC Call به یک RPC سرور انجام می دهد و وضعیت سرور را به ما گزارش می دهد. بصورت کلی اگر سرویس RPC بر روی سرور مورد نظر فعال باشد این ابزار به ما می گوید که سرور مورد نظر آیا آماده سرویس دهی است یا اینکه در دسترس نیست. پارامترهایی که در این ابزار استفاده می شوند هم می توانند اسم باشند و هم شماره ، برای مثال اگر شما version یا شماره دقیقی را در این ابزار در پارامترها عنوان کنید دستور rpcinfo دقیقا به دنیال 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]

مثالی از استفاده از دستور 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 می باشد.

***اما ممکنه براتون سوال پیش بیاد که سامبا (samba) دقیقا چیه؟

Samba چیست؟

Samba یک نرم افزار رایگان است که مجددا پروتکل شبکه SMB را پیاده سازی می کند و در ابتدا توسط اندرو تریدگل توسعه داده شد. Samba خدمات فایل و چاپ را برای سرویس گیرندگان مختلف Microsoft Windows ارائه می دهد و می تواند با یک دامنه Microsoft Windows Server ، به عنوان یک کنترل کننده دامنه یا به عنوان یک عضو دامنه ادغام شود.

ابزار enum4linux چیست؟ آموزش SMB Enumeration

*** خب همونطور که تا الان متوجه شدیم این ابزار روی سرویس smb کار خودشو انجام میده حالا میخوایم یه توضیحی در رابطه با خوده پروتکل smb بدیم و با این سرویس بیشتر آشنا بشیم.

پروتکل SMB (Server massage Block) چیست؟

SMB یا (بلوک پیام سرور) یک پروتکل است که به منابع یک شبکه اجازه می دهد فایل ها را به اشتراک بگذارند ، شبکه را مرور کرده و از طریق شبکه چاپ کنند. در ابتدا در ویندوز استفاده می شد ، اما سیستم های یونیکس می توانند از SMB از طریق Samba استفاده کنند. امروز ، ما از ابزاری به نام Enum4linux برای استخراج اطلاعات از یک هدف و همچنین smbclient برای اتصال به اشتراک SMB و انتقال فایل ها استفاده خواهیم کرد. خب تا اینجا ارتباط بین ابزار enum4linux و پروتکل smb را متوجه شدیم.

منظور از شمارش در enum4linux چیست؟

شمارش عبارت است از جمع آوری اطلاعات روی یک هدف به منظور یافتن بردارهای احتمالی حمله و کمک به بهره برداری. این فرایند برای موفقیت یک حمله ضروری است ، زیرا اتلاف وقت با سوء استفاده هایی که یا کار نمی کند یا می تواند سیستم را خراب کند می تواند فاجعه بار باشد. از شمارش می توان برای جمع آوری نام های کاربری ، گذرواژه ها ، اطلاعات شبکه ، نام میزبان ، داده های برنامه ، خدمات یا هر اطلاعات دیگری که ممکن است برای مهاجم ارزشمند باشد استفاده کرد.

به طور معمول ، درایوهای اشتراکی SMB روی سرور وجود دارد که می توانند به آنها متصل شده و برای مشاهده یا انتقال فایل ها استفاده شوند. SMB اغلب می تواند یک نقطه شروع عالی برای مهاجمی باشد که به دنبال کشف اطلاعات حساس است. شما از آنچه که گاهی در این سهام درج می شود شگفت زده خواهید شد. در برخی موارد نادر ، مانند زمانی که دایرکتوری اشتراک SMB و فهرست اصلی سرور وب یکسان هستند ، مهاجم حتی می تواند از پیکربندی نادرست برای دستیابی به اجرای کد سوء استفاده کند.

چگونه باید از ابزار enum4linux استفاده کنیم؟

برای مشاهده اطلاعات راهنما و استفاده از ابزار میتوانید enum4linux را به تنهایی در ترمینال وارد کنید.

ابزار enum4linux چیست؟ آموزش SMB Enumeration


بسته 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 کامل ابزار میتونید از لینک زیر استفاده کنید.

enum4linux-cheat-sheet/

آموزش Enumeration با rpcclient به زبان ساده

زمانیکه شما در یک فرآیند تست نفوذ هستید و فاز Enumeration را انجام می دهید ، یکی از ابزارهای سیستم عامل لینوکس که به شما در این راستا می تواند کمک کند ابزار rpcclient است. این ابزار با استفاده از شناسایی کردن سرورهایی که از پروتکل SMB در شبکه استفاده می کنند و پورت های مربوط به سرویس NetBIOS آنها نیز باز است اقدام به ایجاد کردن 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:~#


آموزش دستور finger و کاربردش در Enumeration و هک و نفوذ

دستور finger در سیستم عامل لینوکس و خانواده یونیکس برای Enumerate کردن کاربران از راه دور نیز قابل استفاده است . این دستور در حالت معمول برای بدست آوردن اطلاعات از کاربران Local مورد استفاده قرار می گیرد. این دستور امکان مشاهده home directory ، login time ، Idle times ، office location و آخرین زمانی که ایمیل ارسال و دریافت شده است را به شما نشان می دهد. برای اینکه بتوانید از این دستور استفاده کنید بایستی این ابزار بر روی سیستم شما نصب شده باشد ، قالب استفاده کردن از این دستور بسیار ساده است و بصورت کلی به شکل زیر قابل استفاده است :

finger [-b] [-f] [-h] [-i] [-l] [-m] [-p] [-q] [-s] [-w] [username]
  1. سویچ b : باعث چاپ شدن home directory کاربر به همراه shell در قالب طولانی یا long format می شود

  2. سویچ f : باعث چاپ شدن header که معمولا در قالب غیرطولانی یا non-long format است می شود

  3. سویچ h : باعث چاپ شدن فایل project. در قالب long format می شود

  4. سویچ i : باعث چاپ قالب خروجی idle می شود که معمولا فقط شامل login name ، terminal ، login time و idle time می شود

  5. سویچ l : باعث چاپ خروجی در حالت long format می شود.

  6. سویچ m : تمامی آرگومان های خروجی را بر اساس username هماهنگ می کند

  7. سویچ p : باعث جاپ شدن فایل plan. در قالب long format می شود

  8. سویچ q : باعث چاپ خروجی سریع یا quick می شود که تقریبا شبیه short format است.

  9. سویچ s : باعث جاپ خروجی بصورت short format می شود

  10. سویچ w : باعث چاپ full name بصورت short format می شود

برای مثال اگر دستور root$] finger –l Server1@tosinso.com را وارد کنید لیستی از کاربرانی که در روی آن سرور وجود دارند برای شما نمایش داده می شود. دقت کنید که این در صورتی است که تنظیمات امنیتی بر روی سرور مقابل انجام نشده باشد . finger ابزار مناسبی برای enumeration در لینوکس است.پیش زمینه های ورود به دنیای هک و امنیت قطعا دوره های آموزش شبکه های کامپیوتری و به صورت ویژه دوره آموزش نتورک پلاس است.

در دوره آموزش هک قانونمند و یا دوره CEH شما به خوبی با نحوه پیاده سازی چنین حملاتی آشنا می شوید و صد البته مفاهیم مربوط به ماهیت و مفاهیم امنیت شبکه و هک و نفوذ را نیز در دوره آموزش سکیوریتی پلاس آموزش خواهید دید. پیشنهاد می کنم اگر هنوز در خصوص دنیای هک و نفوذ دارای ابهام هستید حتما مقاله چگونه هکر شویم در این لینک را مطالعه کنید. امیدوارم مورد توجه شما عزیزان قرار گرفته باشد. با تشکر محمد نصیری


محمد نصیری
محمد نصیری

بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

محمد نصیری هستم ، هکر قانونمند و کارشناس امنیت سایبری ، سابقه همکاری با بیش از 50 سازمان دولتی ، خصوصی ، نظامی و انتظامی در قالب مشاور ، مدرس و مدیر پروژه ، مدرس دوره های تخصص شبکه ، امنیت ، هک و نفوذ ، در حال حاضر در ایران دیگه رسما فعالیتی غیر از مشاوره انجام نمیدم و مقیم کشور ترکیه هستم ، عاشق آموزش و تدریس هستم و به همین دلیل دوره های آموزشی که ضبط می کنم در دنیا بی نظیر هستند.

نظرات