hacktricks/network-services-pentesting/pentesting-imap.md
2024-02-10 18:14:16 +00:00

14 KiB
Raw Blame History

143,993 - IMAP Pentesting

AWS hacklemeyi sıfırdan kahraman olmak için htARTE (HackTricks AWS Kırmızı Takım Uzmanı)öğrenin!

HackTricks'ı desteklemenin diğer yolları:

En önemli olan zayıflıkları bulun, böylece daha hızlı düzeltebilirsiniz. Intruder saldırı yüzeyinizi takip eder, proaktif tehdit taramaları yapar, API'lerden web uygulamalarına ve bulut sistemlerine kadar tüm teknoloji yığınınızda sorunları bulur. Ücretsiz deneyin bugün.

{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}


Internet Mesaj Erişim Protokolü

Internet Mesaj Erişim Protokolü (IMAP), kullanıcıların herhangi bir konumdan e-posta mesajlarına erişmelerini sağlamak amacıyla tasarlanmıştır, öncelikle bir İnternet bağlantısı aracılığıyla. Temel olarak, e-postalar, bireyin kişisel cihazına indirilip depolanmak yerine bir sunucuda saklanır. Bu, bir e-posta erişildiğinde veya okunduğunda, bunun doğrudan sunucudan yapıldığı anlamına gelir. Bu yetenek, kullanılan cihaza bakılmaksızın e-postaların çoklu cihazlardan kontrol edilmesini sağlar, böylece hiçbir mesaj gözden kaçmaz.

Varsayılan olarak, IMAP protokolü iki bağlantı noktasında çalışır:

  • Port 143 - bu, varsayılan IMAP şifrelenmemiş bağlantı noktasıdır
  • Port 993 - IMAP ile güvenli bir şekilde bağlanmak istiyorsanız kullanmanız gereken bağlantı noktasıdır
PORT    STATE SERVICE REASON
143/tcp open  imap    syn-ack

Banner yakalama

Banner yakalama, bir hedef IMAP sunucusuyla iletişim kurarken sunucunun banner mesajını almak için kullanılan bir tekniktir. Banner mesajı, sunucunun kendisini tanıttığı ve genellikle sunucu yazılımının ve sürümünün bilgisini içerir. Bu bilgi, saldırganın hedef sistem hakkında daha fazla bilgi edinmesine yardımcı olabilir.

Banner yakalama işlemi genellikle bir IMAP istemcisi kullanılarak gerçekleştirilir. İstemci, sunucuya bağlandığında sunucudan gelen banner mesajını alır. Bu mesaj, istemci tarafından okunabilir ve analiz edilebilir.

Banner yakalama, saldırganın hedef sistemdeki zayıf noktaları belirlemesine yardımcı olabilir. Örneğin, sunucu yazılımının eski bir sürümünü kullanıyorsa, bu sürümde bilinen bir güvenlik açığı olabilir. Saldırgan, bu bilgiyi kullanarak hedef sistemdeki bir saldırı vektörü belirleyebilir.

Banner yakalama işlemi, bir IMAP sunucusunun güvenlik durumunu değerlendirmek için kullanılan bir adımdır. Ancak, bu tekniğin yasal ve etik sınırlar içinde kullanılması önemlidir. Sadece izinli sistemler üzerinde gerçekleştirilmelidir ve hedef sistem sahibinin izni olmadan yapılmamalıdır.

nc -nv <IP> 143
openssl s_client -connect <IP>:993 -quiet

NTLM Auth - Bilgi sızdırma

Eğer sunucu NTLM kimlik doğrulamayı destekliyorsa (Windows), hassas bilgileri (sürümler) elde edebilirsiniz:

root@kali: telnet example.com 143
* OK The Microsoft Exchange IMAP4 service is ready.
>> a1 AUTHENTICATE NTLM
+
>> TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=
+ TlRMTVNTUAACAAAACgAKADgAAAAFgooCBqqVKFrKPCMAAAAAAAAAAEgASABCAAAABgOAJQAAAA9JAEkAUwAwADEAAgAKAEkASQBTADAAMQABAAoASQBJAFMAMAAxAAQACgBJAEkAUwAwADEAAwAKAEkASQBTADAAMQAHAAgAHwMI0VPy1QEAAAAA

Veya bunu nmap eklentisi imap-ntlm-info.nse ile otomatikleştirin.

IMAP Bruteforce

Sözdizimi

İşte IAMP Komutlarından örnekler:

Login
A1 LOGIN username password
Values can be quoted to enclose spaces and special characters. A " must then be escape with a \
A1 LOGIN "username" "password"

List Folders/Mailboxes
A1 LIST "" *
A1 LIST INBOX *
A1 LIST "Archive" *

Create new Folder/Mailbox
A1 CREATE INBOX.Archive.2012
A1 CREATE "To Read"

