Obfuscated 악성코드 분석 by 혁민
Posted 2007. 6. 12. 09:54, Filed under: Study/Computer Science같이 회사에서 인턴으로 일하고 있는 혁민이가 우리가 놀고 있는동안 열심히 일한 내용 ㅋ
나도 이런 멋진 걸 하고 싶지만 -_- 걍 혼자 놀고 있었다..;;
출처는 혁민이의 블로그
나도 이런 멋진 걸 하고 싶지만 -_- 걍 혼자 놀고 있었다..;;
출처는 혁민이의 블로그
Obfuscated 프로그램이란...
디스어셈블을 통한 분석을 어렵고 혼란스럽게 하기 위해서 여러가지 방법으로
코드를 어지럽혀 놓은것을 말한다.
Obfuscate 툴을 이용해서 코드를 난잡하게 여러개 생성하여
비슷한 껍데기로 알맹이를 감싸면, 언뜻 껍데기만 보기엔 디스어셈블링해 보았을때
같은 프로그램처럼 보이지만 완전히 다른 알맹이를 가지고 있을수도 있고,
같은 알맹이를 가지고 있지만 다른 껍데기가 씌워져 있어서
다른 프로그램처럼 인식할 수 있다.
악용하면 똑같은 악성코드 여러개를 복사해서 각각 Obfuscated툴로
난잡화(?) 시켜놓으면 AntiVirus 프로그램 입장에선 하나의 악성코드가
2000개의 다른 악성코드로도, 3000개의 다른악성코드로도
보일 수 있게 된다.
또는 다른 악성코드들을 비슷한 껍데기로 감싸서 같은 악성코드의
변형처럼 보이도록 할 수도 있다.
그래서 이런 눈속임(?)에 당하지 않기 위해서 이 난잡한 악성코드의
패턴을 찾아내서 패턴을 비교해 보는 방법으로 싸그리 진단을 하고자 하는
프로젝트가 진행되었고..
6월 들어오면서 내 주업무가 된 작업이 그 프로젝트가 되었다.
이 Obfuscated 악성코드의 일관된 패턴을 찾는것과 찾은 패턴을
이용해서 진단할 수 있도록 스캐너를 제작하여 진단률과
오진여부를 체크하는 것이었다.
설명을 엄청 어렵게 했는데... -_-;; 어쨌든 요 며칠사이 나는 아래와 같은 일을 했다.
패턴분석을 위해 2~3일은 하루종일 툴만 제작했고 남은 기간은
1. 디스어셈블한 어셈코드로 패턴 분석 및 주요시그니쳐 뽑아내기
2. 분석한 자료로 스캐너 제작
3. if 진단 안되는 샘플 생기면 안되는 샘플을 가지고 다시 1번으로.. -_-;;
4. 정상샘플로 오진이 나는지 검사
5. if 오진이 있을경우 다시 1번으로 -_-;;
이런짓과
타사 AntiVirus 프로그램이 Obfuscated를 어떻게 진단하는지 진단법을 알아내기 위해
1. 디스어셈블한 어셈코드로 패턴 분석 및 주요시그니쳐 뽑아내기
2. 타사에서 이용했는지 샘플을 만들어서 체크하기.
3. if, 만든 샘플을 타사 AntiVirus프로그램이 진단하면 성공! else goto 1번-_-;;
이런짓을 반복했다.
그 결과..... 드디어 오늘 빛을 보게 되었다...^_^ㅋㅋㅋㅋㅋㅋㅋㅋ
찾아낸 패턴으로 만든 스캐너는 현재까지 발견된 어떠한 변형 샘플도 모두
찾아내었고, 타사 AntiVirus 프로그램이 어떻게 진단하는지 진단법을
발견해 내었다... (만세.. ㅠㅠ)
자세한 내용도 함께 포스팅 하고 싶지만.. 회사에서 했던 일들에 대한 자료는
공개할 수 없는 관계로 이만....
디스어셈블을 통한 분석을 어렵고 혼란스럽게 하기 위해서 여러가지 방법으로
코드를 어지럽혀 놓은것을 말한다.
Obfuscate 툴을 이용해서 코드를 난잡하게 여러개 생성하여
비슷한 껍데기로 알맹이를 감싸면, 언뜻 껍데기만 보기엔 디스어셈블링해 보았을때
같은 프로그램처럼 보이지만 완전히 다른 알맹이를 가지고 있을수도 있고,
같은 알맹이를 가지고 있지만 다른 껍데기가 씌워져 있어서
다른 프로그램처럼 인식할 수 있다.
악용하면 똑같은 악성코드 여러개를 복사해서 각각 Obfuscated툴로
난잡화(?) 시켜놓으면 AntiVirus 프로그램 입장에선 하나의 악성코드가
2000개의 다른 악성코드로도, 3000개의 다른악성코드로도
보일 수 있게 된다.
또는 다른 악성코드들을 비슷한 껍데기로 감싸서 같은 악성코드의
변형처럼 보이도록 할 수도 있다.
그래서 이런 눈속임(?)에 당하지 않기 위해서 이 난잡한 악성코드의
패턴을 찾아내서 패턴을 비교해 보는 방법으로 싸그리 진단을 하고자 하는
프로젝트가 진행되었고..
6월 들어오면서 내 주업무가 된 작업이 그 프로젝트가 되었다.
이 Obfuscated 악성코드의 일관된 패턴을 찾는것과 찾은 패턴을
이용해서 진단할 수 있도록 스캐너를 제작하여 진단률과
오진여부를 체크하는 것이었다.
설명을 엄청 어렵게 했는데... -_-;; 어쨌든 요 며칠사이 나는 아래와 같은 일을 했다.
패턴분석을 위해 2~3일은 하루종일 툴만 제작했고 남은 기간은
1. 디스어셈블한 어셈코드로 패턴 분석 및 주요시그니쳐 뽑아내기
2. 분석한 자료로 스캐너 제작
3. if 진단 안되는 샘플 생기면 안되는 샘플을 가지고 다시 1번으로.. -_-;;
4. 정상샘플로 오진이 나는지 검사
5. if 오진이 있을경우 다시 1번으로 -_-;;
이런짓과
타사 AntiVirus 프로그램이 Obfuscated를 어떻게 진단하는지 진단법을 알아내기 위해
1. 디스어셈블한 어셈코드로 패턴 분석 및 주요시그니쳐 뽑아내기
2. 타사에서 이용했는지 샘플을 만들어서 체크하기.
3. if, 만든 샘플을 타사 AntiVirus프로그램이 진단하면 성공! else goto 1번-_-;;
이런짓을 반복했다.
그 결과..... 드디어 오늘 빛을 보게 되었다...^_^ㅋㅋㅋㅋㅋㅋㅋㅋ
찾아낸 패턴으로 만든 스캐너는 현재까지 발견된 어떠한 변형 샘플도 모두
찾아내었고, 타사 AntiVirus 프로그램이 어떻게 진단하는지 진단법을
발견해 내었다... (만세.. ㅠㅠ)
자세한 내용도 함께 포스팅 하고 싶지만.. 회사에서 했던 일들에 대한 자료는
공개할 수 없는 관계로 이만....