انواع حملات پسورد در هک و نفوذ ( Password Cracking Attacks )

در این مقاله میخوایم به بررسی انواع حملات رمزنگاری/پسورد و توضیح اونها بپردازیم تا نسبت به دسته بندی اون حمله شما بدونید از چه ابزاری استفاده کنید

حملات رمزنگاری ، به چند دسته تقسیم میشن :

1 . ما میتونیم مستقیم به الگریتم حمله کنیم که در اکثر مواقع این روش اصلا کاربردی نیست و وقت گیر هست و علم بالایی میخواد

2. حمله به نحوه پیاده سازی این پروتوکول ها خیلی مرسومه که ما هم زیاد به این قسمت کار نداریم

3. قسمتی که ما کار داریم ، حمله به متن های ورودی و خروجی یک الگریتم هست ، یعنی هدفمون کلید و متن Plaintext و متن Ciphertext ایه که توسط یه الگوریتم استفاده میشه.

# من هرجا نوشتم P منظورم Plaintext و هر وقت نوشتم C یعنی Ciphertext

1) در Known Plaintext only Attack (KPA) : مهاجم فقط یه P داره و C متناظرشو ، فقط همین دوتا ، مثلا :


123->202cb962ac59075b964b07152d234b70

123->F9C3746B8AF2FF60B09D99F20BAC3F0C

مهاجم فقط خط اولو داره (مثلا) یا مهاجم فقط مثال دومو داره ، P که عدد 123 هست و C که عبارت رمز شده اون هست ، در این مورد معمولا الگریتم هم پیدا نیس ولی ما میتونیم اونو پیدا کنیم ولی هدف بیشتر بدست اوردن کلیده (در این دو مثال من در اولی ، با یه الگریتمی عدد123 رو هش کردم و در عبارت دوم امدم و عدد 123 رو با یه کلیدی تبدیلش کردم به یه عبارت رمز شده) حالا هکر باید در مثال اول الگریتمشو پیدا کنه که مثلا میره همرو تست میکنه میفهمه عه md5 عه و دومی هم میره تلاش میکنه میبینه عه الگریتم AES-EBC عه با این کلید "abcdefghijklmnop" با یه کلیدی که طولش 16 کاراکتره یعنی میشه 128 بیتی

2) در حالت known Ciphertext Only Attack (COA) : مهاجم فقط یه C داره و دیگه هیچی نداره :)


SHA256 hash : 1f7285b0a2d5e803d550c3ff9e18c867f7cdde6ef187582a7dfdc8217d365553

Gqzq0pMzZDc=

مثلا الان یه چالش فارنزیک یا پنتست هست که شما میخوای به یه سیستم ورود کنی و پسورد اون سیستمو دامپ کردی و حالا میخوای کرک کنی ، مثلا این پسورد (این حالا از خانواده SHA بوده یا مثلا پسورد میتونه NTLM و... باشه) ، الگریتم ممکنه معلوم نباشه و اونم شاید مجبور شید پیدا کنید

یا در مثال بعدیش یه پیامیه و رسیده به ما که هیچ دیدی نداریم ، و میخوایم بازش کنیم (مثل پیام هایی که در جنگ ها ردوبدل میشه) مثلا در اینجا میدونیم که پیامی که ما داریم فرمت base64 هست ولی نمیدونم که الگریتمش des هست و کلیدش"abcdegf" و میخوایم این دوتارو پیدا کنیم

3) در Chosen Plaintext Attack (CPA) : ما میتونیم هر P ای که دوس داریمو بدیم و C نظیر و متقابلشو بگیریم ، در این روش الگریتم معلومه ولی کلید معلوم نیست و ما دنبال کلیدیم (یا مستقیم میخوایم به الگریتم حمله کنیم)


1:c4ca4238a0b923820dcc509a6f75849b

2:c81e728d9d4c2f636f067f89cc14862c

3:eccbc87e4b5ce2fe28308fd9f2a7baf3

12:c20ad4d76fe97759aa27a0c99bff6710