Delete Folder/Mailbox
A1 DELETE INBOX.Archive.2012
A1 DELETE "To Read"

Rename Folder/Mailbox
A1 RENAME "INBOX.One" "INBOX.Two"

List Subscribed Mailboxes
A1 LSUB "" *

Status of Mailbox (There are more flags than the ones listed)
A1 STATUS INBOX (MESSAGES UNSEEN RECENT)

Select a mailbox
A1 SELECT INBOX

List messages
A1 FETCH 1:* (FLAGS)
A1 UID FETCH 1:* (FLAGS)

Retrieve Message Content
A1 FETCH 2 body[text]
A1 FETCH 2 all
A1 UID FETCH 102 (UID RFC822.SIZE BODY.PEEK[])

Close Mailbox
A1 CLOSE

Logout
A1 LOGOUT

Evrim

IMAP (Internet Message Access Protocol), elektronik posta iletişimi için kullanılan bir protokoldür. IMAP, e-posta istemcilerinin sunucu üzerindeki e-posta kutularına erişmesine ve yönetmesine olanak tanır. Bu protokol, e-posta mesajlarını sunucuda tutar ve istemciye sadece gerektiğinde iletişim kurmasını sağlar.

IMAP, POP3'e (Post Office Protocol 3) göre daha gelişmiş bir protokoldür. POP3, e-posta mesajlarını istemciye indirirken sunucuda silerken, IMAP sunucuda kopyalarını tutar ve istemciye sadece görüntülemek veya indirmek için gönderir. Bu, birden fazla cihazda e-posta erişimi sağlamak için idealdir.

IMAP protokolü, e-posta kutularını yönetmek için bir dizi komut ve yanıt kullanır. Bu komutlar, e-posta mesajlarını okuma, yazma, silme, taşıma ve klasörlere erişim gibi işlemleri gerçekleştirmek için kullanılır. IMAP sunucuları genellikle TCP üzerinden 143 numaralı portu kullanır.

IMAP protokolünü kullanarak yapılabilecek bazı saldırılar şunlardır:

  • Brute force saldırıları: Kaba kuvvet saldırıları, IMAP sunucusuna giriş yapmak için kullanıcı adı ve şifre kombinasyonlarını denemek için kullanılır.
  • Kimlik avı saldırıları: Kimlik avı saldırıları, kullanıcıları sahte e-posta veya web sitelerine yönlendirerek kullanıcı adı ve şifrelerini ele geçirmeyi amaçlar.
  • IMAP sunucusu zafiyetleri: IMAP sunucuları, güvenlik açıklarına sahip olabilir ve bu açıklar kullanılarak saldırganlar tarafından istismar edilebilir.
  • Veri sızıntısı: IMAP sunucusunda depolanan e-posta mesajları, saldırganlar tarafından ele geçirilebilir ve hassas bilgilerin sızdırılmasına neden olabilir.

IMAP protokolünü anlamak ve güvenlik açıklarını tespit etmek, bir ağ hizmeti pentestinde önemli bir adımdır. Bu, saldırganların e-posta sunucusuna yetkisiz erişim sağlamasını ve hassas bilgilere erişmesini önlemek için yapılan bir güvenlik önlemidir.

apt install evolution

CURL

Temel gezinme işlemleri CURL ile mümkündür, ancak belgeler ayrıntılardan yoksundur, bu nedenle kesin ayrıntılar için kaynağa bakmanız önerilir.

  1. Posta kutularını listeleme (imap komutu LIST "" "*")
curl -k 'imaps://1.2.3.4/' --user user:pass
  1. Bir posta kutusundaki iletileri listeleme (imap komutu SELECT INBOX ve ardından SEARCH ALL)
curl -k 'imaps://1.2.3.4/INBOX?ALL' --user kullanıcı:parola

The result of this search is a list of message indicies.

Its also possible to provide more complex search terms. e.g. searching for drafts with password in mail body:

```markdown
curl -k 'imaps://1.2.3.4/Drafts?TEXT password' --user user:pass

Bu komut, 1.2.3.4 IP adresine sahip bir sunucuya bağlanarak Drafts klasöründeki e-postaları almayı amaçlar. --user parametresiyle kullanıcı adı ve şifre belirtilir.


A nice overview of the search terms possible is located [here](https://www.atmail.com/blog/imap-commands/).

3.  Downloading a message (imap command `SELECT Drafts` and then `FETCH 1 BODY[]`)

```bash
```markdown
curl -k 'imaps://1.2.3.4/Drafts;MAILINDEX=1' --user user:pass

Bu komut, bir IMAP sunucusuna bağlanmak için kullanılır. 1.2.3.4 IP adresine sahip sunucunun Drafts klasörüne bağlanır ve MAILINDEX=1 parametresini kullanır. --user user:pass ise kimlik doğrulama için kullanıcı adı ve şifreyi belirtir.


The mail index will be the same index returned from the search operation.

It is also possible to use `UID` (unique id) to access messages, however it is less conveniant as the search command needs to be manually formatted. E.g.

```bash
```markdown
Kod parçacığındaki `curl` komutları, IMAP sunucusuna bağlanmak ve belirli eylemleri gerçekleştirmek için kullanılır. İlk komut, IMAP sunucusuna bağlanır ve tüm e-posta kimliklerini arar. İkinci komut ise belirli bir e-posta kimliğini alır.

Çeviri:

curl -k 'imaps://1.2.3.4/INBOX' -X 'UID SEARCH ALL' --user user:pass
curl -k 'imaps://1.2.3.4/INBOX;UID=1' --user user:pass

```html
```markdown
Kod parçacığındaki `curl` komutları, IMAP sunucusuna bağlanmak ve belirli eylemleri gerçekleştirmek için kullanılır. İlk komut, IMAP sunucusuna bağlanır ve tüm e-posta kimliklerini arar. İkinci komut ise belirli bir e-posta kimliğini alır.

Çeviri:

curl -k 'imaps://1.2.3.4/INBOX' -X 'UID SEARCH ALL' --user user:pass
curl -k 'imaps://1.2.3.4/INBOX;UID=1' --user user:pass


Also, possible to download just parts of a message, e.g. subject and sender of first 5 messages (the `-v` is required to see the subject and sender):

```bash
```markdown
```bash
$ curl -k 'imaps://1.2.3.4/INBOX' -X 'FETCH 1:5 BODY[HEADER.FIELDS (SUBJECT FROM)]' --user user:pass -v 2>&1 | grep '^<'

```bash
$ curl -k 'imaps://1.2.3.4/INBOX' -X 'FETCH 1:5 BODY[HEADER.FIELDS (SUBJECT FROM)]' --user user:pass -v 2>&1 | grep '^<'

Although, its probably cleaner to just write a little for loop:

```bash
for m in {1..5}; do
echo $m
curl "imap://1.2.3.4/INBOX;MAILINDEX=$m;SECTION=HEADER.FIELDS%20(SUBJECT%20FROM)" --user user:pass
done

Bu komut, IMAP sunucusuna bir dizi istek gönderir ve belirli bir e-posta indeksine ve başlık alanlarına erişir. İndeks numarası değişken olan m ile belirtilir ve 1'den 5'e kadar olan değerleri alır. İstek, curl komutu kullanılarak gönderilir ve kullanıcı adı ve şifre belirtilir.


## Shodan

* `port:143 CAPABILITY`
* `port:993 CAPABILITY`

## HackTricks Automatic Commands

Protocol_Adı: IMAP #Eğer varsa, Protokol Kısaltması. Port_Numarası: 143,993 #Birden fazla ise, virgülle ayrılmış. Protokol_Açıklaması: Internet Mesaj Erişim Protokolü #Protokol Kısaltması tam olarak yazılmış

Entry_1: Ad: Notlar Açıklama: WHOIS için Notlar Not: | Internet Mesaj Erişim Protokolü (IMAP), kullanıcıların herhangi bir konumdan e-posta mesajlarına erişmelerini sağlamak amacıyla tasarlanmıştır, öncelikle bir İnternet bağlantısı aracılığıyla. Temel olarak, e-postalar bir sunucuda saklanır ve bir bireyin kişisel cihazına indirilip depolanmak yerine sunucudan doğrudan erişilir veya okunur. Bu yetenek, birden fazla cihazdan e-postaları kontrol etme kolaylığı sağlar ve kullanılan cihaza bakılmaksızın hiçbir mesajın kaçırılmamasını sağlar.

https://book.hacktricks.xyz/pentesting/pentesting-imap

Entry_2: Ad: Banner Yakalama Açıklama: Banner Yakalama 143 Komut: nc -nv {IP} 143

Entry_3: Ad: Güvenli Banner Yakalama Açıklama: Banner Yakalama 993 Komut: openssl s_client -connect {IP}:993 -quiet

Entry_4: Ad: msfconsole'suz mfs numaralandırma Açıklama: msfconsole çalıştırmadan IMAP numaralandırma Not: https://github.com/carlospolop/legion'dan alınmıştır Komut: msfconsole -q -x 'use auxiliary/scanner/imap/imap_version; set RHOSTS {IP}; set RPORT 143; run; exit'


<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>

Find vulnerabilities that matter most so you can fix them faster. Intruder tracks your attack surface, runs proactive threat scans, finds issues across your whole tech stack, from APIs to web apps and cloud systems. [**Try it for free**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) today.

{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}


<details>

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

Other ways to support HackTricks:

* If you want to see your **company advertised in HackTricks** or **download HackTricks in PDF** Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family)
* **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)**.**
* **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>