logo Homepage
+  NewbieContest
Username:
Password:
  Voir les messages
Pages: 1 2 3 [4] 5 6
46  Divers / Cracking / Injection de DLL dans un process le: 08 Août 2016 à 16:36:43
Salut,

J'essaye de coder un "injecteur" de DLL et je me trouve confronté à un problème : ça ne marche que dans un cas.
Mes connaissances en Windows étant quelque peu limitées, à l'aide ! ^^

J'ai trois fichiers :
- test.exe : le binaire dans lequel je veux faire l'injection (en l'occurrence il affiche une fenêtre vide même si ça n'a aucune importance)
- test.dll : la DLL que je veux injecter (elle affiche une MessageBox dans DllMain juste pour que je vois facilement que l'injection est OK)
- inject.exe (cf. plus bas pour le code) : le binaire qui fait l'injection
A l'origine, chacun de ces fichiers était dans un sous-dossier (i.e. un dossier pour chaque code, logique).

Mon inject.exe prend deux arguments : le binaire de test et la DLL.
Pour tester, je lance à la main "test.exe" puis j'exécute en console le inject.exe.

Ma première tentative a été : inject\inject.exe bin_test\test.exe dll_test\test.dll
=> il ne trouve pas le PID de test.exe (normal, il cherche "bin_test\test.exe"...)

Du coup, seconde tentative plus logique : inject\inject.exe test.exe dll_test\test.dll
=> il trouve le PID de test.exe, mais pas de MessageBox

Après pas mal de n'importe quoi j'en suis arrivé à constater que *il faut que test.exe soit dans le dossier courant*.
Autrement dit, il ne faut pas le path pour pouvoir récupérer le PID mais il faut le path pour que l'injection réussisse oO
Etant donné que le nom du fichier de test sert uniquement (ou pas du coup ?) à récupérer le PID, me voila perdu.

Si quelqu'un a une explication, je suis preneur !
Merci d'avance

----

Note : pour simplifier au maximum j'ai supprimé les tests sur l'input + sur les valeurs de retour (elles sont toutes testées et je n'ai aucune erreur btw).

Code:
#include <windows.h>
#include <tlhelp32.h>
#include <stdio.h>

static DWORD GetProcessPID(char * processName)
{
    /* take a snapshot of running processes */
    HANDLE hProcessesSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

    PROCESSENTRY32 pe32;
    pe32.dwSize = sizeof(PROCESSENTRY32);

    /* get the first running process */
    Process32First(hProcessesSnapshot, &pe32);

    /* loop on the running processes: if we find the target then get its PID */
    DWORD targetPID = 0;
    do
    {
        if(strcmp(pe32.szExeFile, processName) == 0)
        {
            targetPID = pe32.th32ProcessID;
            break;
        }
    }
    while(Process32Next(hProcessesSnapshot, &pe32));

    CloseHandle(hProcessesSnapshot);
    return targetPID;
}

int main(int argc, char * argv[])
{
    char * target = argv[1];
    char * dllPath = argv[2];

    /* get a handle on the target process */
    DWORD dwTargetPID = GetProcessPID(target);
    HANDLE hTargetProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwTargetPID);

    /* allocate memory for the injection */
    void * pReservedSpace = VirtualAllocEx(hTargetProcess, NULL, strlen(dllPath), MEM_COMMIT, PAGE_EXECUTE_READWRITE);
    WriteProcessMemory(hTargetProcess, pReservedSpace, dllPath, strlen(dllPath), NULL);

    /* get the address of 'LoadLibraryA' function from kernel32.dll */
    HMODULE hModuleKernel32 = GetModuleHandle("kernel32");
    LPTHREAD_START_ROUTINE pLoadLibrary = (LPTHREAD_START_ROUTINE) GetProcAddress(hModuleKernel32, "LoadLibraryA");

    /* create a remote thread which executes the DllMain function of the injected DLL */
    HANDLE hThread = CreateRemoteThread(hTargetProcess, NULL, 0, pLoadLibrary, pReservedSpace, 0, NULL);

    /* wait until the thread returns*/
    WaitForSingleObject(hThread,INFINITE);

    /* clean and exit */
    VirtualFreeEx(hTargetProcess, pReservedSpace, strlen(dllPath), MEM_COMMIT);
    CloseHandle(hTargetProcess);
    exit(EXIT_SUCCESS);
}
47  Général / Defouloir / Re : Challenge de l'été... Ransonware zepto le: 05 Juillet 2016 à 19:39:08
Salut,
Sous réserve que j'ai bien compris, il y a "Locky" mais aussi un "AutoLocky".
Pour le premier, ou tu payes ou c'est mort (désolé :s) mais pour l'autre tu peux déchiffrer les fichiers.
Va voir ici : http://news.softpedia.com/news/decrypter-available-for-autolocky-locky-ransomware-copycat-503053.shtml
48  Challenges / Aide Forensics / Re : Forensics - Hostname le: 04 Juillet 2016 à 15:05:34
Pour information, je précise juste que les épreuves, bien que présentées par "étapes", sont indépendantes donc tu peux effectivement les résoudre dans n'importe quel ordre
49  Challenges / Aide Forensics / Re : Forensics - Mot de passe oublié le: 04 Juillet 2016 à 15:02:37
Salut,

Je n'oserais pas dire que c'est une question bête, d'autant plus que je me souviens pas trop de tout ça (avec l'âge, les problèmes de mémoire... ).
Si je ne me trompe pas il s'agit ici du compte avec lequel tu te logues /* moderated par the lsd : ah ouais mais ça file un hint de fou ça en fait ^^' */