123:202cb962ac59075b964b07152d234b70

...

..

.

1:Vo5IelNXdtA=

2:3/PLtQjbT7g=

3:LK8BU9y0EWw=

12:PXgjzko+UtI=

123:pD8/onth+Fc=

1:y6X5W9eGklc=

2:nabFk0JtZLs=

3:3XVi1Gw4WzA=

12:RHNTRs4XIuo=

123:ViiG13HwpTw=

...

..

.

مثلا در اینجا ما امدیم و الگوریتمو داریم که مثلا 5 تا مثال اول همگی با الگریتم هشینگ md5 هش شدن و ما هی تست میکنیم مقادیر مختلفی رو تا مثلا به Collision برسیم

یا مثلا در 10 تا مثال پایین ما میاییم و با الگریتم DES و با کلید های مختلف عبارت های مختلف رو رمز میکنیم و میرسیم به اینکه خب اون الگریتم چطوری عمل میکنه و .. مثلا 5 تا عبارت اول کلیدشون "a" بوده و 5 تای دوم "A" بوده

4) در Chosen Ciphertext Attack (CCA) : مهاجم یه C داره و اونو میده و A رو میگیره (به هر روشی) و اینطوری به کلید میخواد پی ببره (این روش کم کارامد ترین روشه)


lvg8PFW22PA=

مثلا اینجا ما یه عبارت داریم و میخوایم به کلید این پی ببریم ، مثلا فرض کنید ما دونفر داریم که باهم دارن ارتباط برقرار میکنن ، فرد 1 داره با فرد 2 ارتباط برقرار میکنه ، در این حین یه فردی هم داره به این مکالمه گوش میکنه و امکان تغییر بسته هارو داره ، حالا در اینجا فرد 1 پیامی رو میفرسته به فرد 2 تحت این عنوان " Khoor Pb Iulhqg "و مهاجم که داره این وسط گوش میکنه میاد و پیامو به این تغییر میده " Helxo Op Jkfiens " (یه متن رندوم و شانسی) و وقتی پیام میرسه به فرد 2 و اون بازش میکنه میرسه به این "Khoar Rs Mnilhqv " و حالا اینجا فرد دو میاد و تلفن میزنه به فرد 1 یا روی همون ارتباط بهش میگه این چه وضعشه ؟ منظورت از "Khoar Rs Mnilhqv " چیه ؟ بدون اطلاع به من کلیدو تغییر دادی؟


و مهاجم اینجا میفهمه که "Helxo Op Jkfiens" با کلید ناشناس میشه "Khoar Rs Mnilhqv"


Helxo Op Jkfiens - > Khoar Rs Mnilhqv


و میره مثلا در الگوریتم سزار میبینه عه این کلیدش میشه 3 ، حالا میاد و پیام اصلی ای که بین اون دوتا رودبدل شده که "Khoor Pb Iulhqg" بوده رو با الگریتم سزار با کلید 3 رمز گشایی میکنه و میرسه به این " Hello My Friend "


این ساده ترین شکله ، دیگه خودتون گسترشش بدید


5 ) در این حالت Adaptive Chosen Plaintext/Ciphertext Attack (ACPA)(ACCA) : مهاجم یه P داره و با اضافه کردن جزء جزء یه سری چیزا به یه C میرسه و اینطوری میخواد به کلید یا و الگریتم پی ببره ، یا برعکس C رو داره و جز جز کم میکنه تا بره به P یا الگریتم و کلیدو پیدا کنه و بفهمه


مثال دقیق برای این موضوع ندارم و این نوع حمله برای الگریتم های قدیمی بیشتر کاربرد داشته


نکته : مثلا روش Brute Force معمولا برای KPA و COA کاربرد داره ، جایی که مهاجم میتونه صحت حدسو بررسی کنه


نکته : اگر براتون سوال پیش امده که فرق بین COA و CCA چیه ، باید بهتون بگم که در COA هدف معمولا P هست و در CCA هدف معمولا کلید هست


و....


اگر سوال دیگه ای بود بپرسید :)