• STATISTIQUES
  • Il y a eu un total de 2 membres et 7846 visiteurs sur le site dans les dernières 24h pour un total de 7 848 personnes!


    Membres: 2 605
    Discussions: 3 580
    Messages: 32 820
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [FR] µContest
    µContest est un site de challenges de programmation, c'est à dire qu'il propose des épreu...
    Hacking
    [EN] Exploit-db
    Une base de données d'exploits triés par genre (GHDB, Remote, Local, Web, DOS, ShellCode) à ...
    Vulnérabilités
    [EN] Security Traps
    Site de challenge qui prétend être construit non pas dans le but de parfaire vos connaissances, mais plutôt dan...
    Challenges
    [EN] phrack
    Lot's of stuff !
    Hacking
    [EN] Listbrain Version 3
    Site proposant 66 challenges présentés dans une liste mélangée.
    Challenges
    [FR] Infomirmo
    Challenge présenté sous la forme de 6 niveaux de difficultés diverses et variées avec chacun plusieurs chall...
    Challenges
    [EN] HackQuest
    Logic: 12, JavaScript: 14, Applet: 6, CrackIt: 13, Crypto: 11, Internet: 3, Exploit: 7, Stegano: 12, Flash: 1, Programmi...
    Challenges

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[C] Extracteur de panel iStealer
15-02-2012, 23h02 (Modification du message : 23-10-2013, 16h24 par Di0Sasm.)
Message : #1
supersnail Hors ligne
Éleveur d'ornithorynques
*******



Messages : 1,610
Sujets : 72
Points: 466
Inscription : Jan 2012
[C] Extracteur de panel iStealer
Bonjour à tous,

Certains le savent peut-être, j'ai travaillé il y a quelque temps sur le reversing de stubs d'un malware appelé iStealer, dont le but est de récupérer les mots de passe stockés sur le PC de la victime et de les envoyer à l'attaquant via un panel web.

Le but de ce code est de justement extraire l'URL du panel où le stub iStealer va renvoyer les données (pour ensuite faire fermer le compte par l'hébergeur et empêcher le lamer de nuire).

Bref, voici le code, je vous laisse l'étudier Smile

Code C :

#include <windows.h>
#include <stdio.h>

/**
 *  by aaSSfxxx
 *  Usage: pwnz-istealer.exe c:\path\to\executable
 *  Works with Windows, Linux & MacOS under Wine
**/


//Prototypes
void unxor(char* chr);
char* locate_str(char *data);

int main(int argc, char** argv)
{
        int exe_ptr = 0;
        char *cfg;
       
        printf("iStealer extractor by aaSSfxxx\r\n");
        printf("This tool is provided to detect and get data from an iStealer spywares.\r\n");
        printf("This program is under BeerWare licence.\r\n");
        //If no executable, exiting.
        if(argc == 1)
        {
                printf(" Executable path needed ! Exiting.\r\n");
                return 0;
        }
       
        //Loads executable in memory
        printf(" [+] Loading executable\r\n");
        exe_ptr = (int)LoadLibrary(argv[1]);
        if(exe_ptr == 0) {
                printf(" [-] Load failed, aborting.\r\n");
                return 0;
        }
       
        //Check if executable is istealer (weak checking)
        printf(" [+] Checking if executable is a iStealer stub... \r\n");
        if(memchr((void*)exe_ptr, 0x454d5201, 0x40000) == NULL) {
                printf (" [-] Not an iStealer program (maybe encrypted?)\r\n");
                return 0;
        }
       
        //Okay, do it!
        //Extracting resources
        int hRes = (int)FindResource((HMODULE)exe_ptr, "#1", RT_RCDATA);
        if (hRes == 0)
        {
                printf(" [-] Unable to extract resource!\r\n");
                return 0;
        }
        cfg = (char*)LoadResource((HMODULE)exe_ptr, (HANDLE)hRes);
        printf(" [+] Encrypted host is %s \r\n",locate_str(cfg));
       
        unxor(locate_str(cfg));
        printf(" [+] Decrypted host is %s \r\n",locate_str(cfg));
}

