Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Attack N Defence

Buzzvil
January 23, 2019
150

Attack N Defence

Buzzvil

January 23, 2019
Tweet

Transcript

  1. Notice • Solution is not perfect. • Also, sample is

    not perfect. • So, we should have imagine.
  2. Section I - Hooking Dynamic Linking libc.so program call printf@PLT

    PLT[0]: call resolver PLT[X]: jmp *GOT[X] push XX jmp PLT[0] GOT[X]: &printf printf:
 … ld.so resolver: … program call printf@PLT PLT[0]: call resolver PLT[X]: jmp *GOT[X] push XX jmp PLT[0] GOT[X]: &hooker libc.so printf:
 … ld.so resolver: … hook.so hooker:
 …
  3. Section I - Hooking Dynamic Loading ld.so libc.so libm.so libhook.so

    printf read write pow sqrt ceil printf read write libraries:
 libc.so libm.so libhook.so ld.so libraries:
 libhook.so libc.so libm.so libc.so libm.so libhook.so printf read write printf read write pow sqrt ceil
  4. Section II - Debugger Process A Process B name phone

    address … Process A Process B name phone address … access / control kernel access / control
  5. Section II - Debugger Process A Process B name phone

    address … kernel access / control Process C 1 2
  6. Section II - Debugger Process A Process B name phone

    address … kernel Process B` fork Attached Not Attached
  7. Section II - Debugger Process A Process B kernel Attached

    Thread 1 Thread 2 Thread 3 Thread N
  8. Section II - Debugger Process A Process B kernel Thread

    1 Thread 2 Thread 3 Thread N Attached Process C