Pech.
50  Challenges / Aide Forensics / Re : Forensics - Mot de passe oublié le: 10 Mai 2016 à 15:49:05
Salut,
Est-ce qu'il est nécessaire d'avoir le même OS (version majeure + arch) pour résoudre ce challenge ou c'est faisable à la main en cherchant au bon endroit ?
51  Général / Sondage pour le site / Re : Trop d'épreuves sur NC ? le: 26 Avril 2016 à 18:42:17
De mon point de vue, mis à part la catégorie Logique que j'évoquerai ci-dessous, rien ne doit être supprimé : le nom du site est *newbie*contest, donc à moins que je sois complètement à côté de la plaque le site s'adresse dès les premières épreuves à ceux qui n'y connaissent rien (ou presque) !

Pour ce qui est des challs de logique, il m'est arrivé de nombreuses fois de trouver des raisonnements tout à fait logiques sans que ça valide (et je ne suis pas le seul au vu des discussions).
C'est frustrant puisque ça introduit une dose de "chance" : il faut tomber sur la bonne logique parmi toutes celles permettant de trouver une solution :s

En passant, concernant les client side, c'est clairement IMHO la catégorie la plus simple (excepté le dernier chall) et je ne serais pas du tout surpris que ce soit celle où le pourcentage de validations est le plus élevé. De ce fait, il serait effectivement intéressant d'y ajouter de nouveaux challs plus compliqués (mais, désolé, je ne peux pas aider).
52  Général / Général / Re : Re : Re : Le Forensic ! késkecé keca ?! le: 25 Avril 2016 à 23:31:19
Merci Pech pour ton savoir !
si d'autre veulent en parlez n'hesitez pas !

Mon "savoir", c'est un peu excessif mais de rien quand même
Il serait effectivement intéressant d'avoir l'avis de quelqu'un travaillant dans le forensic (il doit bien y en avoir au moins un sur NC !) puisque ce n'est pas mon cas.
J'ai juste été confronté à des "cas support", autrement dit des clients qui appellent le support pour rapporter de potentiels bugs (par exemple) dans le produit qu'on leur a vendu.
Reste alors à pleurer quand on arrive pas à reproduire malgré les infos qu'il nous donne parce que là c'est pas gagné pour résoudre le problème