char* locate_str(char *data)
{
        int i;
        for(i=0;i<40;i++)
        {
                if(data[i] != 0 && data[i]!=1)
                        return data + i;
        }
        return data;
}

void unxor(char* chr)
{
        unsigned long i;
        for (i=0; i<strlen(chr); i++)
                chr[i] ^= (char)((i % 5) + 1);
}
 
+1 (0) -1 (0) Répondre
16-02-2012, 04h41
Message : #2
fr0g Hors ligne
NTEuNDI2MzcsLTEuNzc4NDg4
*****



Messages : 348
Sujets : 22
Points: 56
Inscription : Aug 2011
RE: Extracteur de panel iStealer
Nice dude , bon boulot Smile
+1 (0) -1 (0) Répondre
18-02-2012, 22h50 (Modification du message : 18-02-2012, 22h50 par InFamouZz.)
Message : #3
InFamouZz Hors ligne
Membre actif
*



Messages : 76
Sujets : 21
Points: 3
Inscription : Dec 2011
RE: Extracteur de panel iStealer
merci beaucoup je me fais chier a decompiler en hexa les serveurs a chaque fois pour essayer de relancher les logsBlush
ce tool va me servire
merci beaucoup Smile
+1 (0) -1 (0) Répondre
20-02-2012, 00h33 (Modification du message : 24-02-2012, 23h13 par fr0g.)
Message : #4
fr0g Hors ligne
NTEuNDI2MzcsLTEuNzc4NDg4
*****



Messages : 348
Sujets : 22
Points: 56
Inscription : Aug 2011
RE: Extracteur de panel iStealer
Tiens , histoire de compléter le sujet, un petit script bidon envoyant des requêtes au panel iStealer pour le blinder de spams en tous genres:

[EDIT] dans le cas présent mon code parcours une wordlist et envoie le contenu de la wordlist au panel.

Code Python :
Code PHP :
#coding=utf-8
import urllib


# la variable j est limitée à 18 car istealer gere 18 logiciels differents
# pour ses logs, 0 est egal a un logiciel, 1 a un autre (exemple : 10 = firefox)



url "votre_url_de_panel"     # Url du panel iStealer

open("list.txt","r")        # nom de la wordlist (un mdp par ligne)
0                    # declaration de i et initialisation a 0
for line in f:                # pour chaque ligne dans le fichier f (la wordlist)
    
0                # declaration et initialisation de j a 0
    
while <= 18:            # tant que j est plus petit ou egal à 18
        
