XOR Encoder
XOR 연산을 이용한 인코딩을 해보도록 하겠습니다. 인코딩을 하는 이유는 눈에 쉽게 보이지 않기 위해서 사용됩니다.
앞서 소스코드를 컴파일해서 objdump를 이용하여 만든 쉘 코드를 XOR 인코딩을 해서 사용하는 방법입니다.
소스코드 작성하기
앞서 포스팅한 execve shellcode를 가지고 XOR Encoding을 해보도록 하겠습니다.
objdump를 이용해서 쉘 코드를 만듭니다.
해당 쉘 코드를 복사하여 python을 이용해서 xor 인코딩 합니다.
3줄의 shellcode의 튜플에 값을 넣어줍니다.
소스코드를 보면 0xAA로 해당 쉘 코드를 인코딩합니다. 실행 시 다음과 같이 출력됩니다.
디코더 만들기
XOR 인코딩을 통해 만든 쉘 코드를 위 디코더 소스코드에 넣어줍니다.
소스코드는 esi로 인코딩된 쉘 코드를 가리키고 값을 1씩 증가 시키면서 0xAA와 인코딩 합니다.
마찬가지로 objdump를 이용하여 쉘 코드를 생성합니다.
쉘을 테스트 하기 위해서 쉘 코드를 넣어주고 컴파일 후 실행합니다.
쉘이 실행된 것을 알 수 있습니다.
'High Level Technique > Shellcoding' 카테고리의 다른 글
Insertion Encoder (0) | 2016.03.14 |
---|---|
NOT Encoder (0) | 2016.03.14 |
execve shellcode (0) | 2016.03.13 |
RIP 상대주소 이용하기 (0) | 2016.03.13 |
JMP-CALL-POP 기술 (0) | 2016.03.13 |