শনিবার, ১ নভেম্বর, ২০১৪

Ethical Hacking Course Basic-Part:7

আজকের বিষয়: SSLv3 Vulnerability & POODLE Attack

SSLv3 Vulnerability বুঝতে, প্রথমেই আমাদেরকে কিভাবে ক্লায়েন্ট এবং সার্ভারের মধ্যে সিকিউর HTTPS কানেকশন তৈরি হয় সেটা সম্পর্কে সম্যক ধারণা থাকা দরকার এবং সেটা আমি নিচের চিত্রের মাধ্যমে বুঝানোর চেষ্টা করছি ইনশাল্লাহ-
যখন কোনো ব্রাউজারে https (HTTP+SSL) লিংক(https://www.google.com.bd)-এ ক্লিক করা হয় তখন যা ঘটে, তা হলো-

প্রথমেই ক্লায়েন্ট, সার্ভারের সাথে 443 পোর্টে TCP কানেকশন তৈরি করে | তারপর শুরু হয় SSL Handshake.

1. SSL Handshake-এর ক্ষেত্রে ক্লায়েন্ট প্রথমে SSL CLIENT HELLO মেসেজ পাঠায় সার্ভারের কাছে negotiate করার জন্য| এটার মাধ্যমে আসলে ক্লায়েন্ট সার্ভারকে জানায় যে, আমি এই এই জিনিস সাপোর্ট করি, তুমি এর মধ্য থেকে কোন গুলো দিয়ে আমার সাথে negotiate করবা |
CLIENT HELLO মেসেজ বহন করে-
      (i)  Highest SSL ভার্সন যেটা সে সাপোর্ট করে
      (ii) ডাটা কম্প্রেশন মেথড যেমন gzip
      (iii) Ciphers for encryption যেমন MD5, SHA-1, DES
      (iv) Random ভ্যালু যেটা পরবর্তীতে Symmetric Key তৈরিতে ব্যবহার করে |

2. তারপর সার্ভার response করে SERVER HELLO মেসেজের মাধ্যমে এবং এটার মাধ্যমে সার্ভার CLIENT HELLO মেসেজের against-এ যা যা সাপোর্ট করে তা বলে দেয় তার মানে negotiate করে | 
SERVER HELLO মেসেজ বহন করে-
      (i)  Highest SSL ভার্সন যেটা ক্লায়েন্ট সাপোর্ট করে
      (ii) ডাটা কম্প্রেশন মেথড যেটা ক্লায়েন্ট সাপোর্ট করে
      (iii) Ciphers for encryption যেটা ক্লায়েন্ট সাপোর্ট করে
      (iv) Random ভ্যালু যেটা পরবর্তীতে Symmetric Key তৈরিতে ব্যবহার করে |
      (v) এবং Session ID এই SSL সেশনের জন্য 

3. SERVER HELLO মেসেজের পর সার্ভার ক্লায়েন্ট-এর কাছে Certificate পাঠায় | এটাকে বলা হয় ডিজিটাল সার্টিফিকেট যেটা provide করে সার্টিফিকেট অথরিটি যেমন Verisign, Digicert ইত্যাদি | Certificate পাঠানোর উদ্দেশ্য দুইটি-
       (i) এটার মাধ্যমে সার্ভার ক্লায়েন্ট-এর কাছে তার Public Key পাঠায় যেটা দিয়ে ক্লায়েন্ট ডাটা এনক্রিপ্ট করে সার্ভারের কাছে পাঠাবে |
      (ii) এবং এটা সার্ভারের identity বহন করে 

4. তারপর সার্ভার HELLO DONE মেসেজের মাধ্যমে ক্লায়েন্টকে জানিয়ে দেয় যে negotiation শেষ |
 
5. তারপর ক্লায়েন্ট  Client Key Exchange মেসেজের দ্বারা, সার্ভারের পাবলিক key ব্যবহার করে এনক্রিপ্টেড SSL Session Information সার্ভারকে পাঠায়  |

6. তারপর ক্লায়েন্ট Change Cipher Spec মেসেজ পাঠায় সার্ভারকে এই জন্য যে ভবিষ্যতে তাদের মধ্যে সব মেসেজ আদান-প্রদান হবে এনক্রিপ্ট করে |

7. তারপর ক্লায়েন্ট, সার্ভারকে Finished মেসেজ পাঠায় এই জন্য যে SSL negotiation successfully verified.

8. তারপর সার্ভার Change Cipher Spec মেসেজ পাঠায় ক্লায়েন্টকে এই জন্য যে ভবিষ্যতে তাদের মধ্যে সব মেসেজ আদান-প্রদান হবে এনক্রিপ্ট করে |

9. তারপর সার্ভার, ক্লায়েন্টকে Finished মেসেজ পাঠায় এই জন্য যে SSL negotiation successfully verified.

উপরের আলোচনা থেকে আমরা নির্দিধায় বলতে পারি যে, SSL (Secure Sockets Layer) হলো একটা Cryptographic প্রোটোকল যেটা ব্রাউজার এবং ওয়েব সার্ভারের মধ্যে এনক্রিপ্টেড বা সিকিউর কমিউনিকেশনে সাহায্য করে | এটা আরও গুরুত্বপূর্ণ যে কাজ টা করে সেটা হলো, ব্রাউজার বা ক্লায়েন্টকে-সার্ভার authenticate এবং সার্ভারকে-ব্রাউজার বা ক্লায়েন্ট authenticate করতে সাহায্য করে|

তাহলে TLS(Transport Layer Security) কি ? TLS আসলে কিছুই না, TLS হলো SSL বা Secure Sockets Layer প্রোটোকলের latest ভার্সন |

আবার আসা যাক, SSLv3 Vulnerability কি ?
কয়েক দিন আগে গুগলের তিন সিকিউরিটি কুতুব Bodo Moller, Thai Doung এবং Krzysztof আবিস্কার করলেন যে, Cipher Block Changing (CBC) encryption algorithm(যেটা ব্যবহার করা হয়েছে SSL3.0 তে)-এর দুর্বলতার কারণে  ব্রাউজার টু সার্ভার এবং সার্ভার টু ব্রাউজার-এর মধ্যকার এনক্রিপ্টেড ট্রাফিক, ডিক্রিপ্ট করা সম্ভব |এটাকে বলা হয় POODLE(Padding Oracle On Downgraded Legacy Encryption).

কিভাবে POODLE attack করা  হয়:
 যখন ক্লায়েন্ট এবং সার্ভারের মধ্যে নেগোশিয়েশন হয় তখন ক্লায়েন্ট সব সময়ই তার  সাপোর্টকৃত highest সিকিউরিটি প্রোটোকল (TLSv1.1 or higher>SSLv3 ) দ্বারা negotiate করতে চাই | POODLE attack হলো man in middle attack যেটা ব্রাউজার এবং সার্ভারের মধ্যে সিকিউরিটি প্রোটোকল negotiation-এর সময়, ব্রাউজার বা সার্ভারকে ডাউনগ্রেড প্রোটোকল ব্যবহার করতে ফোর্স করে, SSL handshaking-এ বাধা দেয়ার মাধ্যমে যেমন TLSv1-এর পরিবর্তে SSLv3.
যেহেতু man in middle attack তার মানে হ্যাকার/attacker কে  অবশ্যই ব্রাউজার বা সার্ভারের একই নেটওয়ার্কে থাকবে হবে অথবা malicious JavaScript কোড execute-এর মাধ্যমে | 

 Affected Systems: 
  1. অধিকাংশ OS যেমন Windows, Redhat ইত্যাদি |
  2. অধিকাংশ ব্রাউজার যেমন মজিলা, গুগলক্রোম, IE ইত্যাদি | 
কিভাবে Mitigate করা যায়:
সব ধরনের সিস্টেম(OS, ব্রাউজার) থেকে SSLv3 আপাতত disabled করে রাখায় ভালো এবং যে সমস্ত cipher suite, CBC mode ব্যবহার করে না তাদের সিস্টেমে enable রাখা যেমন TSL 1.0, TLS1.1, TLS1.2 ইত্যাদি |

সুখবর:
অধিকাংশ ব্রাউজার এই মাসের মধ্যেই POODLE attack থেকে বাচতে তারা তাদের সিস্টেমে TLS ডাউনগ্রেড মেকানিজম নিয়ে আসছে যেটাকে বলা হয় SCSV (Signaling Cipher Suite Value). 

রবিবার, ১৯ অক্টোবর, ২০১৪

Ethical Hacking Course Basic-Part:6

আজকের বিষয় : Cryptography! the father of Information Security

একুশ শতকের দোরগোড়ায় এসে আমাদের দৈনন্দিন কাজ কর্মের সাথে ইন্টারনেট যেন ওতপ্রোতভাবে মিশে গেছে যেমন ক্রেডিট কার্ডের মাধ্যমে অনলাইন শপিং, অনলাইন ব্যাঙ্কিং, মেইলের মাধ্যমে বড় বড় বিজনেস ডিলিং ইত্যাদি |
এবার একবার ভাবুন আপনি কিন্তু উপরে উল্লিখিত সব কাজই করছেন পাবলিক নেটওয়ার্ক ব্যবহার করে আর এই পাবলিক নেটওয়ার্ক-এ বসে আছে আপনার আমার মত ভালো মানুষের পাশাপাশি কিছু খারাপ লোকও(হ্যাকার) বটে এখন আপনার ক্রেডিট কার্ড নম্বর এবং বিজনেস মেইল যদি ওই সব খারাপ লোকদের হাতে চলে যায় তাহলে বুঝতেই পারছেন আপনার বারোটা বাজতে আর বাকি থাকবে না বৈকি |এখন খারাপ লোক থাকবেই তাই বলে তো আর আপনি হাত-পা গুটিয়ে ঘরে বসে থাকতে পারেন না তাই আপনাকে এই পাবলিক নেটওয়ার্কই ব্যবহার করতে হবে এবং সেটা ওই খারাপ লোক গুলোর চোখে ধুলো দিয়ে | এখন প্রশ্ন হলো সেটা কিভাবে-Cryptography-এর মাধ্যমে |

Cryptography হলো এমন একটা বিজ্ঞান যার মাধ্যমে একটা human-readable টেক্সট বা data কে  human-unreadable ফরমেটে রূপান্তর করা হয় যাতে ওই সব খারাপ লোকগুলোর  সামনে দিয়ে বা তাদের হাতে পড়ে গেলেও ডাটার কোনো ক্ষতি করতে না পারে | 
এখন এই-
  • human-readable টেক্সট কে টেকনিক্যালি বলে-PlainText 
  • human-unreadable টেক্সট কে বলে-CipherText 
  • আর human-readable ফরমেট থেকে human-unreadable ফরমেটে রূপান্তর করাকে বলা হয়-Encryption 
  • আবার human-unreadable ফরমেট থেকে human-readable ফরমেটে রূপান্তর করাকে বলে-Decryption  
  • যে algorithm ব্যবহার করে এটা করা হয় তাকে বলে-Encryption-Decryption Algorithm or Cipher


এমন তিনটি Cryptographic algorithm হলো-
  • Symmetric Encryption Algorithm 
  • Asymmetric Encryption Algorithm
  • Hash Algorithm

Symmetric Encryption Algorithm-এর ক্ষেত্রে Sender এবং Recipient উভয়ই একই Key ব্যবহার করে data Encryption এবং Decryption জন্য যেটাকে বলা হয় Secret Key বা  Private Key | যেহেতু Secret বা  Private Key, তো বুঝতেই পারছেন এটা publicly ডিস্ট্রিবিউটেড না শুধুমাত্র sender এবং Recipient-ই জানবে |
বিষয়টা হলো এমন  যে একটা data-কে বাক্স বন্দি করে তাতে একটা তালা ঝুলিয়ে দেয়া এবং যার কাছে পাঠানো হচ্ছে তাকে ওই একই চাবি দিয়ে বাক্সটা খুলতে হবে যেটা দিয়ে Sender তালা দিয়েছিল তারমানে চাবিটাও Recipient-এর কাছে পৌছে দিতে হবে যেটা একটা ঝামেলার ব্যপার এবং সেটা আবার নেটওয়ার্কের ভিতর দিয়ে securely পাঠানোও tough কিন্তু এটা অনেক ফাস্ট Encryption Algorithm.


কিছু Symmetric Encryption Algorithm-এর  নাম-
  1. Data Encryption Standard (DES)
  2. Triple Data Encryption Standard (3DES)
  3. Advanced Encryption Standard (AES)
  4. Rivest Cipher (RC)-RC1, RC2, RC4,RC6
  5. International Data Encryption Algorithm (IDEA)
  6. Blowfish

 Asymmetric Encryption Algorithm-এর ক্ষেত্রে দুইটা key ব্যবহার করা হয় যার একটা কে Public Key আর অন্যটাকে বলে Private Key | Recipient-এর Public Key দিয়ে sender তার পাঠানোকৃত ডাটাকে Encrypt করে আর Recipient তার Private Key দিয়ে sender-এর পাঠানো ডাটাকে Decrypt করে |এখানে একটা কথা বলে রাখা দরকার যে, sender যে algorithm ব্যবহার করে তার পাঠানোকৃত ডাটাকে Encrypt করবে, সেই একই algorithm ব্যবহার করে Recipient ওই ডাটাকে ডিক্রিপ্ট করতে হবে |

কিছু Asymmetric Encryption Algorithm-এর  নাম-
  1. Rivest Shamir Adleman (RSA)
  2. Elliptic Curve Cryptography (ECC)
  3. Diffie-Hellman Key Agreement 
  4. Digital Signature Algorithm (DSA)

Hash Algorithm-আমি একটা বাস্তব উদাহরণের মাধ্যমে বুঝানোর চেষ্টা করছি, আপনারা নিশ্চয় ATM কার্ডের মাধ্যমে ATM বুথ থেকে টাকা তুলেছেন ? সেখানে আসলে কি হয় ফার্স্ট আপনি বুথে ঢুকার পর ATM কার্ডটা টেলার মেশিনে ঢুকান then পিন নম্বরটা keypad-এ চাপ দেন তারপর আপনি আপনার চাহিদা মত টাকা তুলেন-তাই নয় কি? এখন প্রশ্ন হলো সে কিভাবে আপনাকে বা আপনার পিনটাকে authenticate করে এবং সেটা যদি আমরা বুঝতে পারি তাহলে Hash Algorithm টাও বুঝতে পারবো ইনশাহাল্লাহ | এবার আসি authentication টা কিভাবে হয় -

1. ব্যাঙ্ক থেকে সরবরাহকৃত পিনের Hash ভ্যালুটা store করা থাকে ATM কার্ডের ম্যাগনেটিক stripe-এ
2. টেলার মেশিনে কার্ডটা ঢুকিয়ে আপনার পিনটা দেয়ার সাথে সাথে টেলার মেশিন একটা Hash ভ্যালু তৈরি করে ওই পিনের জন্য
3. তারপর টেলার মেশিন দ্বারা  জেনারেটকৃত Hash ভালুটা কার্ডে storeকৃত Hash ভ্যালুর সাথে compare করে যদি মিলে যায় তাহলে আপনি authenticated ঠিক নিচের চিত্রের মত-

তাহলে Hash Algorithm হলো একটা ট্রান্সফরমেশন ছাড়া আসলে কিছুই না, সে একটা ডাটাকে ইনপুট হিসেবে নেয় এবং ফিক্সড সাইজের alphanumeric ভ্যালু জেনারেট করে |

Hash Algorithm যেটাকে ইনপুট হিসেবে নেয় তাকে বলে-Message আর 
যে আউটপুট বা ভ্যালু জেনারেট করে তাকে বলে-Message Digest or Digital Fingerprint or Checksum


Hash Algorithm-বৈশিষ্ট্য:
  1. Fixed Size - Hash Algorithm সব সময়ই ফিক্সড সাইজের Hash ভ্যালু (Message Digest) তৈরি করে ছোট-বড় যেকোন ইনপুটের জন্য | যেমন- 's' এবং 'I Love Bangladesh'-এর জন্য একই length-এর ভ্যালু জেনারেট করছে |


2. Unique - দুইটা ভিন্ন ধরনের ডাটার জন্য Hash ভ্যালু কখনোই একই হবে না |
3. Original - একটা plaintext কে Hash করার পর সেই  Hash ভ্যালু থেকে original plaintext-এ ফিরে যাওয়া প্রায় অসম্ভব |

কিছু Hash Algorithm-এর  নাম-
  1. Message Digest (MD5)
  2. Secure Hash Algorithm (SHA-1)
  3. Whirlpool

সোমবার, ৬ অক্টোবর, ২০১৪

Ethical Hacking Course with Kali Linux-Part:3

আজকের বিষয়: Kali Linux দিয়ে যা যা করা যায়

Kali Linux-এ রয়েছে ৩০০+ Penetration Testing টুলস যার দ্বারা একজন Ethical Hacker যা যা করতে পারবে টা  হলো-
  1. Information Gathering
  2. Vulnerability Analysis 
  3. Web Application Testing
  4. Password Attack
  5. Wireless Network Attack
  6. System Exploitation
  7. Sniffing and Spoofing
  8. Maintaining Access
  9. Reverse Engineering
  10. Stress Testing
  11. Hardware Hacking
  12. Forensics
  13. Reporting 
  14. System Services

শুক্রবার, ৩ অক্টোবর, ২০১৪

Ethical Hacking Course with Kali Linux-Part:2

বিষয়: Step By Step Kali Linux Installation in VMware:

এখন আমরা দেখব কিভাবে VMware-এ Kali Linux ইনস্টল করতে হয়,

Step1: VMware ওপেন করার পর Click on File===>New Virtual Machine

Step2: Then Select 'Typical' and Click on 'Next'-

Step3: Select Downloaded ISO from PC by Clicking 'Browse' option-

Step4: Select OS as 'Linux' and Version 'Debian 6' from drop-down list-

Step 5: এখন Virtual Machine-এর একটা নাম দিতে হবে এবং যে location-এ kali ইনস্টল করতে চান সেটা সিলেক্ট করে দিতে হবে 'browse' থেকে- 

Step 6: এখান থেকে Virtual machine-এর জন্য hard-disk-এর  কত হবে সেটা বলে দিতে হবে-

Step 7: এখান থেকে RAM সাইজ এবং NAT সিলেক্ট করে দিতে হবে-

Step 8: এখন ইনস্টলেশন শুরু হবে 'graphical installation' সিলেক্ট করুন-

Step 9:এখান থেকে ভাষা সিলেক্ট করুন

Step 10: Location or Country সিলেক্ট করুন-

Step 11: যে ভাষাতে কীবোর্ড চান সেটা সিলেক্ট করুন-

Step 12: এখানে host-name হিসেবে যে কোনো একটা নাম দিন-

Step 13: ডোমেইন নাম না থাকে blank রাখুন এন্ড continue-

Step 14: সিস্টেমের জন্য root password সেট করুন-

Step 15: এখান থেকে time-zone সিলেক্ট করুন-

Step 16: এখান থেকে partition method সিলেক্ট করুন-

Step 17: Partition-এর জন্য hard-disk টা সিলেক্ট করুন-

Step 18: Partition Scheme কেমন হবে সেটা বলে দিন-

Step 19: এখান থেকে  Partition status-টা দেখে নিন-
         
Step 20: Just সিলেক্ট 'Yes' এন্ড Continue-

Step 21: Network Mirror 'Yes' করুন পরবর্তীতে update-এর জন্য-

Step 22: HTTP Proxy use করতে না চাইলে blank রাখুন-

Step 23: GRUB boot loader 'Yes' করুন-

Step 24: Now ইনস্টলেশন finish just একবার reboot দিন-