리버스엔지니어링(리버싱) 툴 종류 급증하는 악성코드 분석공부

리버스엔지니어링(리버싱) 툴 종류 급증하는 악성코드 분석공부


리버스엔지니어링(리버싱) 툴 종류

급증하는 악성코드 분석공부

 

 

해마다 PC를 공격하고 위협하는 악성코드들이 증가하고 있다고 하는데

국내 대표기관인 KISA(한국인터넷진흥원)에서 이를 담당하고 있는 인력은

급증하는 수에 턱없이 부족한 상황이라고 하고 오히려 예산이 줄어들고 있다고 하네요.

담당자도 몇년 전부터 4명이었는데 아직도 4명이서 모든 업무를 처리한다고 하는데

이게 4명이서 가능한 일인가 싶기도 하네요.

 

 

 

이런 여러가지 악성코드들을 분석을 하기 위해서 필요한 기술이

리버스엔지니어링(리버싱)이라는 건데 사용하는 프로그램이 목적에 따라서 다르기 때문에

적절한 상황에 맞춰 필요한 툴을 이용해야 합니다.

물론 처음부터 그냥 프로그램 사용법을 익힌다고해서 이해할수 있는 수준의 레벨이 아니기 때문에

기초지식이 되는 프로그래밍이나 OS나 네트워크에 대한 부분을 어느정도 숙지하고 있어야 하고

이후에 목적에 따라서 필요한 툴을 이용해서 분석을 하게 되기 때문에 공부할게 많은 분야이기도 하죠.

 

 

일단 리버스엔지니어링이란 그냥 단순하게 말하면 프로그램을 분석하는 기술인데

리버싱을 사용하면 코드가 여러가지가 있는데 소스코드, 헥사코드, 어셈블리코드가 있습니다.

소스코드는 흔히 우리가 C언어같은것들을 배울때 사용하는 코드를 말하고

헥사코드와 어셈블리코드는 평소 공부할때 접하기 어렵기 때문에 이게 뭔가 할수도 있긴 합니다.

이를 이용해 디스어셈블러 툴을 이용해서 디스어셈블된 코드를 분석해 소스코드를 복구하거나

프로그램이 어떻게 돌아가는지 확인을 할수도 있기 때문에

수정 보완을 할수가 있는거고 이를 악용해서 게임쪽에서 흔히 말하는 버그나 핵을 만들어 내죠.

 

 

 

물론 이런 목적으로 사용되는건 아니고 보안개념에서 사용을 하는건데

여러가지 상황에 따라서 사용되는 리버싱 툴에 차이도 있기도 한데 어쨋든 모두 리버스엔지니어링의 한 부분이죠.

일단 현재 실행중인 함수의 디스어셈블된 코드를 보여주고 사용자가 코드를 따라가면서 각 코드 라인에서

어떤 식으로 동작을 하는지 볼수 있는 디버거 툴들이 있는데 대표적인걸로는

Ollydbg를 이용해서 역분석을 할수도 있고 이 외에도 Windbg와 IDA가 있습니다.

이런것들이 악용을 한다면 나쁜 용도로 사용할수 있지만 좋은 용도로 사용하면 현재 문제가 되는

여러가지 악성코드를 분석해서 보안할수 있도록 보안업데이트를 할수가 있는거죠.

 

 

그리고 리버싱 툴중에 파일과 레지스트리의 변화와 네트워크상태나 프로세스의 상태를 분석할수 있는

시스템 모니터링 툴로는 Filemon과 Regmon, Tcpview, Procexp, WireShark가 있는데

이중에서는 리버스엔지니어링 공부를 시작하려는 분들은 와이어샤크를 가장 많이 들어보지 않을까 싶네요.

와이어샤크는 네트워크 모니터링 툴인데 프로토콜로 전송되는 패킷을 분석해서 보여줍니다.

 

 

 

그리고 이미 컴파일된 바이너리를 역으로 컴파일 해주는 툴도 있는데

디컴파일러 툴로 플래쉬 디컴파일러인 sothink SWF Decompier와 닷넷 프로그램 디컴파일러인 Reflector과

델파이 디컴파일러 DeDe가 있습니다.

그리고 바이너리를 분석해서 어떤 패커를 이용해서 바이너리를 패킹했는지, 어떤 언어로 제작했는지 알아내는

PEID와 리소스해커, String이 있고 프로그램을 압축하거나 보호하기 위해서

사용되는 패커들이 하는 일을 반대로 해주는 언패커 툴인 Universal Extractor과 VMUnpacker이 있습니다.

 

 

그리고 바이너리 파일을 수정하는 헥스에디터에 울트라에디터와 Hex Workshop이 있고

루트킷 탐지하는 GMER, IceSword등 다양한 상황에 따라서 이용하는 리버싱 툴에 차이가 있는거죠.

그렇기 때문에 리버스엔지니어링 공부를 한다고해도 목적과 상황에 따라서 방향에 차이가 있고

기본적으로 요구되는 지식에도 많은 차이가 있을수밖에 없는겁니다.

