hacktricks/network-services-pentesting/pentesting-imap.md
2024-02-11 01:46:25 +00:00

13 KiB

143,993 - Testowanie penetracyjne IMAP

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Znajdź najważniejsze podatności, aby móc je szybko naprawić. Intruder śledzi powierzchnię ataku, wykonuje proaktywne skanowanie zagrożeń, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. Wypróbuj za darmo już dziś.

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


Protokół dostępu do wiadomości internetowych

Protokół dostępu do wiadomości internetowych (IMAP) został zaprojektowany w celu umożliwienia użytkownikom dostępu do swoich wiadomości e-mail z dowolnego miejsca, głównie za pośrednictwem połączenia internetowego. W zasadzie, wiadomości e-mail są przechowywane na serwerze, a nie pobierane i przechowywane na urządzeniu osobistym użytkownika. Oznacza to, że gdy wiadomość e-mail jest odczytywana lub przeglądana, odbywa się to bezpośrednio z serwera. Ta funkcjonalność umożliwia wygodne sprawdzanie wiadomości e-mail z wielu urządzeń, zapewniając, że żadne wiadomości nie zostaną pominięte, niezależnie od używanego urządzenia.

Domyślnie protokół IMAP działa na dwóch portach:

  • Port 143 - jest to domyślny niezaszyfrowany port IMAP
  • Port 993 - jest to port, który należy używać, jeśli chcesz połączyć się z IMAP w sposób bezpieczny
PORT    STATE SERVICE REASON
143/tcp open  imap    syn-ack

Pobieranie baneru

Banner grabbing to technika, która polega na pobieraniu informacji o usłudze IMAP z serwera docelowego. Pozwala to na identyfikację wersji oprogramowania, która jest używana, oraz innych szczegółów, które mogą być przydatne podczas testowania penetracyjnego.

Aby przeprowadzić banner grabbing w usłudze IMAP, można użyć narzędzi takich jak telnet lub nc. Poniżej przedstawiono przykład użycia telnet:

telnet <adres_serwera> 143

Po nawiązaniu połączenia z serwerem IMAP, można wysłać polecenie CAPABILITY, aby uzyskać informacje o obsługiwanych funkcjach przez serwer. Przykład:

a001 CAPABILITY

Serwer odpowie listą obsługiwanych funkcji, co może dostarczyć cennych informacji dla testera penetracyjnego.

Banner grabbing jest przydatną techniką, która może pomóc w identyfikacji potencjalnych podatności lub słabych punktów w usłudze IMAP.

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

NTLM Auth - Ujawnianie informacji

Jeśli serwer obsługuje uwierzytelnianie NTLM (Windows), można uzyskać wrażliwe informacje (wersje):

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

Lub zautomatyzuj to za pomocą wtyczki nmap imap-ntlm-info.nse

Brute Force IMAP

Składnia

Przykłady poleceń IMAP z tutaj:

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

Ewolucja

IMAP (Internet Message Access Protocol) jest protokołem służącym do odbierania wiadomości e-mail z serwera. Pierwsza wersja IMAP została opublikowana w 1986 roku, a obecnie najpopularniejszą wersją jest IMAP4. Protokół ten ewoluował wraz z rozwojem technologii i wprowadzaniem nowych funkcji. Poniżej przedstawiam krótki przegląd ewolucji IMAP:

  • IMAP2: Wersja ta wprowadziła podstawowe funkcje, takie jak odbieranie i usuwanie wiadomości e-mail z serwera. Była to pierwsza wersja IMAP, która umożliwiała zarządzanie wiadomościami bez konieczności pobierania ich na lokalny komputer.

  • IMAP2bis: Ta wersja wprowadziła kilka ulepszeń, takich jak możliwość oznaczania wiadomości jako przeczytanej lub nieprzeczytanej oraz możliwość przenoszenia wiadomości między folderami.

  • IMAP3: Ta wersja wprowadziła obsługę wielu folderów, co umożliwiało użytkownikom organizowanie swoich wiadomości w hierarchicznej strukturze folderów.

  • IMAP4: Obecnie najpopularniejsza wersja IMAP, IMAP4, wprowadziła wiele nowych funkcji, takich jak możliwość wyszukiwania wiadomości, zarządzania folderami, pobierania części wiadomości (np. tylko nagłówka) oraz obsługę rozszerzeń.

IMAP jest nadal używany jako jeden z głównych protokołów do odbierania wiadomości e-mail. Jego ewolucja umożliwiła użytkownikom bardziej zaawansowane zarządzanie swoimi skrzynkami pocztowymi i dostęp do wiadomości z różnych urządzeń.

apt install evolution

CURL

Podstawowa nawigacja jest możliwa za pomocą CURL, ale dokumentacja jest uboga w szczegóły, więc zaleca się sprawdzenie źródła dla precyzyjnych informacji.

  1. Wyświetlanie skrzynek pocztowych (polecenie imap `LIST "" "*")
curl -k 'imaps://1.2.3.4/' --user user:pass
  1. Wyświetlanie wiadomości w skrzynce pocztowej (polecenie IMAP SELECT INBOX, a następnie SEARCH ALL)
curl -k 'imaps://1.2.3.4/INBOX?ALL' --user user:pass

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:

curl -k 'imaps://1.2.3.4/Drafts?TEXT hasło' --user użytkownik:hasło

A nice overview of the search terms possible is located here.

  1. Downloading a message (imap command SELECT Drafts and then FETCH 1 BODY[])
curl -k 'imaps://1.2.3.4/Drafts;MAILINDEX=1' --user user:pass

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
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
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
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
```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 '^<'

Pobierz nagłówki wiadomości (SUBJECT FROM) z wiadomości 1 do 5 z skrzynki odbiorczej na serwerze IMAP o adresie IP 1.2.3.4. Użyj uwierzytelnienia użytkownika i hasła. Wyświetl tylko linie zaczynające się od "<".


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

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

## Shodan

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

## HackTricks Automatic Commands

Nazwa_Protokołu: IMAP #Skrót Protokołu jeśli istnieje. Numer_Portu: 143,993 #Oddzielone przecinkiem jeśli jest więcej niż jeden. Opis_Protokołu: Internet Message Access Protocol #Opis Protokołu zapisany pełną nazwą

Wpis_1: Nazwa: Notatki Opis: Notatki dotyczące WHOIS Notatka: | Internet Message Access Protocol (IMAP) został zaprojektowany w celu umożliwienia użytkownikom dostępu do swoich wiadomości e-mail z dowolnego miejsca, głównie za pośrednictwem połączenia internetowego. W zasadzie, wiadomości e-mail są przechowywane na serwerze, a nie pobierane i przechowywane na urządzeniu osobistym użytkownika. Oznacza to, że gdy wiadomość e-mail jest odczytywana lub otwierana, odbywa się to bezpośrednio z serwera. Ta funkcjonalność umożliwia wygodne sprawdzanie wiadomości e-mail z wielu urządzeń, zapewniając, że żadne wiadomości nie zostaną pominięte, niezależnie od używanego urządzenia.

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

Wpis_2: Nazwa: Banner Grab Opis: Banner Grab 143 Komenda: nc -nv {IP} 143

Wpis_3: Nazwa: Bezpieczny Banner Grab Opis: Banner Grab 993 Komenda: openssl s_client -connect {IP}:993 -quiet

Wpis_4: Nazwa: Wyliczanie mfs bez konsoli Opis: Wyliczanie IMAP bez konieczności uruchamiania msfconsole Notatka: pobrane z https://github.com/carlospolop/legion Komenda: 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>