본문 바로가기

High Level Technique/Shellcoding

XOR Encoder

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