(oui, je sais, je lance l'éternel troll du "ce chall il aurait sa place dans une autre catégorie" ^^)

CA TOMBE BIEN, ON A UNE CATEGORIE SPECIALE POUR CE GENRE DE CHALLS MAINTENANT \o/


Et le chall a été déplacé ! Victoire \o/
53  Général / Général / Re : Le Forensic ! késkecé keca ?! le: 20 Avril 2016 à 13:42:15
Salut,
Je définirais le forensic comme l'analyse d'un évènement après qu'il se soit produit.
Par exemple, dans le cadre d'une attaque informatique, on va chercher à comprendre comment elle a eu lieu, comment faire pour qu'elle ne se produise pas de nouveau, qui en est le coupable, etc.
Pour cela, on peut entre autres se baser sur les logs (c'est d'ailleurs pour ça qu'il est important de les conserver !).
Un exemple assez complet est le challenge "Analyse d'attaque" ici présent : https://www.newbiecontest.org/index.php?page=epreuve&no=182
(oui, je sais, je lance l'éternel troll du "ce chall il aurait sa place dans une autre catégorie" ^^)
54  News / News du site / Re : Re : Re : Newbie Contest : la version 5 le: 15 Avril 2016 à 17:02:18
3/ Je suis pas contre l'idée, je vois juste pas trop l'intérêt ^^' Une fois que tu as validé le chall, pourquoi tu veux revenir dessus ? Les afterwards ?

Exact, les afterwards
J'admets qu'il suffit d'un clic pour y retourner à partir de la liste de challs dans la catégorie mais je suis fainéant !
Plus sérieusement, ce lien est présent sur la page qui s'affiche après validation donc pourquoi celle-là mais pas l'autre ? (je vois arriver la réponse détestée "c'est historique" T_T)
55  News / News du site / Re : Newbie Contest : la version 5 le: 15 Avril 2016 à 16:06:40
Salut,

Avant tout, félicitations !

Un p'tit bug pas bien grave : quand je mets la souris sur la partie "Informations" ça fait apparaitre l'avatar (jusque là, pas de problème).
Mais si je scroll *sans bouger la souris* alors l'avatar reste visible, "recouvre" le côté droit de la page et c'est impossible (?) de le faire disparaitre.
Seule solution, remonter et passer de nouveau la souris sur les infos.

Autre chose (là c'est juste mon avis, à toi de voir) : pourquoi mettre la liste des gens connectés tout en bas (i.e. à l'endroit où -probablement- personne regarde) plutôt que dans la colonne de droite ?

Pendant que j'y suis, si t'as un peu de temps à perdre (c'était déjà le cas avant) : quand on valide une épreuve et qu'on vote, il n'y a pas le lien "revenir à l'épreuve" (qui est présent avant le vote).
Quoi ? J'abuse ? :p

Pech.

PS : si nécessaire => Win10 (snif...) + Firefox 45.0.2 (dernière version)
56  Général / Général / Re : Petit problème lors de mes débuts le: 04 Avril 2016 à 15:33:56
Salut,

Ainsi que l'a rappelé LoopString, scanner les ports d'une "victime" (comme tu dis) est illégal sauf si il/elle t'y autorise.
Si c'est le cas, cette personne pourra se charger de te donner son IP, non ?

Pech.
57  Challenges / Aide Programmation / Re : Prog - Bonne Pioche le: 29 Février 2016 à 17:58:11
Non.

(Désolé, la tentation était trop forte)

Grrr...
Bravo quand même, je l'avais pas vue venir celle-là 
58  Challenges / Aide Programmation / Re : Prog - Bonne Pioche le: 29 Février 2016 à 17:31:38
Je ne pense pas que quelqu'un ait déjà posé la question donc je tente : y a-t-il quoi que ce soit d'aléatoire dans la génération de l'image (en dehors du choix de la chaîne de caractères) ?
Pour présenter les choses autrement, est-ce qu'une chaîne donnée générera toujours la même image ?
59  Challenges / Aide Programmation / Re : Prog - Bonne Pioche le: 23 Février 2016 à 18:08:30
Salut,

En tout cas je n'ai pas compris le rapport avec la pioche
N'aurais-je pas écrit quelque chose sur le sujet le 8 janvier 2009 à 20:13:50 ?
Mais où est-donc ce message ?
60  Challenges / Aide Forensics / Re : Re : Hacking - Analyse d'attaque le: 13 Août 2015 à 15:13:57
Non, mais ça ne donne pas d'indices/informations qui aident à la résolution de l'épreuve, donc pas de soucis

PS : Ces deux lignes de log ont déjà été citées dans ce forum

OK pour moi
J'avoue ne pas avoir lu tous les messages ici, uniquement les tous derniers.
Pages: 1 2 3 [4] 5 6