Introduction
Osquery est un outil open-source qui permet d’explorer et surveiller un système (Linux, macOS, Windows) en utilisant… du SQL.
Il transforme les éléments du système en tables virtuelles :
- fichiers
- processus
- utilisateurs
- connexions réseau
- packages installés
- configurations système
Ensuite, nous pouvons exécuter des requêtes SQL dessus.
Installation
Pour installer Osquery il nous suffit de nous rendre sur le site :
https://pkg.osquery.io/windows/osquery-5.23.0.msi
il suffit de le .msi (pratique que ce soit un .msi car plus simple est pousser en GPO), réaliser les étapes basique de l’installation.
Il s’installera dans : C:\Program Files\osquery
Utilisation
Requête simple
Nous pouvons faire une requête SQL simple, en sélectionnant TOUT les éléments d’un table et les afficher :
1
2
3
4
5
6
|
osquery> SELECT * FROM logged_in_users;
+--------+----------------+-----------+---------+------------+-----+-----------------------------------------------+----------------------------------------------------------+
| type | user | tty | host | time | pid | sid | registry_hive |
+--------+----------------+-----------+---------+------------+-----+-----------------------------------------------+----------------------------------------------------------+
| active | Administrateur | RDP-Tcp#0 | INF-004 | 1781161429 | -1 | S-1-5-21-4068073117-2498144265-3052310866-500 | HKEY_USERS\S-1-5-21-4068073117-2498144265-3052310866-500 |
+--------+----------------+-----------+---------+------------+-----+-----------------------------------------------+----------------------------------------------------------+
|
Ce genre de requête fonctionne mais sur de grandes tables, ça devient très vite illisible …
C’est pour ça que nous pouvons pimper notre commande :
1
2
3
4
5
6
|
osquery> SELECT type,user,pid,host FROM logged_in_users;
+--------+----------------+-----+---------+
| type | user | pid | host |
+--------+----------------+-----+---------+
| active | Administrateur | -1 | INF-004 |
+--------+----------------+-----+---------+
|
Ici j’ai choisi d’afficher les éléments suivant de la table logged_in_users :
- type
- user
- pid
- host
Comme nous pouvons le voir, j’ai du changer ma requête en ne sélectionnant pas TOUT les éléments. Ce changement ce fait donc au niveau de l’étoile.
Jointure entre les tables
Dans certains cas il est nécessaire de faire une jointure entre plusieurs tables.
L’exemple qui suit prend scénario où nous voulons savoir si un processus a une connexion sur un port local de la machine. Nous devons donc joindre la table processes et listening_ports :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
osquery> SELECT processes.name, listening_ports.port, processes.pid
...> FROM processes
...> JOIN listening_ports
...> ON processes.pid = listening_ports.pid
...> ;
+--------------+-------+------+
| name | port | pid |
+--------------+-------+------+
| svchost.exe | 135 | 504 |
| System | 445 | 4 |
| svchost.exe | 3389 | 7364 |
| System | 5357 | 4 |
| System | 5985 | 4 |
| System | 47001 | 4 |
| lsass.exe | 49664 | 816 |
| wininit.exe | 49665 | 656 |
| svchost.exe | 49666 | 1232 |
| svchost.exe | 49667 | 1680 |
| spoolsv.exe | 49668 | 2440 |
| services.exe | 49669 | 800 |
| svchost.exe | 49840 | 7636 |
| System | 139 | 4 |
| svchost.exe | 135 | 504 |
| System | 445 | 4 |
| svchost.exe | 3389 | 7364 |
| System | 5357 | 4 |
| System | 5985 | 4 |
| System | 47001 | 4 |
| lsass.exe | 49664 | 816 |
| wininit.exe | 49665 | 656 |
| svchost.exe | 49666 | 1232 |
| svchost.exe | 49667 | 1680 |
| spoolsv.exe | 49668 | 2440 |
| services.exe | 49669 | 800 |
| svchost.exe | 49840 | 7636 |
| svchost.exe | 123 | 2596 |
| svchost.exe | 3389 | 7364 |
| svchost.exe | 3702 | 4232 |
| svchost.exe | 3702 | 4232 |
| msedge.exe | 5353 | 7532 |
| msedge.exe | 5353 | 7532 |
| svchost.exe | 5353 | 1764 |
| svchost.exe | 5355 | 1764 |
| svchost.exe | 52479 | 1764 |
| svchost.exe | 58740 | 1764 |
| svchost.exe | 58741 | 4232 |
| System | 137 | 4 |
| System | 138 | 4 |
| svchost.exe | 61030 | 1556 |
| svchost.exe | 64610 | 2560 |
| svchost.exe | 123 | 2596 |
| svchost.exe | 3389 | 7364 |
| svchost.exe | 3702 | 4232 |
| svchost.exe | 3702 | 4232 |
| msedge.exe | 5353 | 7532 |
| svchost.exe | 5353 | 1764 |
| svchost.exe | 5355 | 1764 |
| svchost.exe | 52479 | 1764 |
| svchost.exe | 58740 | 1764 |
| svchost.exe | 58742 | 4232 |
+--------------+-------+------+
|