EMET failed

Il y a quelques jours, la team MSRC de Microsoft a sortit EMET (Enhanced Mitigation Evaluation Toolkit). Un outil aidant à la gestion des différentes protections fournies par Windows, comme le DEP. Je me suis dit qu’il serait intéressant d’y jeter un oeil pour voir si toutes les protections mises en place sont solides.
(suite…)

Post Category: RE

12 comments novembre 1st, 2009 at 10:25 admin

ProcessIoPortHandlers

Ce post décrit une feature du noyau NT très peu documentée, la gestion des I/Os d’un process tournant sous V8086. Je vous conseille d’abord de (re)lire ce post qui discute de la gestion des exceptions et interruptions d’un processus 16 bits, faites attention notamment aux différents endroits ou le noyau prend la main pour gérer ces évènements, notamment pour une émulation par l’API win32 ou bien pour une reinjection en virtual mode.

Peut-être que certains l’on remarqué en lisant les .h du WDK, notamment le fichier %DDK_INC_PATH%\ntddk.h, dans l’enum PROCESSINFOCLASS on peut voir l’identifiant ProcessIoPortHandlers avec un commentaire à coté disant qu’il est accessible uniquement en KernelMode. Ce qui est marrant c’est que même googlant dessus on ne trouve pas grand chose d’intéressant (j’ai p-e mal cherché btw !). Ce post à pour but de montrer quel est son rôle et comment l’utiliser, nous arrivons ainsi à mettre en place un moyen de communication assez original entre notre process et le noyau qui change des IOCTLs et autres appels systèmes tellement classiques :]
(suite…)

Post Category: RE

8 comments septembre 26th, 2009 at 03:16 admin

Debugging with LEDs

Dans la série ‘j’touche le fond et je creuse encore ! ‘ je vous propose une méthode sympa pour debugger vos codes critiques. Récemment j’ai été amené à dev du code noyau tournant dans un contexte critique par rapport à l’OS. Comprendre par là que je tournait à des IRQL >= DIRQL, comme si j’étais dans une Interrupt Service Routine (ISR) déclénché par une interruption extérieur. Dans ces cas lorsqu’on veut débugger ces routines on ne peut pas forcément utiliser des fonctions comme DbgPrint ou KdPrint, même si la doc dit que c’est possible on perd beaucoup en performances et si comme moi vous debuggez votre machine depuis la liaison série l’OS se retrouve vite à genoux.

Alors après on peut très bien me dire de mettre des message de debug en queue et de les envoyer dans un worker thread qui balancera des DbgPrint à un IRQL de PASSIVE_LEVEL, ce n’est pas difficile à implémenter c’est juste que je n’avais pas envie de faire. de la même manière, mettre des breakpoints dans le code ou bien à l’aide du kernel-debugger n’est pas forcément très pratique non plus vu que l’OS notifiera à chaque fois le debugger dès qu’il en verra un.

De plus j’avais juste besoin de savoir si un codepath particulier était prit donc un simple signal me disant « oui ou non » me suffisait. Je me suis dit entre 2 trolls sur IRC concernant l’OS des barbus (qui ne marche pas très bien apparemment) qu’utiliser les LEDs du clavier comme signal pourrait être une solution, certes bizarre, mais efficace.

L’idée est simple, il s’agit juste de demander au code de faire clignoter une LED à un moment précis. Dans un premier temps je me suis donc documenté rapidement sur le contrôleur clavier i8042 pour savoir que 2 I/Os port sont utilisés :

  • Le Read-input buffer sur 1 byte. Port 0×60
  • Le Write-ouput buffer, 1 byte. Port 0×60
  • Le Status-register, 1 byte uniquement accessible en lecture. Port 0×64
  • Le Control-register, 1 byte en lecture/écriture.

