Password Profiling
یکی از راه هایی که میتوان فایل دیکشنریمان را به دلخواه ایجاد کنیم و آن را در برابر یک هدف خاص قدرتمند تر نماییم، استفاده از روش password profiling است. این روش شامل استفاده از لغات و عباراتی است که در رابطه با شرکتی که هدف ما در آن قرار دارد، بیشتر بچشم میخورد. این لیست از عبارات شانس شما را برای پیدا کردن پسورد صحیح در کمترین زمان بیشتر میکند. برای مثال itpro.ir را در نظر بگیرید. فرض میکنیم این شرکت در زمینه نانو تکنولوژی فعالیت میکند. یکی از مدیران شبکه این شرکت از کلمه عبور " nanobots93" برای اجرای یکی از سرویس ها استفاده کرده است. عبارت "nanobots" به نظر میرسد نام یکی از محصولات تولیدی این شرکت باشد که نام آن در وب سایت اصلی شرکت، لیست شده است.
با استفاده از ابزاری مانند cewl، میتوانیم وب سرورهای itpro.ir را برای بدست آوردن و تهیه لیستی از پسوردهای احتمالی از کلمات و عبارات موجود در صفحات اصلی آن ها، به اصطلاح شخم زد!
root@kali:~# cewl www.itpro.ir –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" را از وب سایت itpro.ir بازیابی کند و پسورد مورد نظر هم اکنون در فایل دیکشنری دلخواهمان که مختص به itpro.ir است، اضافه شده است.
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 موفق کمک خواهد کرد.