TLS Callback에 대해서 알아 보자 .
TLS(Thread Local Storage)로 쓰레드별 독립된 데이터 저장공간이라고 보면 되는데
안티 리버싱 테크닉 중 하나이고 단순하게 말씀드리면,
PE 구조 중 TLS 영역이라고 있는데 그 부분에 디버거 탐지 루틴 및 안티 리버싱을 적용해둠으로써 분석을 어렵게 한다고만 알면 될 것 같다.
경험상 이 내용을 알든 모르든 솔직히 악성코드 분석을 하는데 있어 C/S프로그램을 분석하는 데 있어 전혀 중요치 않타.
경험만 있으면 우회할 수 있는 방법은 엄청나게 많기 때문이다.
하지만 입문자 기준으로 하면 알아두면 유용하게 쓰일 수 있고 PE구조를 공부하기 전 TLS와 같은 내용을 공부해두게 되면
더 일찍 이해 할 수 있다고 판단된다.
이유는 보통 PE구조를 접하게되면 적어도 3번이상은 반복해서 보고 또 보고 익숙해져야하는데 많은 사람들이 쉽게 포기 한다. 나의 경우도 마찬가지였다.
그래서 나는 뭘 가르치든 뭘 하든 먼저 경험해보는 방식으로 진행한다.
일단 관련된 내용을 먼저해보고 다시 한다면 이해도가 휠씬 다르기 때문이다.
■ 작동 원리
1) ollydbg 실행 → 파일 실행
2) 실행한 파일이 로드되기 전 ntdll.dll à LdrpRunInitializeRoutines()가 TLS callback으로 등록된 코드를 실행
3) 등록된 코드가 안티디버깅으로 혹은 디버거 탐지 루틴을 적용해두었다면 ollydbg 종료
■ LordPE를 통한 자동 계산
그림 1. WinNT.h에 선언된 TLS 테이블
그림 2. TLSTable Address of Callbacks 값 : 403084
실은 TLS Callback을 먼저 배우는 가장 큰 목적은 오프셋 계산방법을 명확하게 해두기 위함이다.
책을 보고 여러차례 혹은 다양한 인터넷 블로그를 보면서 여러차례한다면 충분히 알 수 있는 내용이지만
그리고 알고 보면 정말 정말 쉬운 내용이지만 누군가의 설명없이 단순히 이해하기는 쉽지 않을 것으로 판단된다.
오프라인 교육 때 사용하는 PPT파일을 업로드할 예정이며 필요한 분은 참고하기 바란다.
그 중 우회 기법부분은 내용에서 제외 후 올린다. 가장 핵심이 되는 부분은 저 부분이기도 하고 교육받는 친구들과 차별화를 두기 위함이다.
리버스엔지니어링_안티디버깅(TLS Callback)1.pdf
그림 3. 리버스엔지니어링_안티디버깅(TLS Callback).pptx
'ETC' 카테고리의 다른 글
랜섬웨어(Lokcy)_DLL_최초_변종_16.09.08 (0) | 2017.04.27 |
---|---|
CrackME 문제 & 루틴분석 (0) | 2017.01.29 |
ActiveX 디버깅(ollydbg) (0) | 2017.01.16 |
[POC]PHPMailer 원격코드 실행 취약점 POC(CVE-2016-10033) (0) | 2017.01.02 |
리버싱 툴 소개(입문 툴) (0) | 2016.12.30 |