Keylogging sur Mac Os X

Votre éditeur de texte (ou browser) vient de planter en plein milieu de votre rédaction. Vous prêtez de temps en temps votre laptop à quelqu’un et vous voulez vous assurer de l’utilisation de votre portable. Vous voulez tout simplement piéger un pote.. Bref, les cas d’utilisation ne manquent pas ! Le soucis, c’est qu’après une petite recherche sur Google pour un keylogger pour Mac Os X, vous ne tombez que sur des softwares payants ! Cependant, la perle rare existe, il s’agit de LogKext !

LogKext

LogKext est tout d’abord open-source ! C’est un gros point fort pour commencer, c’est toujours mieux de savoir ce qu’on fait tourner sur sa machine.. Ensuite le logiciel chiffre les logs qu’il enregistre, un point tout aussi important que le premier. Si on vous vole ce fichier, vous êtes quand même sauvé.. Ça serait dommage de se tirer une balle dans le pied. Ensuite, le logiciel est bien conçu, il va écrire dans votre fichier de logs tous les 100 caractères. De plus, il est tout à fait invisible, impossible de le remarquer sans passer par la ligne de commande.

Installation et changement de keymap

L’installation est standard, rien de très compliqué sauf si vous décidez de le compiler par vous-même. Vous pouvez retrouver la dernière version compilée de l’installateur ici : http://code.google.com/p/logkext/downloads/list Une fois installé, le keylogger est déjà lancé et enregistre vos frappes; Avant de vous expliquer plus en détails son fonctionnement, il faut savoir que ce dernier est prévu à la base pour les clavier qwerty ! Ce qui est embêtant.. Heureusement, il existe un fichier .plist qui définit les touches. Il vous faut donc changer ce dernier pour avoir vos logs en azerty ! Pour ce faire, il vous faut modifier le fichier : /Library/Application\ Support/logKext/logKextKeymap.plist Voici donc un keymap AZERTY pour logKext que j’ai trouvé sur le forum de macbidouille :

