[经济学]How to write a shellcodeintermediate.pptVIP

  • 4
  • 0
  • 约8.13千字
  • 约 36页
  • 2018-02-28 发布于浙江
  • 举报
[经济学]How to write a shellcodeintermediate

webbit 2003 How to write a shellcode (intermediate) Table of contents IDS evasion Shellcode multiOS Shortest shellcode Shellcode non rilocabili goodies fun IDS evasion Il problema dei NOP 0x90 Gli IDS intercettano blocchi di nop consecutivi Ottenere lo stesso risultato ma con operazioni differenti Metodo jmp 0x02 Metodo inc %eax o similari Intercettazione di /bin/sh E’ possibile scrivere uno shellcode senza l’uso della stringa “/bin/sh” esplicita Metodo XOR /bin/sh\0 2F 62 69 6E 2F 73 68 00 alorgigi 61 6C 6F 72 67 69 67 69 xor 4E 0E 06 1C 48 1A 0F 69 Intercettazione di int 0x80 Lo stesso metodo usato per le stringhe, puo’ essere usato per le istruzioni che compongono lo shellcode stesso. Utilizzare due valori che uniti in xor diano cd 80 Shellcode multiOS Shellcode multiOS Lo scopo del gioco e’ quello di creare uno shellcode che funzioni sia su linux che su bsd. Problemi: Linux prende i parametri delle syscall dai registri BSD prende i parametri delle syscall dallo stack Linux usa 0xb in %eax per la execve BSD usa 0x3b in %eax per la execve Shellcode multiOS Per il problema dei parametri… Possiamo mettere i parametri sia nei registri che sullo stack. In questo modo entrambi i sistemi operativi troveranno quello che cercano. Shellcode multiOS Per il problema del valore di %eax… C’e’ la necessita’ di eseguire un controllo a run-time sul tipo di sistema ospitante. Come fare ? Shellcode multiOS Sotto linux il registro speciale %fs e’ sempre nullo, mentre su BSD viene utilizzato normalmente come registro selettore di segmento (data) E’ sufficiente quindi un controllo su questo registro per distinguere i due sistemi Shellcode multiOS Un po’ di codice… movl %fs, %eax and %eax, %eax je linux movb $0x3b, %al jmp bsd linux: movb $0xb, %al bsd: Shortest Shellcode Shellcode classico (38 b) Shellcode ottimizzato (36 b) Nuovo metodo di costruzione per /bin/sh Consideriamo la stringa /bin/sh come sequenza di numeri esadecimal

文档评论(0)

1亿VIP精品文档

相关文档