보통 많은 학생들이 공부하는 목적을 보면 보통 취약점분석이나 악성코드분석을 위해서 많이 하는데

깊이 파고들면 파고들수록 어렵고 복잡한 분야중에 하나입니다.

 

 

 

물론 어떤 분야든 깊게 파고 든다면 안어려운게 없긴 하겠지만 보안쪽으로 진로를 잡고 있다고 한다면

이런 리버스엔지니어링에 대한 부분은 필수라고 할수도 있기 때문에 모든 종류를 다 익힐 필요까지는 없겠지만

진출 방향에 맞춰 관련된 리버싱 툴에 대해서는 어느정도 숙지를 해주시는게 좋습니다.

일단 악성코드를 직접 만들거나 분석을 하기 위해서는 기초 프로그래밍 능력이 탄탄해야 하기 때문에

이것부터 공부를 체계적으로 잘 해주셔서 리버싱기술까지 익히는게 중요하고

악용하면 절대로 안되겠죠.

 

 

보통 보안쪽으로 진로를 잡고 있는분들이 많이 혼란스러워하는 부분이

분야가 다양하다는걸 모르기때문에 웹상에서는 어떤걸 공부해야한다 뭘 알아야 한다는 말이

전부다 다를수밖에 없어 뭐가 맞는 말인지 잘 모르는 경우가 많이 있습니다.

하지만 어떤 말이든 다 맞다고 볼수가 있는데 그 이유가 위에 여러가지 리버싱툴 종류에 대해서 알려드렸듯

상황과 목적에 공부과정이 달라지듯이 보안분야도 생각보다 다양하게 나눠져 있는만큼

어떤 방향으로 준비를 하느냐에 따라서 기초과목에 차이가 있고 각종 해킹기법이나 리버스엔지니어링같은

역공학 기술도 이에 맞춰 관련 기술력을 키워야 하기 때문이죠.

 

 

 

위에도 많은 종류의 리버스엔지니어링 툴 종류를 설명하긴 했지만 단순 명칭만을 알려드린거라

어느정도 리버싱 공부를 목적에 두고 있거나 악성코드분석에 대해서 공부를 해보려고 한다면

각 툴에 대해서 정확히 알아보고 필요한 기술을 익혀야 하고

사전에 위에 언급한 기초 지식이 되는 프로그래밍이나 운영체제, 네트워크에 대해서부터 숙지를 해야하는겁니다.

현재 국내 대표라고 할수 있는 KISA에서도 전문인력이 턱없이 부족한 시점이기 때문에

많은 인재들이 이런 쪽으로 공부를 통해 기술력을 잘 익혀서 현재 국내 문제가 되고있는

보안취약점들을 분석해서 찾아내는 전문 화이트해커들이 많이 있다면

지금보다는 훨씬 더 해킹위협에서 안전할수 있지 않을까 싶습니다.

 

 

사회적으로도 이런 보안인력을 양성하는데 목적을 두고 있고 요즘에는 모의해킹 분야에 대한 인력 양성에

많은 투자를 하고 있는만큼 이런 리버스엔지니어링 기술을 공부하려고 하는 사람들도 많아질것 같은데

관심이 있어도 어떻게 어떤 방법으로 해야할지 잘 모르는 경우가 대부분이라

그냥 간단하게 소개를 하게 된건데 중요한건 개인 상황에 맞춰 필요한 리버싱 툴을 익히는거기 때문에

글자체가 많은 도움이 되지는 않을겁니다.

그래도 악성코드분석이 됐든 뭐가 됐든 관련 공부를 하기 위해서는 분야선정이 중요하다는거고

분야에 맞춰 필요한 프로그램들이 있기 때문에 이런 종류에 맞춰서

요구되는 기본이 되는 과목들을 우선 공부를 시작해 나가면 되는것 뿐입니다.

 

 

 

보통 리버싱쪽에서는 프로그래밍 능력이 많이 요구되기 때문에

기초지식으로 프로그래밍 언어인 C언어부터 공부를 하면서 자신이 소질이 있는지에 대해서도 고민을 해보시는게 좋고

만약 프로그래밍 능력이 많이 부족한 상황이라고 한다면 이런 능력이 많이 요구되는

리버스엔지니어링 툴보다는 그나마 요구가 덜되는 시스템 파트쪽으로 방향을 잡는게 좋을것 같고

악성코드분석이나 제작하는 부분도 프로그래밍 능력이 많이 요구되기도하니

이쪽 분야로 진로로 꼭 생각을 하고 있다고 한다면 어렵더라도 C언어부터 프로그래밍 능력을 키우는데

중점을 두고 공부를 해주시는게 가장 좋을것 같습니다.

 

 

이런 기초 프로그래밍 능력같은 경우는 개인적으로도 충분히 공부가 가능하고

공부방법만 정확히 인지하고 있다면 이해하는게 많이 어렵지는 않은데

관련 자료가 필요하신 분들은 아래 이미지 링크를 통해서 공부를 할수있는

카페로 연결해 드릴테니 접속하셔서 기초부터 공부를 해보시면 될것 같습니다.