Saturday, November 23, 2013

[C++] IPKiller Crasher

BONJOUR !
Voici un Petit outil qui permet de flooder un client IPKiller !

D’éventuelle améliorattions peuvent être proposé !

CODE SOURCE (VISUAL STUDIO 2013 ---> C++):

C++ IPKiller Crasher SOURCE.rar (6.7 MB)
https://mega.co.nz/#!NkZGxAbT!bxfs1wSgMOsbshv6lYrPwzDOuTAkKRJEUgdY9ccncAw

Executable :
MD5 : 65B45509275DDCA02FCF63ECFC490948
SHA-1 : 7932DB9C6BF44CBD22CEB1EB2EA5F18AFAC5D89D
SHA-256 : 15FF3C28888BE9431E2B6A55D8CDACDCE621680564575D175B694F546D7701C9

IPKiller Crasher .exe(9 KB)
https://mega.co.nz/#!R9xChCTA!XtZu_FIqcFlnDZzv35_RdVU_xbsW8kx6GI0BUPaX_Js

Monday, November 11, 2013

[ASM] Keygen Progressive KeygenMe #1

Bonjour , Voici le code source en Assembleur du Keygen pour "Progressive KeygenME #1" : Keygen.asm :  
Keygen.rc :



[ XTX KeygenMe Progressif ]

Hello, Hello,
Je débute ce tutoriel sur un KeygenMe ! Nous allons :
-Analyser le programme
-Trouver la routine de génération du serial
-L'examiner
-Coder un KeyGen
Donc à premières vuee on a un KeygenMe communs autre qu'on aurait pu rencontré ! :
1347659050-img1.png
Nous allons (avec ma méthodologie) lancer le programme, l'observer, taper un faux serial (ex=123456789) Le lancer et voir qu'on tombe sur Un BadBoy (Normal pour l'instant), puis l’ouvrir dans "PEID" afin de trouver un éventuel packer..
Donc ouvrez avec PEID et observez :
1347659051-img2.png
Non pas de PACKER ! nous pouvons remarqué que le programme est en assembleur (car c'est marqué en gros dans PEID ^^) ou
alors en observant le code grâce à Olly !
Les structure de code sont spécifique au langage Assembleur(Question d'habitude).
Bon ! on commence ?? :)
D'abord on va aller chercher tout les Api ! En appuyant sur le Petit Bouton E de la barre d'outil, faire clic droit sur
le nom du programme (1er dans la liste logiquement..) et "View Names" !
Ici il n'y a pas beaucoup d'API :
1347659051-img3.png
Mais Une Seule Nous intéresse ! (GetDlgItemTextA) celle ci permet de récupérer une chaine de caractère depuis une
fenêtre (ex=EDIT,Button, label(static) etc...).
Donc pausons des breakpoint sur tout ces "GetDlgItemTextA" comme ceci :
1347659050-img4.png
Lançons le programme dans olly, remplissez les champs avec votre "name"(pour moi sakiir) et un serial Bidon tel que :
1347659054-img5.png
Là, nous breakons sur un des "GetDlgItemTextA" mais celui ci n'est pas le bon ... il récupère seulement le name.. donc
continuons l’exécution.
Ici, Nous breakons Sur le bon ! celui qui récupère le Serial !
1347659049-img6.png
Donc Normalement en cherchant un petit peu en dessous, on devrait trouver la routine de génération du serial.. :) alors
cherchons !!
On tâtonne, on tâtonne puis on fini par trouver juste après l'API "lstrlenA" qui calcul la longueur d'une chaine (en l’occurrence la longueur de notre serial Bidon.. ;) ).
Puis une vérification de la taille soit :
1347659051-img7.png
On voit : cmp al,14h soit 20d (h=Hexadécimal,d=décimal) et si c'est supérieur ou égal on saute en 4011C3 ! (JGE=jump if greater than or equal to).
1347659052-img8.png
Ici nous avons la routine de génération du serial ! ;) Enfin trouvé x)
Meme si 'ai commenté les lignes et que vous avez compris, je récapitule !
Le serial est généré par rapport au Name(Normal me direz vous), Les Valeur Hexadécimal de Name sont additionné Entre elle, et donne une valeur en Hexadécimal ! (Facile ;))
Bon pour sakiir ça donne : 283 on additionne toutes les valeur en Hexadécimal :
1347660880-img9.png
Bon Compris ? Si non relisez ! ;)
Maintenant je vais vous montrer un exemple de Keygen en C ! ;)
ui marche à tout les coups ! vous pouvez utiliser les Api, ce que vous voulez mais l'algo que je vous donne est correct
!! :) (Vous pourrez Admirer le Jolie Buffer Overflow dans mon Code ! ;) ) :
<iframe src="http://pastebin.com/embed_iframe.php?i=qYasLAuK" style="border:none;width:100%"></iframe>
Voila j’espère que j'ai été clair !!! :) Pour la documentation de ce cour allez voir : ICI

[ Un CrackMe Fastidieux ]

Hello pour un premier article j’ai trouvé pas mal de cracker un « crackme » (que je viens de faire ^^’)

alors commençons !

D’abord nous allons lancer le programme sans arguments, nous obtiendrons la chose suivante qui nous indique qu’il faut mettre un premier argument :

