본문 바로가기

어셈13

차세대 보안전문가 포럼 보안 특강 5탄 루트킷 탐지 기법 후기. 보안실무자를 위한 보안특강... 보안 특강 5탄 주제: 루트킷 탐지 기법 - 강사: 노용환, FSK시큐리티 연구팀장(somma, Blog: http://somma.egloos.com) 이번 특강에서는 악성코드에서 많이 사용되는 루트킷 기술을 설명하고 이를 탐지하는 방법을 FSK시큐리티의 일명 somma로 잘 알려진 노용환 연구팀장님께서 쉽게 시연을 통해 설명합니다. 1. 일시: 2010년 11월 10일 수요일 저녁 7시 ~ 9시 30분 2. 장소: 삼양사 본관 1층 강당 (1호선 종로5가역 하차, 1번 출구 도보 2분) 3. 대상: 국방/공공/민간/교육 보안실무담당자, 구직자, 학생 등 (난이도: 초/중) 4. 참가비: 무료 (선착순 100명) 5. 주최: FSK시큐리티 6. 주관: - 한국정보기술연구원.. 2010. 11. 15.
헥스에디터(Hex-Editors) 헥스에디터(Hex-editors) : 바이너리 파일을 분석하거나 수정할 때 사용한다. 파일을 16진수 코드로 보여준다. (참고 : 16진수 코드나 어셈코드나 같은겁니다. 어셈코드는 16진수 코드를 우리가 보기 쉽게 문자로 치환했을 뿐입니다. 예를 들어 16진수로 0x6A 라는 숫자가 어떤 일을 한다고 했을때 이 숫자만 보고 그 일을 한다는 것을 사람이 알기에 쉽지 않으므로 여기에 PUSH 라는 이름을 붙여 사람이 해석하기 쉽게 해주는겁니다. 즉 16진수 코드랑 어셈코드는 같은 것을 표현하는데 숫자냐, 문자냐일 뿐인것이죠) .exe나 .dll 같은 윈도우 PE 구조의 파일이나 확장자가 없거나 다른 확장자의 파일을 분석할때 헥스에디터로 열어서 그 바이너리 파일의 헤더를 보고 어떤 종류의 파일인지 (참고 : .. 2010. 1. 3.
안티 디버깅(Anti-Debugging) 안티 디버깅(Anti-Debugging) : 디버깅을 방지하고 분석을 하지 못하도록 하는 기술. 디버깅을 당한다면 해당 디버거 프로그램을 종료시키거나 에러를 발생시키는 방법등 다양한 방법을 사용하여 분석을 방해한다. (참고 : 디버깅(Debugging) : 프로그램의 특정 부분에 Break Point를 설정한 후 실행을 하면 그 위치에 프로그램이 멈추게 되며 메모리에 값이 제대로 들어가 있는지, 코딩한 흐름대로 프로그램이 진행되는지 단계적으로 실행할 수 있다) 안티 디버깅 기술에는 수많은 방법들이 존재하며 계속 발전하고 있으며 이에 따라 이를 우회하는 기술도 계속적으로 발전하고 있다. CheckRemoteDebuggerPresent() Windows API Detecting Breakpoints by C.. 2009. 11. 26.
아이다(IDA)의 Debugging - IF문 분석 C언어로 if문을 컴파일한 것을 IDA로 분석해보자. #include void main() { int a = 3; int b = 5; if( a > b) { printf(" a 가 크다 "); } else { printf(" b 가 크다 "); } } IDA 그래프 기능으로 본 해당 소스의 흐름이다. 가운데 지점에서 빨간선과 초록선으로 분기하고 각각의 일을 실행한 후 하나로 합쳐지며 프로그램이 종료된다. .text:00411390 push ebp 에 breakpoint를 설정한다. 디버그 모드로 전환(F9)하여 분석을 해보겠다. 다음은 Main함수이다. .text:00411390 main proc near ; CODE XREF: j_mainj .text:00411390 .text:00411390 var_.. 2009. 11. 6.
아이다(IDA)의 Debugging - FOR문 분석 C언어로 for문을 컴파일한 것을 IDA로 분석해보자. #include int main(void) { int i = 0; int result = 0; for ( i ; i 2009. 11. 5.
아이다(IDA)의 Debugging - Stack 분석 IDA의 디버깅을 통한 스택의 Stack 분석 분석해볼 프로그램은 IDA의 사용법을 알아보기 위해 예제로 썻던 것을 계속 쓰겠다. 다시 한번 설명하면 func( ) 함수에 세 개의 값을 파라미터로 전달하고 그 값들의 합을 리턴하는 프로그램이다. #include func(int a, int b, int c) { return a+b+c; } int main(void) { int sum; sum = func(1, 2, 3); return sum; } 프로그램이 실행되기 전의 Stack이다. ESP, EBP의 위치를 살펴본다. .text:00401060 push ebp : EBP가 가리키는 곳이 SFP(Saved Frame Pointer)로 변하고, 그 윗부분이 RET로 바뀌며 스택에 EBP값 12FFC0h값을.. 2009. 11. 4.