urllib.urlopen(url+"/?action=add&a="+str(j)+"&p="+line+"&u="+line+"&c="+line+"&l="+line# requete GET avec en paramètres la ligne de la wordlist
        
print "Req num : "+str(i)                                 # affichage du numero de la requete
        
+= 1                                                
        i 
+= 1                                            # incrementation de i & j 
+1 (0) -1 (0) Répondre
20-02-2012, 10h52
Message : #5
supersnail Hors ligne
Éleveur d'ornithorynques
*******



Messages : 1,610
Sujets : 72
Points: 466
Inscription : Jan 2012
RE: Extracteur de panel iStealer
Uep, j'en avais codé un à l'arrache en JS, mais en py c'est plus classe :þ

Par contre, iStealer a une (minable) protection contre le flood, mais il faut mettre une valeur qui change sur au moins l'un des champs Wink
+1 (0) -1 (0) Répondre
24-02-2012, 23h12 (Modification du message : 24-02-2012, 23h13 par fr0g.)
Message : #6
fr0g Hors ligne
NTEuNDI2MzcsLTEuNzc4NDg4
*****



Messages : 348
Sujets : 22
Points: 56
Inscription : Aug 2011
RE: Extracteur de panel iStealer
J'ai modifié ça, pour que les infos changent régulièrement (wordlist ^^) (le code à été édité Smile )

pi j'ai rendu ça plus propre Smile
+1 (0) -1 (0) Répondre
08-03-2012, 22h46
Message : #7
Kiwazaru Hors ligne
Padawan d'un super escargot
*



Messages : 284
Sujets : 26
Points: 139
Inscription : Mar 2012
RE: Extracteur de panel iStealer
Super boulot, çà me donne encore plus envie de continuer mon ascension dans le langage C ! Big Grin
Toucher au Kernel, c'est un peut comme se shooter au LSD, on pense pouvoir tout faire mais ça finit souvent mal.
+1 (0) -1 (0) Répondre
23-09-2012, 19h59
Message : #8
sakiir Hors ligne
[sakiir@Ubuntu]:~$ ./ExploitMe ShellC0de
*



Messages : 411
Sujets : 51
Points: 34
Inscription : Sep 2012
RE: Extracteur de panel iStealer
ahhh pas mal ! bon boulot
+1 (0) -1 (0) Répondre
23-10-2013, 15h15 (Modification du message : 23-10-2013, 15h16 par sakiir.)
Message : #9
sakiir Hors ligne
[sakiir@Ubuntu]:~$ ./ExploitMe ShellC0de
*



Messages : 411
Sujets : 51
Points: 34
Inscription : Sep 2012
RE: [C] Extracteur de panel iStealer
Un ptit up ! j'aimerais savoir comment tu sais si c'est un exe istealer ?
j'ai pas bien compris ça :
Code C :
  //Check if executable is istealer (weak checking)
    printf(" [+] Checking if executable is a iStealer stub... \r\n");
    if(memchr((void*)exe_ptr, 0x454d5201, 0x40000) == NULL) {
        printf (" [-] Not an iStealer program (maybe encrypted?)\r\n");
        return 0;
    }
+1 (0) -1 (0) Répondre
23-10-2013, 16h53
Message : #10
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: [C] Extracteur de panel iStealer
(23-10-2013, 15h15)sakiir a écrit : Un ptit up ! j'aimerais savoir comment tu sais si c'est un exe istealer ?
j'ai pas bien compris ça :
Code C :
  //Check if executable is istealer (weak checking)
    printf(" [+] Checking if executable is a iStealer stub... \r\n");
    if(memchr((void*)exe_ptr, 0x454d5201, 0x40000) == NULL) {
        printf (" [-] Not an iStealer program (maybe encrypted?)\r\n");
        return 0;
    }

en fait tout est dans la fonction memchr()
il cherche dans les 0x4000 premiers octets du buffer exe_ptr la signature 454d5201, si il ne la trouve pas il part du principe que ce n'est pas un executable iStealer
Avant donc que d'écrire, apprenez à penser.
Selon que notre idée est plus ou moins obscure, l'expression la suit, ou moins nette, ou plus pure.
Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément.
(Nicolas Boileau, L'Art poétique)
+1 (1) -1 (0) Répondre
23-10-2013, 16h56 (Modification du message : 23-10-2013, 16h58 par thxer.)
Message : #11
thxer Hors ligne
:(){ :|:&amp; };:
*



Messages : 382
Sujets : 60
Points: 162
Inscription : Feb 2013
RE: [C] Extracteur de panel iStealer
Yop si j'ai bien suivit :
http://manpages.ubuntu.com/manpages/rari...chr.3.html
'La fonction memchr() examine les n premiers octets de la zone mémoire pointée.'
Donc il cherche 'c' soit : 0x454d5201 dans le .exe
Donc si il n'y a pas cela iStealer ne doit pas être présent, à moins qu'il soit packed.

J'espère avoir bien compris :p

Edit : j'étais en train de rédiger ... XD bah cf gruik (ça fait un peu bête du coup)
Thxer.com
Twitter Thxer_

Code BASH :
echo "JkZ Palx" | sed 'y/lPZaJxk/MG3@tEH/'




+1 (0) -1 (0) Répondre
23-10-2013, 17h20 (Modification du message : 23-10-2013, 17h21 par sakiir.)
Message : #12
sakiir Hors ligne
[sakiir@Ubuntu]:~$ ./ExploitMe ShellC0de
*



Messages : 411
Sujets : 51
Points: 34
Inscription : Sep 2012
RE: [C] Extracteur de panel iStealer
Mais alors est-ce que c'est hazard que je trouve 4000 en Hexa dans l'editeur ASCII environ à l'adresse 0x454d5201 ?
[Image: 1382541547-caca.png]

(23-10-2013, 16h53)gruik a écrit :
(23-10-2013, 15h15)sakiir a écrit : Un ptit up ! j'aimerais savoir comment tu sais si c'est un exe istealer ?
j'ai pas bien compris ça :
Code C :
  //Check if executable is istealer (weak checking)
    printf(" [+] Checking if executable is a iStealer stub... \r\n");
    if(memchr((void*)exe_ptr, 0x454d5201, 0x40000) == NULL) {
        printf (" [-] Not an iStealer program (maybe encrypted?)\r\n");
        return 0;
    }

en fait tout est dans la fonction memchr()
il cherche dans les 0x4000 premiers octets du buffer exe_ptr la signature 454d5201, si il ne la trouve pas il part du principe que ce n'est pas un executable iStealer

Et je ne coprend pas vraiment ce que tu appelles Signature ?? :/
+1 (0) -1 (0) Répondre
23-10-2013, 17h22 (Modification du message : 23-10-2013, 17h28 par thxer.)
Message : #13
thxer Hors ligne
:(){ :|:&amp; };:
*



Messages : 382
Sujets : 60
Points: 162
Inscription : Feb 2013
RE: [C] Extracteur de panel iStealer
Oui je pense Smile , ce n'est pas la signature on cherche 45 4d 52 01

Si tu ouvres un éditeur hexa et que tu cherche la valeur : 45 4d 42 01 cela revient au même.
et c'est 40 00 que tu dis or toi tu as 04 00 00. Soit en hex : 40 00 00 != 04 00 00.
Thxer.com
Twitter Thxer_

Code BASH :
echo "JkZ Palx" | sed 'y/lPZaJxk/MG3@tEH/'




+1 (0) -1 (0) Répondre
23-10-2013, 17h22
Message : #14
sakiir Hors ligne
[sakiir@Ubuntu]:~$ ./ExploitMe ShellC0de
*



Messages : 411
Sujets : 51
Points: 34
Inscription : Sep 2012
RE: [C] Extracteur de panel iStealer
Mais alors comment supersnail à eu l'idée de faire se bout de code ? comment a t'il sut que c'etait ca qu'il fallais utiliser ?
+1 (0) -1 (0) Répondre
23-10-2013, 17h28 (Modification du message : 23-10-2013, 17h50 par thxer.)
Message : #15
thxer Hors ligne
:(){ :|:&amp; };:
*



Messages : 382
Sujets : 60
Points: 162
Inscription : Feb 2013
RE: [C] Extracteur de panel iStealer
Tiens Wink
http://www.garykessler.net/library/file_sigs.html

Exemple signature d'un JPEG : FF D8 FF E0
C'est grâce à cela que tu sais que c'est une JPEG et que tu la lis comme il faut.

Mais ici c'est pas pareil, mais le principe est là.
Une suite Hexa qui permet d'identifier en tant que ...
Thxer.com
Twitter Thxer_

Code BASH :
echo "JkZ Palx" | sed 'y/lPZaJxk/MG3@tEH/'




+1 (0) -1 (0) Répondre


Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  [MASM] Extracteur de dll pour Backdoor.Win32.Papras Horgh 10 319 25-04-2013, 13h41
Dernier message: Kiwazaru

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut