악성코드 분석과 리버스 엔지니어링 (리버싱)
안녕하세요, 보안클라우드입니다.
쉽게보는 보안이슈, 오늘의 주제는 바로 '악성코드 분석과 리버싱'입니다.
특별히 악성코드를 이번 주제로 선정한 이유는 개인적으로 관심이 많은 분야이기도 하지만, 최근 들어 랜섬웨어나 스파이웨어 등 악성코드 배포를 통한 사이버 범죄들이 증가하고 있기 때문입니다. 가령 랜섬웨어의 경우 인터넷, 방송 매체 등을 통해 크게 이슈화되기도 하였고, 보안을 모르시는 분들도 한번쯤은 들어보았을 만한 개념이지만, 정작 랜섬웨어를 포함하는 상위 개념, '악성코드'에 대해서는 그 개념을 헷갈려하시거나 어려워하시는 분들이 많이 있더라구요.
ISTR 랜섬웨어 스페셜리포트(시만텍, 2017.08.30), 랜섬웨어 발생 건수는 비교적 유지되고 있는 반면, 해커들의 요구 금액은 점차 낮아지고 있는 기묘한 흐름을 파악할 수 있다.
위 자료의 통계자료 결과를 미루어보면, 시기별 발생하는 랜섬웨어의 횟수와 이에 대한 해커들의 요구금액이 점차 낮아지고 있음을 확인 할 수 있습니다. 자칫 잘못 생각하면 그만큼 랜섬웨어 공격이 '정체'되어 점차 위험도도 낮아지는 것이 아닐까하는 추측을 해볼 수도 있지만, 사실 해커들 입장에서 이제 랜섬웨어 정도는 비용을 높게 청구하지 않을 만큼 '쉽게', 그리고 '빠르게' 공격할 수 있는 수단이 되고 있다는 분석이 더 맞을 것 입니다. 한마디로 이제 악성코드 공격은 간단한 툴 정도를 사용하는 것만으로 충분히 가능한 시대가 도래하고 있다는 것이죠.
대표적인 악성코드와 분류
악성코드는 랜섬웨어 말고도 웜(Worm)과 트로이목마(Trojan horse) 등 다양한 형태로 존재합니다. 대표적으로는 바이러스와 웜, 트로이목마 세 가지 분류로 나누어 그 성격과 대처방안을 고안하는데, 이외에도 관리자 권한을 탈취하는 Rootkit, 사용자의 키보드입력 내용을 로그화하여 정보를 탈취하는 Keylogger 등 다양한 형태의 악성코드가 존재합니다.
현행 법률은 다음과 같이 악성코드를 정의하고 있습니다.
정당한 사유없이 정보통신 시스템, 데이터 또는 프로그램 등을 훼손, 멸실, 변경, 위조, 또는 그 운용을 방해할 수 있는 프로그램.
-정보통신망 이용촉진 및 정보보호 등에 관한 법률 제 48조 제2항
악성프로그램, 맬웨어(malware) 등으로도 불리는 악성코드의 특징은 분명한 '목적'이 있다는 것입니다. 과거 단순 호기심과 장난으로 행해졌던 사이버 상의 장난들이 이제는 시스템의 훼손이나 위조, 금전적인 이득이라는 분명한 목적을 두고 공격이 이뤄지고 있는데, 이런 목적 달성을 위해 짜여진 프로그램은 사용자 혹은 피해 시스템에 의해 실행됐을 때 시스템 마비나 개인 정보 탈취 등과 같은 크고 작은 피해를 유발하고, 심할 경우 이번 랜섬웨어 피해사례와 같이 회사의 존폐가 결정되버리는 상황까지 초래하기도 합니다.
최근 발생한 악성코드 피해사례들
악성 코드가 발견되거나 피해가 발생한 경우, 정확한 대처방법 혹은 백신 제작을 위해 악성 프로그램이 어떻게 구성되어있고, 어떤 순서로 동작하는 지 등에 대한 분석이 필요한 데, 이러한 분석행위를 가리켜 '악성코드 분석'이라고 합니다.
악성코드 분석의 방법은 하단과 같이 총 네 가지로 나눌 수 있습니다.
악성코드 분석 유형 및 내용, 하단으로 갈수록 난이도 레벨이 높음.
악성코드 분석의 방법은 다양하나 대략적으로 위의 도표처럼 네 가지의 유형으로 분류할 수 있고, 실제 분석 순서도 자동화 분석부터 역공학 분석의 방향으로 진행됩니다. 그 중에서도 리버스 엔지니어링의 경우 가장 높은 난이도의 악성코드 분석방법으로 알려져 있는데, 악성 프로그램의 외관 뿐만 아니라 설계 당시의 형태, 실제 코드구성, 사용된 암호화 알고리즘 등 프로그램 구성의 전반적인 자료 획득을 주 목표로 하고 있습니다. 이러한 원리를 이용하여 간혹 유료 프로그램의 키젠(Keyzen)이나 크랙버전 같은 불법 소프트웨어가 배포되기도 합니다.
INPUT(A)과 OUTPUT(B) 메커니즘의 일반적인 사례
위 사례처럼 상자로 표현되는 하나의 프로그램이 있다고 가정한다면, A라는 물고기가 B로 표현되어 있는 검은 물고기가 되기 위해 거쳐야하는 단계가 있을 것입니다. 그 단계는 복잡한 연산과 알고리즘의 결과로 구성되어 있는데, 이를 B-A의 방향으로 역분석하는 방법이 가능하다면 상자로 들어오기 전 A의 원래 모습의 복원이 가능할 뿐만 아니라 이를 약간 수정할 경우, C나 D 물고기처럼 리버싱 작업자의 의도에 맞게 프로그램을 수정하는 것도 가능할 것입니다.
IT 보안 분야에서의 리버스 엔지니어링은 위 사례와 같은 역공학 기술을 응용하여 악성 프로그램의 구조와 핵심 알고리즘을 분석하고 이를 대처하기 위한 백신 혹은 방안을 고안하는데 사용되고 있으며, 실제로 워너크라이(WannaCry) 등과 같은 랜섬웨어에 대한 악성코드 분석에도 리버싱 기술이 코드 분석과 연구에 응용되고 있습니다.
KISA 워너크라이 분석 스페셜리포트 (2017.10.13) - 악성코드 분석 사례
지금까지 악성코드 분석과 리버싱 기술에 관하여 간단히 포스팅해보았는데요, 실제 악성코드 분석 사례와 연구 자료들은 KISA를 포함한 전문기관과 다양한 연구소를 통해 열람이 가능합니다. 악성코드 분석에 관심이 많으신 분들을 위해 하단에 참고하실 자료실 주소를 남겨놓으니 참고하시길 바랍니다.
그럼 오늘도 좋은 하루되시고, 다음 포스팅에서는 더 흥미로운 보안이슈로 만나뵙겠습니다^^