-
Notifications
You must be signed in to change notification settings - Fork 0
/
as-rep-roasting-saldirisi-saldiriyi-anlamak-ve-tespiti.html
223 lines (188 loc) · 19.5 KB
/
as-rep-roasting-saldirisi-saldiriyi-anlamak-ve-tespiti.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="utf-8">
<title> AS-Rep Roasting Saldırısı, Saldırıyı anlamak ve Tespiti
</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="HandheldFriendly" content="True" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="author" content="0x656e" />
<meta name="description" content="Giriş Selamlar, bu aralar Active Directory tarafında ki saldırı vektörleri veya bunların tespiti ilgimi oldukça fazla çekiyor. Bazı kişi ve yayınları liste dışı tutarak bizim sektörde genel kitlenin hep Linux'a yönlendirildiğini görüyorum/uz bana göre bu biraz hatalı bir yönlendirme gibi geliyor. Çünkü ileride Internal Pentester/Red Team olacak kişi …" />
<meta name="keywords" content="AS-REP Roasting, Red Team türkçe, Kerberos saldırıları, Kerberos Türkçe, Domain saldırıları, Windows Pentest, Windows Red Team, SIEM, SIEM üzerinde saldırıları yakalamak, Red Team aktivitelerini yakalamak, Kırmızı takım">
<meta property="article:tag" content="AS-REP Roasting" />
<meta property="article:tag" content="Red Team türkçe" />
<meta property="article:tag" content="Kerberos saldırıları" />
<meta property="article:tag" content="Kerberos Türkçe" />
<meta property="article:tag" content="Domain saldırıları" />
<meta property="article:tag" content="Windows Pentest" />
<meta property="article:tag" content="Windows Red Team" />
<meta property="article:tag" content="SIEM" />
<meta property="article:tag" content="SIEM üzerinde saldırıları yakalamak" />
<meta property="article:tag" content="Red Team aktivitelerini yakalamak" />
<meta property="article:tag" content="Kırmızı takım" />
<link rel="canonical" href="https://enesergun.net/as-rep-roasting-saldirisi-saldiriyi-anlamak-ve-tespiti.html"/>
<meta name="description" content=""/>
<!-- og definitions -->
<meta property="og:type" content="article" />
<meta property="og:url" content="https://enesergun.net/as-rep-roasting-saldirisi-saldiriyi-anlamak-ve-tespiti.html" />
<meta property="og:title" content="AS-Rep Roasting Saldırısı, Saldırıyı anlamak ve Tespiti" />
<meta property="og:description" content="Giriş Selamlar, bu aralar Active Directory tarafında ki saldırı vektörleri veya bunların tespiti ilgimi oldukça fazla çekiyor. Bazı kişi ve yayınları liste dışı tutarak bizim sektörde genel..." />
<meta property="og:image" content="https://w0.peakpx.com/wallpaper/212/918/HD-wallpaper-virtual-world-sunset-80s-landscape-retro-theme-tron.jpg" />
<link rel="stylesheet" href="theme/style.css">
<link href="https://enesergun.net/feeds/all.atom.xml" type="application/atom+xml" rel="alternate" title="Enes Ergün Atom Feed" />
</head>
<body>
<div class="container">
<header class="blog-header">
<h1><a href="https://enesergun.net" class="glitch glow" data-text="Enes Ergün">Enes Ergün</a></h1>
<p> Chaotic Neutral / ISTP-T - 30 lvl rogue - Cyber Security </p>
<nav>
<a href="https://enesergun.net/">INDEX</a>
<a href="https://enesergun.net/archives">ARCHIVES</a>
<a href="https://enesergun.net/categories">CATEGORIES</a>
</nav>
</header>
<div class="post">
<header>
<h1>AS-Rep Roasting Saldırısı, Saldırıyı anlamak ve Tespiti</h1>
<p class="date">Written on <time datetime="2020-08-14T18:32:00+03:00">Aug 14, 2020</time></p>
</header>
<article>
<h1>Giriş</h1>
<p>Selamlar, bu aralar Active Directory tarafında ki saldırı vektörleri veya bunların tespiti ilgimi oldukça fazla çekiyor. Bazı kişi ve yayınları liste dışı tutarak bizim sektörde genel kitlenin hep Linux'a yönlendirildiğini görüyorum/uz bana göre bu biraz hatalı bir yönlendirme gibi geliyor. Çünkü ileride Internal Pentester/Red Team olacak kişi birden kurumsal ortamı görünce kelimenin tam anlamıyla <code>sudan çıkmış balığa</code> dönüyor (Like me). Çoğu zaman da feed listemde benzer yazılar görüyorum fakat bu yazıları <code>Türkçe</code> kaynaklarda arattığımda herhangi bir sonuca ulaşamıyorum. Bu sebeple ilgili yazıyı biraz çeviri biraz araştırma biraz da kendimin kattığı şeyler ile hazırlamak istedim. Aslında işin teknik kısmı çok da uzun değil fakat öncesinde bilinmesi gerekenler uzun sanırım :)</p>
<p><strong>Bir hata vs. görürseniz bildirmekten çekinmezseniz sevinirim. Hadi başlayalım.</strong></p>
<p>Direkt olarak AS-REP Roasting'i göstermek yerine nasıl tespit edebileceğimizi, nasıl sömürebileceğimizi göstermek istedim. Bu sebeple öncelikle öğrenmemiz gereken bir kaç şey bulunuyor. </p>
<h1>Kerberos Nedir?</h1>
<p>Basit bir anlatımla network üzerinden yetkilendirme yapan bir sistemdir. Kendisi bu yetkilendirmeyi client-server ilişkisi içerisinde yapar. Simetrik anahtar şifreleme kullanır ve güvenilir bir 3. doğrulayıcıya ihtiyaç duyar. Ticket bazlı bir sistemdir. Ağ üzerinde gerçekleşen trafikte parolalar değil ticketlar kullanılır. Ayrıca ticketlar için Windows ve Linux tarafında farklı implementasyonlar kullanır. </p>
<p>Ek bilgi:</p>
<blockquote>
<p>Kerberos ticketları OS'lar genelinde farklı implementasyonlara sahiptir. Windows tarafında KIRBI denilen bir format kullanılırken Linux tarafında CCACHE formatı kullanılmaktadır. Eski linux sistemlerde bu keyler /tmp dizini altında tutulurken modern RedHat sistemlerde SSSD tarafından yönetilmekte olup, Kerberos Cache Manager tarafından şifrelenmiş bir biçimde /var/lib/sss/secrets/secrets.ldb altında durmaktadır. Key ise bu klasör altında gizli dosya içerisindedir.</p>
</blockquote>
<p><strong>Not:</strong> Ana konumuz kerberos olmadığı için bu kısım kısa tutulmuştur. </p>
<p><strong>Not 2:</strong> Daha fazla Türkçe bilgi için @mdisec(Mehmet İnce)'nin yayınlarına katılan üstad @BarknKilic 'ın anlatımına <a href="https://github.com/mdisec/mdisec-twitch-yayinlari">MDISEC Github</a> linki altında Network hacker kısmından ulaşabilirsiniz.</p>
<p>Daha fazla detay için: </p>
<p><a href="https://tr.wikipedia.org/wiki/Kerberos_(ileti%C5%9Fim_kural%C4%B1)">TR | Kerberos Wikipedia</a></p>
<p><a href="https://ldapwiki.com/wiki/Kerberos">EN | Kerberos</a></p>
<h2>Kerberos Pre Authentication Nedir</h2>
<p>Kendisi Kerberos içerisinde ki bir kavramdır. Aşağıda belirtilen 6113 RFC'si ile tanımlanmıştır. </p>
<p>Temelde kendisinin çıkış amacı aslında bir güvenlik özelliğidir. Parola tahmin etme saldırılarından etkilenmemek için çıkartılmıştır. Bunu da şöyle sağlar. KDC(Key Distribution Center)'a düz metin olarak bir AS_REQ isteği gönderir. Eğer konumuz olan Pre Authentication değeri Enabled(Default olan ve güvenli olan) ise trafik aşağıdaki şekilde gerçekleşmektedir.</p>
<p><img alt="kerberos" src="https://www.kerberos.org/images/krbmsg.gif"></p>
<p><a href="https://tools.ietf.org/html/rfc6113">Generalized Framework for Kerberos Pre-Authentication</a></p>
<p><a href="https://tools.ietf.org/html/rfc4120">The Kerberos Network Authentication Service (V5)</a></p>
<h2>Kapalı Kullanıcıların Tespiti</h2>
<p>Eğer bir kullanıcının <code>Pre Authentication Required</code> seçeneği disable'a çekilmişse aşağıda ki gibi bir log üretmektedir. <code>0x10</code> değeri disabled hali <code>0x10010</code> değeri ise enabled halidir. Bizim burada yakalamamız gereken değer <code>Enabled</code> olduğunda kural üretmektir. </p>
<div class="highlight"><pre><span></span><code>Old UAC Value: 0x10
New UAC Value: 0x10010
User Account Control:
'Don't Require Preauth' - Enabled
User Parameters: -
SID History: -
Logon Hours: -
</code></pre></div>
<p><img alt="DC Log" src="images/dclog.png"></p>
<p>Eğer loglardan değil de bulunduğunuz bir sistem üzerinde tespit etmek isterseniz de 2 seçeneğimiz bulunuyor.</p>
<p>LDAP Toolkit indirerek DC üzerinde aşağıdaki sorgu ile kontrol edebilirsiniz. Burada PreauthNoRequired kısmını sorgulayan asıl kod <code>userAccountControl:1.2.840.113556.1.4.803:=4194304</code> kısmıdır.
LDAP:</p>
<div class="highlight"><pre><span></span><code><span class="nv">searchBase</span><span class="o">=</span><span class="s">"DC=EXAMPLE,DC=COM"</span><span class="w"> </span><span class="nv">filer</span><span class="o">=</span><span class="s">"(&amp;(objectCategory=person)(objectClass=user)(userAccountControl:1.2.840.113556.1.4.803:=4194304))"</span><span class="w"> </span><span class="nv">scope</span><span class="o">=</span><span class="s">"SUBTREE"</span><span class="w"> </span><span class="nv">timeLimit</span><span class="o">=</span><span class="s">"0"</span><span class="w"> </span><span class="nv">countLimit</span><span class="o">=</span><span class="s">"1000"</span><span class="w"> </span><span class="nv">aliasesDereferencingMethod</span><span class="o">=</span><span class="s">"ALWAYS"</span><span class="w"> </span><span class="nv">referralsHandlingMethod</span><span class="o">=</span><span class="s">"IGNORE"</span><span class="w"></span>
</code></pre></div>
<p>PowerShell üzerinde ise <code>Get-DomainUser -PreauthNoRequired</code> sorgusu ile domain üzerinde ki kullanıcıları listeleyebilirsiniz.</p>
<p><img alt="Domain User" src="images/GetDomainUser.png"></p>
<p>Daha fazlası için: <a href="https://ldapwiki.com/wiki/Active%20Directory%20RISK%20Related%20Searches">LDAPWiki Risks Pre-Authentication</a></p>
<div class="highlight"><pre><span></span><code><span class="nv">searchBase</span><span class="o">=</span><span class="s">"DC=EXAMPLE,DC=COM"</span><span class="w"> </span><span class="nv">filer</span><span class="o">=</span><span class="s">"(&amp;(objectCategory=person)(objectClass=user)(userAccountControl:1.2.840.113556.1.4.803:=4194304))"</span><span class="w"> </span><span class="nv">scope</span><span class="o">=</span><span class="s">"SUBTREE"</span><span class="w"> </span><span class="nv">timeLimit</span><span class="o">=</span><span class="s">"0"</span><span class="w"> </span><span class="nv">countLimit</span><span class="o">=</span><span class="s">"1000"</span><span class="w"> </span><span class="nv">aliasesDereferencingMethod</span><span class="o">=</span><span class="s">"ALWAYS"</span><span class="w"> </span><span class="nv">referralsHandlingMethod</span><span class="o">=</span><span class="s">"IGNORE"</span><span class="w"></span>
</code></pre></div>
<h1>AS-REP Roasting Nedir</h1>
<p>AD üzerinde eski versiyonlara yönelik uyumluluk veya ihtiyaçlar sebebiyle bilerek açılmış olan <code>Do not require Kerberos Pre Authentication</code> seçeneğine sahip kullanıcılara ait RC4 keylerinin direkt olarak KDC üzerinden çekilmesi ve sistemler üzerinde Brute Force dair herhangi bir iz bırakmadan <code>hashcat</code> veya <code>john</code> gibi parola kırma araçları ile offline olarak bu parolanın kırılmasına verilen isimdir.</p>
<p>Eğer bir saldırgan olmayıp normal bir AS-REP göndermiş olsaydık network trafiğinde aşağıdaki gibi bir çıktı görecektir.</p>
<p><img alt="AS-REP" src="images/normalasrep.png"></p>
<p>Bunun sonucu olarak da aşağıdaki gibi bir çıktı görecektir.</p>
<p><img alt="AS-REQ" src="images/normalpreauth.png"></p>
<p>Fakat bir saldırgan olduğumuzdan doğal olarak işleri karıştırmak istiyoruz. AS-REP roasting için bir çok tool kullanabilirsiniz. Ben aşağıya 2 seçenek ekleyeceğim fakat 1 tanesini kullanacağım.</p>
<ul>
<li>Rubeus</li>
<li>Impacket</li>
</ul>
<p>Öncelikle bizim bu saldırı vektörünü yapabilmemiz için bir kullanıcı listesine ihtiyacımız var. Bu sebeple bir dosya yaratıp ben içerisinde 2-3 tane user ekliyorum. Ekliyorum çünkü neden olmasın? Evet bu kadar. Saldırı vektörümüzü çalıştırmaya hazırız. Bunun için aşağıdaki gibi bir komut yeterli olacaktır.</p>
<p><strong>Impacket examples içerisinde bulabilirsiniz</strong></p>
<div class="highlight"><pre><span></span><code>python3 GetNPUsers.py windomain.local -usersfile usernames.txt -format hashcat -outputfile hash.asrep
</code></pre></div>
<p>Aşağıda ekran görüntüsünde göreceğiniz üzere bazılarında hata aldık çünkü Kerberos DB üzerinde ilgili kullanıcıları bulamadı fakat bizim 3 tane kullanıcımız vardı. Bize 2 tane hata çıkartılmış o sebeple diyebiliriz ki 1 tanesine ait hash'i elde ettik.</p>
<p><img alt="IMpacket As-REP" src="images/asrepimpacket.png"></p>
<p>Şimdi bu trafiğin WireShark üzerinde nasıl gözüktüğüne bakalım.</p>
<p><img alt="AS-REP WireShark Not Legal" src="images/asrepwireshark.png"></p>
<p>Evet <code>Impacket</code> ile yaptığımız saldırı sonucunda elimizde bir hashimiz var ve bu hashi kırmak için elimizde tam da ona uygun çıktısıyla bir araç var ismi <code>hashcat</code>. Kendisi ile ilgili bir çok yazı bulabilirsiniz. AS-REP isteğimiz sonucu dönen değeri kırabilmek için kendisi üzerinde öntanımlı bir hash tipi ve ID'si bulunmaktadır.</p>
<p>Hashcat üzerinde 18200 ID'li hash tipi ile kırabilirsiniz.
<code>.\hashcat.exe --help | findstr 18200</code></p>
<div class="highlight"><pre><span></span><code><span class="mf">18200</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="n">Kerberos</span><span class="w"> </span><span class="mf">5</span><span class="p">,</span><span class="w"> </span><span class="n">etype</span><span class="w"> </span><span class="mf">23</span><span class="p">,</span><span class="w"> </span><span class="n">AS</span><span class="o">-</span><span class="n">REP</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="n">Network</span><span class="w"> </span><span class="n">Protocols</span><span class="w"></span>
</code></pre></div>
<p>Normal AS-REP ve zararlı AS-REP trafiğini görebileceğiniz network trafiğine ait PCAP dosyasını aşağıdan indirebilirsiniz.</p>
<p><a href="https://drive.google.com/file/d/1AYdLDlWcImlNxXia4ptu17jxOvZJIFZF/view?usp=sharing">AS-REP PCAP</a></p>
<h2>Nasıl yakalarım?</h2>
<p>Normal yaptığım bağlantılarda <code>Ticket Encryption Type</code> olarak Windows sitesinde belirtilen <code>Encryption Type</code> değerlerini görüyor olsam da AS-REP Roasting yaptığım kullanıcılarda sadece <code>0xFFFFFFFF</code> değerini görmekteyim. Ayrıca yapılan tüm aktivitelerde Service_Name olarak loglar içerisinde <code>krbtgt/WINDOMAIN.local</code> değeri geçmektedir. Normal olanları kontrol ettiğimde ise böyle bir değer değil direkt olarak <code>krbtgt</code> servisi geçmektedir.</p>
<p>Ekran görüntüleri:</p>
<p><strong>Normal Kerberos Aktiviteleri</strong></p>
<p><img alt="Splunk Normal" src="images/splunknormal.png"></p>
<p><strong>Saldırı zamanı Kerberos Aktiviteleri</strong>
<img alt="Splunk Normal" src="images/splunknormalolmayan.png"></p>
<p><strong>Ticket Encryption Type</strong>
<img alt="Ticket Encryption Type" src="images/splunk0xf.png"></p>
<h3>Splunk MITRE ATT&CK</h3>
<p>Splunk üzerinde Threat Hunting modüle ait MITRE tarafında ben herhangi bir tanımlama veya tetiklenme göremedim(Default değerler geçerlidir.). Belki de Splunk üzerinde yeni olduğumdan olabilir fakat ekran görüntüsünü aşağıya koyuyorum.</p>
<p><img alt="Splunk Mitre" src="images/splunkmitre.png"></p>
<p>Fakat Default değerlerin geçerli olmadığı örnek bir yazı ile tespitini aşağıya bırakıyorum.</p>
<p><a href="https://medium.com/@jsecurity101/ioc-differences-between-kerberoasting-and-as-rep-roasting-4ae179cdf9ec">Differences between Kerberoasting and AS-REP Roasting</a></p>
<p><strong>Not</strong>: Tüm yazıda detection, monitoring ve DC ortamı için <a href="https://github.com/clong/DetectionLab">DetectionLab</a> kullanılmıştır.</p>
<h1>Yazı Sonu</h1>
<p>Umarım beğenmişsinizdir. Eğer yanlış bir bilgi varsa doğru bilgi vermekle mükellef değilim:P ama siz yine de bana geri dönüş sağlayın ki hataları en aza indirelim.</p>
<p>Okuduğunuz için teşekkür ederim.</p>
<p>Geleneğim olan yazı sonu şarkısı:</p>
<p><a href="http://www.youtube.com/watch?v=MOSU_Pw7vO4" title=""><img alt="" src="http://img.youtube.com/vi/MOSU_Pw7vO4/0.jpg"></a></p>
<hr>
<h1>Referans ve kaynaklar:</h1>
<p><a href="https://directory.apache.org/apacheds/kerberos-ug/4.1-authenticate-kinit.html">https://directory.apache.org/apacheds/kerberos-ug/4.1-authenticate-kinit.html</a></p>
<p><a href="https://blog.stealthbits.com/cracking-active-directory-passwords-with-as-rep-roasting/">https://blog.stealthbits.com/cracking-active-directory-passwords-with-as-rep-roasting/</a></p>
<p><a href="https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/as-rep-roasting-using-rubeus-and-hashcat">https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/as-rep-roasting-using-rubeus-and-hashcat</a></p>
<p><a href="https://www.tarlogic.com/en/blog/how-to-attack-kerberos/">https://www.tarlogic.com/en/blog/how-to-attack-kerberos/</a></p>
<p><a href="https://en.hackndo.com/kerberos-asrep-roasting/">https://en.hackndo.com/kerberos-asrep-roasting/</a></p>
<p><a href="https://medium.com/@jsecurity101/ioc-differences-between-kerberoasting-and-as-rep-roasting-4ae179cdf9ec">https://medium.com/@jsecurity101/ioc-differences-between-kerberoasting-and-as-rep-roasting-4ae179cdf9ec</a></p>
</article>
<footer>
<p>This entry is posted in <a href="https://enesergun.net/category/siber-guvenlik.html">siber güvenlik</a>.</p>
</footer>
<div class="comments">
<div id="disqus_thread"></div>
<script type="text/javascript">
var disqus_shortname = '0x656e';
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
<a href="http://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>
</div>
</div>
<footer class="blog-footer">
<ul class="nav">
<li><a href="https://devilinside.me/"> Eşelyon</a></li>
<li><a href="https://medium.com/@brkalbyrk"> Berk Albayrak</a></li>
<li><a href="https://ahmtglr.wordpress.com/"> Ahmet Güler</a></li>
<li><a href="https://kaganisildak.com/"> Kağan Işıldak</a></li>
<li><a href="https://eybisi.run/"> Eybisi</a></li>
<li><a href="https://onur.im/"> Onur Aslan</a></li>
<li><a href="https://canyoupwn.me/"> Canyoupwn.me</a></li>
<li><a href="https://www.oguzozkeroglu.com"> Oğuz Özkeroğlu</a></li>
<li><a href="https://aligoren.com"> Ali Gören</a></li>
<li><a href="https://0xf61.gitlab.io/"> Emir Kurt</a></li>
<br>
<li><a href="www.twitter.com/eness_ergun">Twitter</a></li>
<li><a href="[email protected]">Mail</a></li>
</ul>
<p class="disclaimer">
Built with <a href="http://getpelican.com">Pelican</a>, and <a href="https://github.com/ka1nsha/MBPelican">MB Pelican</a> theme.
</p>
</footer>
</div>
</body>
</html>