1346240070-img1.png
Nous pouvons donc nous imaginer que la » string » que nous mettrons sera comparer avec le VRAI passe ..

allons donc désassembler la fonction mais a l’aide de GDB (debugger sous Linux):
1346240332-img2.png

Examinons un peu les fonctions utilisé en C !

Il y a strcmp ici :
1346240471-img3.png
Cette fonction en C, permet de comparer 2 chaîne de caractères, donc ici la comparaison du premier argument donné et du vrai password !

allons donc mettre un breakpoint sur l’appel de cette fonction a l’aide de la commande : « b *adressedelappel ». tel que :
1346241793-img4.png
Donc maintenant exécuter le programme avec la commande « r » et donner un argument aléatoire au programme come par exemple : »123456″.

Nous voyons que le programme bloque sur la fonction de comparaison « strcmp ».On voit aussi que la fonction est comme ceci : « strcmp(argv[1],pass) »

1346242129-img5.png
C’est le moment le plus important du cracking de ce crackme fastidieux. Il faut à présent aller regarder nos variables dans le registre ESP !
Pour ceci, exécuter la commande : « x/2x $esp » dans GDB encore ! :)

Cette commande sert à aller afficher les 2 premier octet d’ESP !

Après avoir exécuté cette commande, 3 adresses mémoire s’affiche !

( Nous nous occuperons pas de la première ! )

Donc ouvrons les chaînes de caractères qu’elles contiennent ! ;)

Comment ? grâce à la commande : « x/s adressememoire » !
Pour la première adresse, nous trouverons notre faux passe que l’on a entré avant de breaker !
Et pour la deuxième ? ;)

Aller je vous laisse regarder !
1346246197-imgfinal.png

Merci d’avoir lut et bonne chance pour vos prochains CrackMe !!

[Failles App] Faille de la fonction system()

Bonjour à tous ,
Pour me mettre dans le bain de la Sécurité Applicative, J'ai décidé de faire ce tutoriel sur "la failles system()".

Dans une premiere Partie nous allons voir pourquoi la fontcion system() de la libc, est faillible.

0x1 - Pourquoi la fonction system() est vulnerable :
 Prenons comme exemple le code suivant :
La fonction system a pour argument "ls" , ce qui , executé listera le dossier courant de tout ces fichiers et dossiers. 1er resultat :
[18:19 sakiir@sakiir system] > gcc code.c -o code [18:19 sakiir@sakiir system] > ./code ----- Faille de la fonction Systeme ------ Listing Directory Function code code.c 

[18:20 sakiir@sakiir system] >

Ici, dans le dossier courant on trouve le fichier executable "code" et la source "code.c".
la fonction system va executer l'argument dans le terminal.
essaons donc de mettre un fichier "ls" dans le dossier courant qui affichera "bonjour !" .
Ensuite , nous allons modifier la Variable d'envoronnement PATH , qui est equivalente a celle de windows ..
Exemple sous windows si on met un executable "hola.exe" dans le dossier "system32" , si on tape directement "hola" dans le terminal windows , alors le programme "hola.exe" s'executera.

Sous Linux c'est pareil tout les dossiers inclus dans PATH sont séparé par des ":".
exemple :
[18:23 sakiir@sakiir system] > echo $PATH /usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

[18:26 sakiir@sakiir system] >
Le miens est long , mais peut importe on va le modifier et inclure le dossier courant à la Variable PATH comme ceci :
[18:27 sakiir@sakiir system] > export PATH=.:$PATH [18:27 sakiir@sakiir system] > echo $PATH .:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

[18:28 sakiir@sakiir system] >

/*
"." signifie "DOSSIER COURANT"
*/

ainsi , si on tape "ls" dans le dossier ou se trouve le programme ls , on executera directement le programme "ls" du dossier et non "/bin/ls" .
exemple :

[18:30 sakiir@sakiir system] > /bin/ls
code code.c hello.c ls
[18:30 sakiir@sakiir system] > ls
bonjour !
0x2 - Exploitation dans un exemple :

Dans certains challenge on peut trouver le code suivant :
#include <stdio.h>
int main()
{
   system("ls /dossier/dossier/flag");
}
Dans ce challenge on aurai uniquement acces en ecriture au dossier "/tmp/" , nous allons donc ajouter à la variable PATH le dossiser tmp comme ceci

[18:36 sakiir@sakiir system] > export PATH=/tmp/:$PATH
[18:36 sakiir@sakiir system] > echo $PATH
/tmp/:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
[18:36 sakiir@sakiir system] >

Voici ! Smile
Vous devinerez que cette fois ci, il faudra créer un programme dans le dossier tmp.
ce que j'ai fais , moi , c'est tout simplement exécuter ce code la :
cp /bin/cat /tmp/ls
Donc ici le programme cat est dans tmp avec le nom "ls".

Merci d'avoir prété intention à mon "Tutoriel" et à bientot !! Smile

[ Python ] URLLIB --> Http Scan

Bonjour à tous , pour me remettre un petit peu dans le bain de la pythonnerie et du web j'ai programmé plusieurs programme .
Donc voici en un , ce programme va chercher des mot dans une "wordlist" et les met apres l'url donnée en argument en programme .