===============
Reconnaissance
===============

Scan
=====

On peut utiliser ``nmap``

.. code-block:: bash

    nmap <target (ip ou domaine)>
    
    nmap <target> -p <port spécifique>

    # Plus lent mais si on veut essayer de détecter la version du logiciel sur le port
    nmap <target> -sV

Si on a pas de cible précise mais seulement un sous-réseau d'IP, par exemple ``10.0.0.1/24``, on peut faire un scan large avec ``namp``

.. code-block:: bash

    nmap 10.0.0.1/24

    nmap 10.0.0.*

    nmap 10.0.0.1-255


Si on veut scanner une étendu de ports précis on peut le faire automatiquement

.. code-block:: bash

    nmap <target> -p 1-2000

    nmap <target> -p 22,80,1337


Interpréter les résultats
--------------------------

Open
    Le port est ouvert, on peut communiquer avec

Closed
    Le port est explicitement bloqué. Il communique mais pour nous dire de dégager.

Filtered
    Le port est intercepté. Il est peut-être ouvert mais souvent ça veut dire qu'il est fermé. Si la cible possède un firewall alors on recevra souvent un filtered.


Si on voit des ports comme 88, 135, 389, 445 => On a potentiellemnt affaire à un Windows, sinon pensez Linux.


Web
====

Si vous avez un site web, vérifiez les points suivants:

- Regardez les ``Headers`` des paquets HTTP
    1. S'il y en a un, quel reverse proxy y-a-t'il ?
    2. Est-ce que c'est du Node.js ? Du PHP ? Du Python ? etc
    3. Y-a-t'il des redirections ? Des IP ou sous-domaines spéciaux ? etc
    4. Y-a-t'il des cookies ? Des headers bizarres ? Du CSP ? Du CORS ? etc
- Regardez le code source et *frameworks* utilisés
- Regardez toutes les pages auquels nous avons accès
- ...




.. toctree::
   :maxdepth: 2
   :caption: Contents:

   docs/recon
   docs/exploitation_externe
   docs/exploitation_interne
   docs/virtualisation_docker_kube