Pour le controleur i8042 le Read-input et Write-ouput sont en fait confondus. Le Control-register quand à lui est uniquement accessible en envoyant une commande sur le Status-register qui sert alors de byte de commande lorsqu’on l’écrit. Attention il s’agit alors d’une commande pour le contrôleur clavier et non le clavier lui même !

Justement, la commande qui m’intéresse est celle qui permet de définir les LEDS clavier. Après quelques recherches sur le net je tombe sur The PS/2 Keyboard Interface et The AT Keyboard Controler. La commande qui m’intéresse est donc ’0xED (Set/Reset LEDs)’, comme il s’agit du clavier nous devons écrire cette commande dans le Write-ouput buffer

  • Si 1, SROLL_LOCK est allumée. Éteinte sinon.
  • Si 1, NUM_LOCK est allumée. Éteinte sinon.
  • Si 1, CAPS_LOCK est allumée. Éteinte sinon.
  • Maintenant il ne reste plus qu’a envoyer la commande puis les données. Ce qui se traduit en asm par :

    #define KBD_DATA        0x60    // I/O port for keyboard data
    #define KBD_STATUS      0x64    // I/O port for keyboard status (read)
    
    #define KBD_CMD_SET_LEDS        0xED    // Set keyboard leds
    
    #define SCROLL_LOCK 1
    #define NUM_LOCK 2
    #define CAPS_LOCK 4
    
    xor eax, eax
    mov al, KBD_CMD_SET_LEDS
    out KBD_DATA , al
    mov al, Leds
    out KBD_DATA, al
    

    Oulà, pas trop vite, on oublie que pour écrire dans le Write-ouput buffer il faut d’abord attendre que le controleur nous dise que nous pouvons le faire. Pour cela il faut que le bit 1 du Status-register soit à 0, de plus pour une lecture il faut que le bit 0 soit à 1. On doit donc poller le Status-register afin de savoir quand on peut lire ou écrire le port 0×60. La routine est donc simplement :

    kbd_wait:
    in al, KBD_STATUS
    test al, 2
    jne kbd_wait
    ret
    

    Pour tester au lieu de me faire chier directement avec un driver, j’ai demandé à ce que l’IOPL de mon process soit modifié, pour Windows il faut que le token du process possède le privilège SeTcbPrivilege. Celui-ci peut être attribuer en allant dans Panneau de configuration -> Outils d’administration -> Stratégie de sécurité locale -> Stratégies locales -> Attribution des droits utilisateurs et en ajoutant votre utilisateur dans la stratégie « Agir en tant que partie du système d’exploitation » (après avoir ajouter votre user il faut vous que relanciez votre session).

    Je vous laisse les sources maintenant à vous de vous amuser avec, en tout cas cela m’a bien servit dans mon driver pour tracer mon code.

    Vous trouverez les sources ici :

    http://ivanlef0u.fr/repo/kbd-leds.rar

    Sinon quelques liens à lire :

    Updates: Autoruns v9.53, ProcDump v1.3, Process Monitor v2.6 | New Mark’s Blog post: The Case of the Temporary Registry Profiles | Download Windows Internals 5 sample chapter

    VMWare Cloudburst

    VMware ring3 detection (RF handling)

    Preventing the exploitation of user mode heap corruption vulnerabilities

    Post Category: RE

    11 comments août 14th, 2009 at 03:27 admin

    Wiki Oldschool

    Omg j’ai retrouvé l’url de mon blog, je m’en veux d’avoir été absent si longtemps mais j’avais d’autres projets. Vous allez rire mais depuis quelques temps je suis complètement absorbé par des challenges linux. Ce sont les challenges de intruded et de overthewire, il s’agit d’exploiter des failles applicatives sur différentes binaires. On se connecte en ssh sur le serveur et le binaire level-n est SUID level-n+1 ainsi lorsqu’on arrive à lancer un /bin/sh on peut aller lire le fichier qui contient le password du level suivant.

    En fait, je dépose les soluces sur le wiki de Oldschool avec d’autres on essaye de réussir le plus de levels possibles. C’est uniquement dans le but d’apprende et de partager le plus de techniques d’exploitation puis tant qu’à faire, motiver d’autres personnes a faire ces challenges. Autant clarifier les choses, si vous criez au sploil n’aller pas sur le site et ne venez pas couiner !

    Je me suis surtout concentré sur les levels de Utumno et de Maze, des serveurs de intruded. Certains sont vraiment intéressants comme ce BOF dans lequel on ne contrôle qu’un saved ebp ou bien même ce heap overflow sous l’allocateur ptmalloc. Ca reste assez classique mais ca fait toujours du bien de se creuser la tête dessus et ca me change de Windows ;)

    Sinon, IDT Sniffer marche, je n’ai plus qu’à finir l’interface avec l’user-land et la gestion du filtrages des exceptions avant de le release.

    Enfin je vous propose du bon hardcore avec le groupe The Carrier et ‘Panicstricken’ de leur album ‘One Year Later’.

    Panicstricken

    I chose death over life, wanted to meet my maker I was dying inside.
    Pain too great to deal with me made me try to take my life. But now I’ve seen the light, I’ve got a second chance at life.

    I’m not retracting my old tracks.
    I’m never going back.
    To the locked doors and the blinding lights and the uncertainty of whether or not it will be a good or bad day. I never want to wonder what life would be like without me in it, because I’m alive.

    I’ve taken what I’ve learned with me, it’s all I know, and I’ll been kickin’ my old shit out the front fucking door. Because I don’t need it anymore.
    I’m taking steps forward one foot at a time, making sure not to fall.
    And it will be the last trip of my life. Reaching up while the ship sinks to the bottom of this dead ocean.
    A thousand stars couldn’t shine through all the shit we’ve been through, in this world that has no ending. I’m never going back to blinding lights.

    Post Category: C:

    13 comments juin 28th, 2009 at 09:02 admin

    Return of the SMM

    Encore un post qui parle du SMM, c’est la mode en cette saison. Pour ceux qui débarquent, je vous conseil d’abord de lire ce post pour vous mettre dans le bain. Je tiens juste d’emblée à préciser que le SMM c’est joli, c’est puissant, c’est funny mais qu’au final c’est quand même de la branlette intellectuelle. Il faut savoir que beaucoup de choses faisables en SMM le sont déjà en ring 0. Mis à part le cas très spécifique de la corruption d’hyperviseurs comme l’équipe de Invisible Things Lab l’a montré en profitant d’un bug permettant d’atteindre la SMRAM je ne vois pas en quoi le SMM est utile pour un attaquant. Attention je dis cela parce qu’il est plus simple actuellement de réaliser certaines attaques indétectables, comme par exemple un keylogger, sans avoir à se mettre en SMM. Finalement je rejoins l’opinion d’autres personnes qui disent qu’il faut prendre en compte le du risque SMM mais qu’on a déjà assez de choses non-secure à traiter pour le moment. Donc au final pas de quoi paniquer.
    (suite…)

    Post Category: RE

    6 comments mars 29th, 2009 at 03:23 admin

    IDT Sniffer

    Certains disent que je suis mort, d’autres que j’ai muté pour devenir reverser Java voir même spécialiste UML. Que nenni j’ai tenté de faire le gens ordinaire pendant quelques temps, vous savez : faire du social, parler à des gens, sortir et toutes ces conneries. Cela ne m’a pas beaucoup réussi donc ‘back to the roots’. Pour la peine vous prendrez bien un peu de bon son pour réveillez vos neurones. Du bon post-metal sludge avec Rosetta et Red In Tooth And Claw :


    Red in tooth and claw

    (suite…)

    Post Category: RE

    3 comments février 26th, 2009 at 04:27 admin

    Playing with DynamoRio

    Et non ce blog n’est pas le mort, depuis le temps que je l’ai délaissé, je commençais à m’en vouloir. Disons que j’ai été prit par mal de taff en plus de pas faire grand chose de bien au niveau de mes projets perso et puis il y a eu une pénurie de chocapicz à cause de la crise :( Alors au lieu de poster pour rien dire d’intéressant ou même de la merde comme une grosse tapz, j’ai préféré fermer ma gueule. Ce post est consacré à une technologie récente mais encore trop peu connue par les gens qui font des vrais choses (comprendre : pas des projets java et du .Net) : la Dynamic Binary Instrumentamention (DBI).
    (suite…)

    Post Category: RE

    4 comments janvier 6th, 2009 at 05:45 admin

    VDM!

    Putain, ça fait 1000 ans que j’ai pas bloggé, je suis surchargé en ce moment. Vous allez vous foutre de ma gueule mais je suis en train d’étudier des choses comme java/CPP/sql/xml/uml, disons que ce ne sont pas les choses les plus inintéressantes mais c’est très très chiant à bosser. J’ai tellement de projets et de rapports à rendre dessus que je n’ai même plus le temps de jouer avec mon Windows :(

    Bref, je passe vite fait pour vous montrer une feature marrant de Windbg (d’ailleur la version 6.10.3.233 est sortie il y moins d’une semaine). Il s’agit d’une extension aidant au debugging de binaire VDM. Je crois qu’un exemple sera plus parlant qu’autre chose :

    0:003> !vdmexts.load
    0:003> !vdmexts.help
    
    WOW commands are not currently available.
    
    ------------- VDMEXTS Debug Extension help:--------------
    
    help [cmd]             - Displays this list or gives details on command
    ApiProfClr             - Clears the api profiling table
    ApiProfDmp [options]   - Dumps the api profiling table
    at 0xXXXX              - shows name associated with hex atom #
    bp <addr>              - Sets a vdm breakpoint
    bd/be <n>              - Disables/enables vdm breakpoint 'n'
    bl                     - Lists vdm breakpoints
    chkheap                - Checks WOW kernel's global heap
    cia                    - Dump cursor/icon alias list
    d<b|w|d> <addr> [len]  - Dump vdm memory
    ddemem                 - Dump dde memory thunks
    ddte <addr>            - Dump dispatch table entry pointed to by <addr>
    denv <bProt> <selEnv>  - Dump environment for current task or given selector/segment
    df [vector]            - Dump protect mode fault handler address
    dfh [fh [pdb]]         - Dump DOS file handles for current or given PDB
    dg <sel>               - Dump info on a selector
    ddh [seg]              - Dump DOS heap chain starting at <seg>:0000
    dgh [sel|ownersel]     - Dump WOW kernel's global heap
    dhdib [@<address>]     - Dump dib.drv support structures (DIBINFO)
    di [vector]            - Dump protect mode interrupt handler address
    dma                    - Dump virtual DMA state
    dpd                    - Dump DPMI DOS memory allocations
    dpx                    - Dump DPMI extended memory allocations
    dsft [sft]             - Dump all or specified DOS system file tables
    dt [-v] <addr>         - Dump WOW Task Info
    dwp <addr>             - Dump WOWPORT structure pointed to by <addr>
    e<b|w|d> <addr> <data> - Edit vdm memory
    filter [options]       - Manipulate logging filter
    fs <text to find>      - Find text in 16:16 memory (case insensitive)
    glock <sel>            - Increments the lock count on a moveable segment
    gmem                   - Dumps Global/heap memory alloc'd by wow32
    gunlock <sel>          - Decrements the lock count on a moveable segment
    hgdi16 [-v] <h16>      - Returns 32-bit GDI handle for <h16>
    hgdi32 [-v] <h32>      - Returns 16-bit GDI handle for <h32>
    ica                    - Dump Interrupt Controller state
    k                      - Stack trace
    kb                     - Stack trace with symbols
    LastLog                - Dumps Last Logged WOW APIs from Circular Buffer
    lg [#num] [count]      - Dumps NTVDM history log
    lgr [#num] [count]     - Dumps NTVDM history log (with regs)
    lgt [1|2|3]            - Sets NTVDM history log timer resolution
    lm <sel|modname>       - List loaded modules
    ln [addr]              - Determine near symbols
    LogFile [path]         - Create/close toggle for iloglevel capture to file
                             (path defaults to c:\ilog.log)
    MsgProfClr             - Clears the msg profiling table
    MsgProfDmp [options]   - Dumps the msg profiling table
    ntsd                   - Gets an NTSD prompt from the VDM prompt
    r                      - Dump registers
    rmcb                   - Dumps dpmi real mode callbacks
    SetLogLevel xx         - Sets the WOW Logging Level
    StepTrace              - Toggles Single Step Tracing On/Off
    sx                     - Displays debugging options
    sx<d|e> <flag>         - Disables/enables debugging options
    timer                  - Display 8253 timer 0 information
    u [addr] [len]         - Unassemble vdm code with symbols
    wc <hwnd16>            - Dumps the window class structure of <hwnd16>
    ww <hwnd16>            - Dumps the window structure of <hwnd16>
    x <symbol>             - Get symbol's value
    
    -------------- i386 specific commands
    fpu                    - Dump 487 state
    pdump                  - Dumps profile info to file \profile.out
    pint                   - Sets the profile interval
    pstart                 - Causes profiling to start
    pstop                  - Causes profiling to stop
    vdmtib [addr]          - Dumps the register context in the vdmtib
    
    
        where [options] can be displayed with 'help <cmd>'
    

    Avec ça on peut voir facilement les exeptions et interrupt handlers mis en place par le binaire ntvdm.exe avec les couples (segment:offset) :

    0:000> !vdmexts.df ; Dump protect mode fault handler address
    00: 00C7:00001200 
    01: 00C7:00001205 
    02: 00C7:0000120A 
    03: 00C7:0000120F 
    04: 00C7:00001214 
    05: 00C7:00001219 
    06: 00C7:0000121E 
    07: 00C7:00001223 
    08: 00C7:00001228 
    09: 00C7:0000122D 
    0A: 00C7:00001232 
    0B: 00C7:00001237 
    0C: 00C7:0000123C 
    0D: 00C7:00001241 
    0E: 00C7:00001246 
    0F: 00C7:0000124B 
    10: 00C7:00001250 
    11: 00C7:00001255 
    12: 00C7:0000125A 
    13: 00C7:0000125F 
    14: 00C7:00001264 
    15: 00C7:00001269 
    16: 00C7:0000126E 
    17: 00C7:00001273 
    18: 00C7:00001278 
    19: 00C7:0000127D 
    1A: 00C7:00001282 
    1B: 00C7:00001287 
    1C: 00C7:0000128C 
    1D: 00C7:00001291 
    1E: 00C7:00001296 
    1F: 00C7:0000129B
     
    0:000> !vdmexts.di ; Dump protect mode interrupt handler address
    00: 00C7:00000D00 
    01: 00C7:00001307 
    02: 00C7:00000D0A 
    03: 00C7:00001307 
    04: 00C7:00000D14 
    05: 00C7:00000D19 
    06: 00C7:00000D1E 
    07: 00C7:00000D23 
    08: 00C7:00000D28 
    09: 00C7:00000D2D 
    0A: 00C7:00000D32 
    0B: 00C7:00000D37 
    0C: 00C7:00000D3C 
    0D: 00C7:00000D41 
    0E: 00C7:00000D46 
    0F: 00C7:00000D4B 
    10: 00C7:00001393 
    11: 00C7:00000D55 
    12: 00C7:00000D5A 
    13: 00C7:00002870 
    14: 00C7:00000D64 
    15: 00C7:000014A7 
    16: 00C7:00000D6E 
    17: 00C7:00000D73 
    18: 00C7:00000D78 
    19: 00C7:00001308 
    1A: 00C7:00000D82 
    1B: 00C7:00000D87 
    1C: 00C7:00000D8C 
    1D: 00C7:00000D91 
    1E: 00C7:00000D96 
    1F: 00C7:00000D9B 
    20: 00C7:00000DA0 
    21: 00C7:000004E6 
    22: 00C7:00000DAA 
    23: 00C7:00000DAF 
    24: 00C7:00000DB4 
    25: 00C7:000029CD 
    26: 00C7:00002A85 
    27: 00C7:00000DC3 
    28: 00C7:000012B8 
    29: 00C7:00000DCD 
    2A: 00C7:0000315E 
    2B: 00C7:00000DD7 
    2C: 00C7:00000DDC 
    2D: 00C7:00000DE1 
    2E: 00C7:00000DE6 
    2F: 00C7:00000DEB 
    30: 00C7:00001307 
    31: 00C7:000012DC 
    32: 00C7:00000DFA 
    33: 00C7:0000155D 
    34: 00C7:00000E04 
    35: 00C7:00000E09 
    36: 00C7:00000E0E 
    37: 00C7:00000E13 
    38: 00C7:00000E18 
    39: 00C7:00000E1D 
    3A: 00C7:00000E22 
    3B: 00C7:00000E27 
    3C: 00C7:00000E2C 
    3D: 00C7:00000E31 
    3E: 00C7:00000E36 
    3F: 00C7:00000E3B 
    40: 00C7:00000E40 
    41: 00C7:00001307 
    42: 00C7:00000E4A 
    43: 00C7:00000E4F 
    44: 00C7:00000E54 
    45: 00C7:00000E59 
    46: 00C7:00000E5E 
    47: 00C7:00000E63 
    48: 00C7:00000E68 
    49: 00C7:00000E6D 
    4A: 00C7:00000E72 
    4B: 00C7:00000E77 
    4C: 00C7:00000E7C 
    4D: 00C7:00000E81 
    4E: 00C7:00000E86 
    4F: 00C7:00000E8B 
    50: 00C7:00000E90 
    51: 00C7:00000E95 
    52: 00C7:00000E9A 
    53: 00C7:00000E9F 
    54: 00C7:00000EA4 
    55: 00C7:00000EA9 
    56: 00C7:00000EAE 
    57: 00C7:00000EB3 
    58: 00C7:00000EB8 
    59: 00C7:00000EBD 
    5A: 00C7:00000EC2 
    5B: 00C7:00000EC7 
    5C: 00C7:0000318B 
    5D: 00C7:00000ED1 
    5E: 00C7:00000ED6 
    5F: 00C7:00000EDB 
    60: 00C7:00000EE0 
    61: 00C7:00000EE5 
    62: 00C7:00000EEA 
    63: 00C7:00000EEF 
    64: 00C7:00000EF4 
    65: 00C7:00000EF9 
    66: 00C7:00000EFE 
    67: 00C7:00000F03 
    68: 00C7:00000F08 
    69: 00C7:00000F0D 
    6A: 00C7:00000F12 
    6B: 00C7:00000F17 
    6C: 00C7:00000F1C 
    6D: 00C7:00000F21 
    6E: 00C7:00000F26 
    6F: 00C7:00000F2B 
    70: 00C7:00000F30 
    71: 00C7:00000F35 
    72: 00C7:00000F3A 
    73: 00C7:00000F3F 
    74: 00C7:00000F44 
    75: 00C7:00000F49 
    76: 00C7:00000F4E 
    77: 00C7:00000F53 
    78: 00C7:00000F58 
    79: 00C7:00000F5D 
    7A: 00C7:00000F62 
    7B: 00C7:00000F67 
    7C: 00C7:00000F6C 
    7D: 00C7:00000F71 
    7E: 00C7:00000F76 
    7F: 00C7:00000F7B 
    80: 00C7:00000F80 
    81: 00C7:00000F85 
    82: 00C7:00000F8A 
    83: 00C7:00000F8F 
    84: 00C7:00000F94 
    85: 00C7:00000F99 
    86: 00C7:00000F9E 
    87: 00C7:00000FA3 
    88: 00C7:00000FA8 
    89: 00C7:00000FAD 
    8A: 00C7:00000FB2 
    8B: 00C7:00000FB7 
    8C: 00C7:00000FBC 
    8D: 00C7:00000FC1 
    8E: 00C7:00000FC6 
    8F: 00C7:00000FCB 
    90: 00C7:00000FD0 
    91: 00C7:00000FD5 
    92: 00C7:00000FDA 
    93: 00C7:00000FDF 
    94: 00C7:00000FE4 
    95: 00C7:00000FE9 
    96: 00C7:00000FEE 
    97: 00C7:00000FF3 
    98: 00C7:00000FF8 
    99: 00C7:00000FFD 
    9A: 00C7:00001002 
    9B: 00C7:00001007 
    9C: 00C7:0000100C 
    9D: 00C7:00001011 
    9E: 00C7:00001016 
    9F: 00C7:0000101B 
    A0: 00C7:00001020 
    A1: 00C7:00001025 
    A2: 00C7:0000102A 
    A3: 00C7:0000102F 
    A4: 00C7:00001034 
    A5: 00C7:00001039 
    A6: 00C7:0000103E 
    A7: 00C7:00001043 
    A8: 00C7:00001048 
    A9: 00C7:0000104D 
    AA: 00C7:00001052 
    AB: 00C7:00001057 
    AC: 00C7:0000105C 
    AD: 00C7:00001061 
    AE: 00C7:00001066 
    AF: 00C7:0000106B 
    B0: 00C7:00001070 
    B1: 00C7:00001075 
    B2: 00C7:0000107A 
    B3: 00C7:0000107F 
    B4: 00C7:00001084 
    B5: 00C7:00001089 
    B6: 00C7:0000108E 
    B7: 00C7:00001093 
    B8: 00C7:00001098 
    B9: 00C7:0000109D 
    BA: 00C7:000010A2 
    BB: 00C7:000010A7 
    BC: 00C7:000010AC 
    BD: 00C7:000010B1 
    BE: 00C7:000010B6 
    BF: 00C7:000010BB 
    C0: 00C7:000010C0 
    C1: 00C7:000010C5 
    C2: 00C7:000010CA 
    C3: 00C7:000010CF 
    C4: 00C7:000010D4 
    C5: 00C7:000010D9 
    C6: 00C7:000010DE 
    C7: 00C7:000010E3 
    C8: 00C7:000010E8 
    C9: 00C7:000010ED 
    CA: 00C7:000010F2 
    CB: 00C7:000010F7 
    CC: 00C7:000010FC 
    CD: 00C7:00001101 
    CE: 00C7:00001106 
    CF: 00C7:0000110B 
    D0: 00C7:00001110 
    D1: 00C7:00001115 
    D2: 00C7:0000111A 
    D3: 00C7:0000111F 
    D4: 00C7:00001124 
    D5: 00C7:00001129 
    D6: 00C7:0000112E 
    D7: 00C7:00001133 
    D8: 00C7:00001138 
    D9: 00C7:0000113D 
    DA: 00C7:00001142 
    DB: 00C7:00001147 
    DC: 00C7:0000114C 
    DD: 00C7:00001151 
    DE: 00C7:00001156 
    DF: 00C7:0000115B 
    E0: 00C7:00001160 
    E1: 00C7:00001165 
    E2: 00C7:0000116A 
    E3: 00C7:0000116F 
    E4: 00C7:00001174 
    E5: 00C7:00001179 
    E6: 00C7:0000117E 
    E7: 00C7:00001183 
    E8: 00C7:00001188 
    E9: 00C7:0000118D 
    EA: 00C7:00001192 
    EB: 00C7:00001197 
    EC: 00C7:0000119C 
    ED: 00C7:000011A1 
    EE: 00C7:000011A6 
    EF: 00C7:000011AB 
    F0: 00C7:000011B0 
    F1: 00C7:000011B5 
    F2: 00C7:000011BA 
    F3: 00C7:000011BF 
    F4: 00C7:000011C4 
    F5: 00C7:000011C9 
    F6: 00C7:000011CE 
    F7: 00C7:000011D3 
    F8: 00C7:000011D8 
    F9: 00C7:000011DD 
    FA: 00C7:000011E2 
    FB: 00C7:000011E7 
    FC: 00C7:000011EC 
    FD: 00C7:000011F1 
    FE: 00C7:000011F6 
    FF: 00C7:000011FB 
    

    Je sais, je balance tout cela sans explications mais je connais quelqu’un que ça intéressa au plus haut point. Je continuerais l’exploration de la machine virtuelle DOS prochainement, il faut juste que je trouve du temps pour le faire. Sinon pour ceux qui se le demande Abyss n’est pas mort, je projette aussi d’en faire quelque chose de marrant dans le futur :]

    Post Category: RE

    6 comments novembre 25th, 2008 at 12:40 admin

    TaskPwdDmp update

    J’avais dit que je coderais une version générique pour mon outil TaskPwdDmp, c’est fait ! Après quelques retours me signalant que mon programme ne marchait à cause de l’utilisation d’offsets harcodés pour retrouver la fonction schedsvc!DecryptCredentials je me suis décidé à faire quelque chose de propre. Au lieu de fournir une liste de tous les offets possible de Windows XP à 2003 avec toutes les versions de DLLs possibles j’ai préféré opter pour une autre méthode plus simple.
    (suite…)

    Post Category: RE

    9 comments octobre 27th, 2008 at 01:45 admin

    Uninformed Volume 10

    Les auteurs du fameux journal technique uninformed sortent leur dernier opus disponible ici. Au programme :

  • Can you find me now? Unlocking the Verizon Wireless xv6800 (HTC Titan) GPS de Skywing.
  • Using dual-mappings to evade automated unpackers de Skape. Un court article expliquant comment bypasser les unpackers automatiques qui retrouvent l’OEP en regardant les pages mémoire exécutés par le binaire. Du fait que ces tools manipulent uniquement des adresses virtuelles, il est possible de mettre en place une zone mémoire unique possédant 2 adresses virtuelles dans le contexte du packer. Ainsi d’un coté le packer écrit le code dans une mémoire virtuelle alors qu’il sera exécuté dans une autre, dans la mémoire physique ce sont la ou les mêmes pages qui sont écrites et exécutées. L’outil d’unpacking automatique ni voit que du feu et croit qu’il s’agit de code provenant du packer.
  • Analyzing local privilege escalations in win32k de mxatone (Han but kikoo !! sale pourriture communiste @#!!!). Article décrivant en partie le fonctionnement du système GDI win32.sys de Windows. Ensuite mxatone nous montre des faiblesses au niveau de 3 API et l’art de les exploiter, un régal !
  • Exploiting Tomorrow’s Internet Today: Penetration testing with IPv6 de H D Moore.
  • Sinon de mon coté je continue d’étudier la gestion du mode virtuel sous Windows, j’espère pour avancer rapidement, je prépare aussi une mise à jour pour rendre plus générique mon outil qui permet de dumper les credentials stockés pour la gestion des tâches planifiées. Restez connecté !

    Bonne lecture à tous.

    Post Category: C:

    2 comments octobre 12th, 2008 at 10:09 admin

    Next Posts Previous Posts


    Calendar

    mai 2017
    L Ma Me J V S D
    « fév    
    1234567
    891011121314
    15161718192021
    22232425262728
    293031  

    Categories

    Links

    Feeds