Keymap AZERT pour logKextlink
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" 
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Flags</key>
  <dict>
      <key>0x01</key>
      <string>&lt;fn&gt;</string>
      <key>0x02</key>
      <string>&lt;cmd&gt;</string>
      <key>0x04</key>
      <string>&lt;opt&gt;</string>
      <key>0x08</key>
      <string>&lt;cntrl&gt;</string>
  </dict>
  <key>Lowercase</key>
  <dict>
      <key>0</key>
      <string>q</string>
      <key>1</key>
      <string>s</string>
      <key>10</key>
      <string>@</string>
      <key>11</key>
      <string>b</string>
      <key>114</key>
      <string>&lt;aide&gt;</string>
      <key>115</key>
      <string>&lt;soh&gt;</string>
      <key>116</key>
      <string>&lt;vt&gt;</string>
      <key>117</key>
      <string>&lt;suppr&gt;</string>
      <key>119</key>
      <string>&lt;eot&gt;</string>
      <key>12</key>
      <string>a</string>
      <key>121</key>
      <string>&lt;ff&gt;</string>
      <key>123</key>
      <string>&lt;left&gt;</string>
      <key>124</key>
      <string>&lt;right&gt;</string>
      <key>125</key>
      <string>&lt;down&gt;</string>
      <key>126</key>
      <string>&lt;up&gt;</string>
      <key>13</key>
      <string>z</string>
      <key>14</key>
      <string>e</string>
      <key>15</key>
      <string>r</string>
      <key>16</key>
      <string>y</string>
      <key>17</key>
      <string>t</string>
      <key>18</key>
      <string>&amp;</string>
      <key>19</key>
      <string>e</string>
      <key>2</key>
      <string>d</string>
      <key>20</key>
      <string>"</string>
      <key>21</key>
      <string>'</string>
      <key>22</key>
      <string>&lt;para&gt;</string>
      <key>23</key>
      <string>(</string>
      <key>24</key>
      <string>-</string>
      <key>25</key>
      <string>c</string>
      <key>26</key>
      <string>e</string>
      <key>27</key>
      <string>)</string>
      <key>28</key>
      <string>!</string>
      <key>29</key>
      <string>a</string>
      <key>3</key>
      <string>f</string>
      <key>30</key>
      <string>$</string>
      <key>31</key>
      <string>o</string>
      <key>32</key>
      <string>u</string>
      <key>33</key>
      <string>&lt;?&gt;</string>
      <key>34</key>
      <string>i</string>
      <key>35</key>
      <string>p</string>
      <key>36</key>
      <string>&lt;ret&gt;</string>
      <key>37</key>
      <string>l</string>
      <key>38</key>
      <string>j</string>
      <key>39</key>
      <string>u</string>
      <key>4</key>
      <string>h</string>
      <key>40</key>
      <string>k</string>
      <key>41</key>
      <string>m</string>
      <key>42</key>
      <string>&lt;pounds&gt;</string>
      <key>43</key>
      <string>;</string>
      <key>44</key>
      <string>=</string>
      <key>45</key>
      <string>n</string>
      <key>46</key>
      <string>,</string>
      <key>47</key>
      <string>:</string>
      <key>48</key>
      <string>&lt;tab&gt;</string>
      <key>49</key>
      <string> </string>
      <key>5</key>
      <string>g</string>
      <key>50</key>
      <string>&lt;</string>
      <key>51</key>
      <string>&lt;del&gt;</string>
      <key>52</key>
      <string>&lt;?&gt;</string>
      <key>53</key>
      <string>&lt;esc&gt;</string>
      <key>6</key>
      <string>w</string>
      <key>65</key>
      <string>,</string>
      <key>67</key>
      <string>*</string>
      <key>69</key>
      <string>+</string>
      <key>7</key>
      <string>x</string>
      <key>75</key>
      <string>/</string>
      <key>76</key>
      <string>&lt;etx&gt;</string>
      <key>78</key>
      <string>-</string>
      <key>8</key>
      <string>c</string>
      <key>81</key>
      <string>=</string>
      <key>82</key>
      <string>0</string>
      <key>83</key>
      <string>1</string>
      <key>84</key>
      <string>2</string>
      <key>85</key>
      <string>3</string>
      <key>86</key>
      <string>4</string>
      <key>87</key>
      <string>5</string>
      <key>88</key>
      <string>6</string>
      <key>89</key>
      <string>7</string>
      <key>9</key>
      <string>v</string>
      <key>91</key>
      <string>8</string>
      <key>92</key>
      <string>9</string>
  </dict>
  <key>Uppercase</key>
  <dict>
      <key>0</key>
      <string>Q</string>
      <key>1</key>
      <string>S</string>
      <key>10</key>
      <string>#</string>
      <key>11</key>
      <string>B</string>
      <key>114</key>
      <string>&lt;aide&gt;</string>
      <key>115</key>
      <string>&lt;soh&gt;</string>
      <key>116</key>
      <string>&lt;vt&gt;</string>
      <key>117</key>
      <string>&lt;suppr&gt;</string>
      <key>119</key>
      <string>&lt;eot&gt;</string>
      <key>12</key>
      <string>A</string>
      <key>121</key>
      <string>&lt;ff&gt;</string>
      <key>123</key>
      <string>&lt;left&gt;</string>
      <key>124</key>
      <string>&lt;right&gt;</string>
      <key>125</key>
      <string>&lt;down&gt;</string>
      <key>126</key>
      <string>&lt;up&gt;</string>
      <key>13</key>
      <string>Z</string>
      <key>14</key>
      <string>E</string>
      <key>15</key>
      <string>R</string>
      <key>16</key>
      <string>Y</string>
      <key>17</key>
      <string>T</string>
      <key>18</key>
      <string>1</string>
      <key>19</key>
      <string>2</string>
      <key>2</key>
      <string>D</string>
      <key>20</key>
      <string>3</string>
      <key>21</key>
      <string>4</string>
      <key>22</key>
      <string>6</string>
      <key>23</key>
      <string>5</string>
      <key>24</key>
      <string>_</string>
      <key>25</key>
      <string>9</string>
      <key>26</key>
      <string>7</string>
      <key>27</key>
      <string>&lt;deg&gt;</string>
      <key>28</key>
      <string>8</string>
      <key>29</key>
      <string>0</string>
      <key>3</key>
      <string>F</string>
      <key>30</key>
      <string>*</string>
      <key>31</key>
      <string>O</string>
      <key>32</key>
      <string>U</string>
      <key>33</key>
      <string>&lt;?&gt;</string>
      <key>34</key>
      <string>I</string>
      <key>35</key>
      <string>P</string>
      <key>36</key>
      <string>&lt;ret&gt;</string>
      <key>37</key>
      <string>L</string>
      <key>38</key>
      <string>J</string>
      <key>39</key>
      <string>U</string>
      <key>4</key>
      <string>H</string>
      <key>40</key>
      <string>K</string>
      <key>41</key>
      <string>M</string>
      <key>42</key>
      <string>&lt;pounds&gt;</string>
      <key>43</key>
      <string>.</string>
      <key>44</key>
      <string>+</string>
      <key>45</key>
      <string>N</string>
      <key>46</key>
      <string>?</string>
      <key>47</key>
      <string>/</string>
      <key>48</key>
      <string>&lt;tab&gt;</string>
      <key>49</key>
      <string> </string>
      <key>5</key>
      <string>g</string>
      <key>50</key>
      <string>&gt;</string>
      <key>51</key>
      <string>&lt;del&gt;</string>
      <key>52</key>
      <string>&lt;?&gt;</string>
      <key>53</key>
      <string>&lt;esc&gt;</string>
      <key>6</key>
      <string>W</string>
      <key>65</key>
      <string>,</string>
      <key>67</key>
      <string>*</string>
      <key>69</key>
      <string>+</string>
      <key>7</key>
      <string>X</string>
      <key>75</key>
      <string>/</string>
      <key>76</key>
      <string>&lt;etx&gt;</string>
      <key>78</key>
      <string>-</string>
      <key>8</key>
      <string>C</string>
      <key>81</key>
      <string>=</string>
      <key>82</key>
      <string>0</string>
      <key>83</key>
      <string>1</string>
      <key>84</key>
      <string>2</string>
      <key>85</key>
      <string>3</string>
      <key>86</key>
      <string>4</string>
      <key>87</key>
      <string>5</string>
      <key>88</key>
      <string>6</string>
      <key>89</key>
      <string>7</string>
      <key>9</key>
      <string>v</string>
      <key>91</key>
      <string>8</string>
      <key>92</key>
      <string>9</string>
  </dict>
</dict>
</plist>

Une fois le nouveau keymap installé, il vous faut relancer le daemon qui s’occupe d’enregistrer vos touches. Pour ce faire, il vous suffit de taper en ligne de commande sudo launchctl stop com.fsb.logKext pour arrêter le daemon. Ensuite sudo launchctl start com.fsb.logKext pour le démarrer à nouveau.

Mais où sont les logs ?!

J’y arrive ! Pour gérer votre keylogger, il existe une interface en ligne de commande ! Il suffit donc de taper sudo logKextClient

Un premier mot de passe vous est demandé, c’est celui du sudo (pour passer en superutilisateur) et le second est le mot de passe de votre keylogger, par défaut, celui-ci est “logKext” ! Une fois dans l’interface, il suffit de se laisser guider en tapant “help” tout simplement.

La première chose à faire est donc “set Password=MyNewTopSecurePassword”. De là le logiciel vous demande de supprimer vos logs actuels qui sont logiquement dans “/Library/Preferences/com.fsb.logKext”. Un petit rm sur le fichier fera l’affaire ! Ensuite, à tout moment, vous pouvez taper “open” pour déchiffrer vos logs dans un fichier et l’ouvrir !

Désinstaller

Si vous voulez désinstaller le logiciel, il faut exécuter le script “LogKextUninstall.command” qui se trouve à la racine de votre partition mac os x. sudo /LogKextUninstall.command désinstallera le tout. Cependant, notez que dans le client logKextClient vous pouvez simplement désactiver le keylogger. Le garder sous la main et l’activer en temps utile est une solution moins radicale ;)

Conclusion

L’installation et l’utilisation de ce KeyLogger n’est pas des plus triviales, surtout qu’il existe peu de ressources en ligne. J’espère donc vous avoir épargné quelques précieuses minutes de recherche et j’espère que vous en ferez bon usage ! :)

PS: J’ai essayé ce logiciel sous mac os x 10.7, il est logiquement compatible avec toutes les anciennes versions de mac os x.

Comments