우리를 노리는 '악성코드'의 정체는?

일반입력 :2012/01/03 09:05

김희연 기자

악성코드는 오늘날 해킹에 사용되는 주된 보안 위협이다. 특히 지난해 기승을 부렸던 지능형지속가능위협(APT) 공격의 주범도 악성코드였다. 최근 악성코드 공격은 지능화·고도화되고 있는 추세다.

원래 악성코드는 개발자들의 호기심에서 탄생했다. 그러나 점차 정치적·경제적 목적으로 이용되면돼 사회적 혼란을 초래하고 있다. 이제는 단순한 PC공격 수준을 벗어나 경제적인 피해를 발생시키고 있다.

최근 한국인터넷진흥원(KISA)의 악성코드 보고서에 따르면, 악성코드 공격 기술은 크게 ▲분석 방해·지연 기술 ▲악성코드 대량 삽입 기술 ▲악성코드의 모듈화 ▲악성코드의 은닉화 ▲안티 포렌식으로 나눌 수 있다.

■꼭꼭 숨어라 머리카락 보인다...분석 방해·지연 기술

악성코드는 스팸메일 발송, 개인정보 탈취, 감염 플랫폼 손상 등을 목적으로 다양한 방식으로 유포된다. 감염사실을 숨기기 위해 루트킷과 같은 분석 방해 지연 기법을 사용해 외부로 정보를 유출시킨다. 주로 악성코드는 자신의 프로세스 정보를 숨기기 위해, 프로세스 정보를 조회하기 위한 결과 값에서 자신의 프로세스 정보를 숨겨 커널 레벨 구조체의 정보를 수정하는 방식 등을 사용한다.

악성코드는 다양한 은닉화 기술을 이용해 사용자가 감염 여부를 진단하지 못하게 한다. 이때 감염된 플랫폼은 개인정보를 지속적으로 유포자에게 전달 가능하도록 해준다. 다른 플랫폼을 감염시킬 수 있는 중간 노트 역할도 수행해준다.

악성코드 분석·방해 기술로는 ▲프로그램 코드 일부나 전체를 변경하는 방법인 난독화 ▲실행파일 압축형식으로 배포되는 프로그램의 리버싱을 어렵게 하거나 프로그램 용량을 줄이기 위해 사용하는 방식인 패킹 ▲안티바이러스 프로그램이 자신을 분석하는 것을 방해하는 안티 디버거 ▲가상환경에서 악성코드 분석 기술을 우회하는 방식인 안티 가상화 ▲웹사이트 해킹해 악성코드 유포지로 사용하는 시한폭탄 방식이 이용되고 있다.

■클릭 한 번에 감염? 악성코드 대량 삽입 기술

해커들은 대량의 악성코드 유포를 위해 웹사이트 취약점을 주로 이용한다. 웹사이트에 악성코드를 삽입하는 경우에는 SQL인젝션을 이용하는 경우가 가장 많다. SQL인젝션은 홈페이지와 데이터베이스가 상호 데이터 교환 시 검증을 수행하지 않아 공격자가 삽입한 SQL명령어가 실행되면서 문제가 발생한다.

최근에는 해커들이 SQL명령어를 특정 웹사이트에 주입하는 것은 물론이고 SQL명령어를 대량으로 삽입하기 위해 문자형 칼럼 자료값 모두에 악성코드 유포지 URL을 삽입하는 형태도 등장했다. 또한 데이터베이스에 악성코드 유포지 URL스크립트를 삽입하는 방법을 이용하기도 한다.

■악성코드의 진화 '스마트하게'

악성코드의 진화로 해커들은 악성행위별로 악성코드를 모듈화해 유포하기 시작했다. 기존에는 다양한 기능을 하더라도 하나의 파일로 만들어 악성코드가 유포돼왔다. 그러나 이제는 악성행위의 다양화는 물론이고 감염PC에 오랫동안 머물러 분석방해 할 수 있는 기법들을 이용하기 시작했다.

사용자가 악성코드에 감염되면 해당 악성코드는 다른 기능을 수행하는 악성코드들을 다운로드 하는 역할만 수행한다. 그 다음 모듈화된 악성코드 기능이 실행되는 것을 제한해 악성코드로 판단하는 기준을 충족하지 못하도록 해 안티 바이러스 프로그램을 우회하도록 한다.

■악성코드의 은닉화

자신을 은닉시켜 사용자들을 속이는 대표적인 기법이 ‘루트킷’이다. 루트킷은 시스템 내부에 침투해 시스템에게 잘못된 정보를 전달하거나 민감한 데이터를 악성코드 제작자에게 유출한다. 다른 악성코드와 달리 루트킷의 주 목적은 시스템 관리자에게 발각되지 않는 것이다.

다양한 방법을 이용하는 루트킷은 백신 프로그램 역시 시스템 서비스를 사용한다는 것을 이용하는 경우도 있다. 루트킷의 한 종류인 부트킷의 경우는 MBR영역을 감염시키기 때문에 애초에 탐지 자체가 불가능하도록 하기도 한다.

이 밖에도 원래 함수 코드를 수정하는 후킹(Hooking), 시스템 프로그램 변조, 커널 데이터 조작, 디바이스 드라이버 사용 등이 은닉법을 이용한다.

■'창과 방패'의 전쟁...안티 포렌식

악성코드 탐지와 분석을 어렵게 하는 방식을 이용하기도 한다. 포렌식에 이용되는 정보 자체를 최소화하는 것이다. 안티 포렌식 공격기법으로는 ▲데이터 디스트럭션 ▲데이터 하이딩 ▲데이터 변환 ▲데이터 칸트러셉션 ▲데이터 패브리케이션 ▲파일 시스템 공격이 이용된다.

안티 포렌식 데이터 디스트럭션 분석에 이용될 수 있는 각종 변수값, 메모리 버퍼 값들을 안전하게 삭제하는 방법을 이용한다. 결정적인 정보들을 처음부터 발견하기 어려운 위치에 저장해 공격하기도 한다.

관련기사

즉 안티 포렌식 악성코드 공격 기법은 기본적으로 포렌식 분석 자체를 방해, 아예 분석가가 잘못된 결론을 내도록 유도하는 것이 목표다.

이에 대해 보안 전문가들은 “악성코드 공격의 최우선 목적이 대상 시스템에 침투하는 것인 만큼, 악성코드가 악의적 행위를 섣부르게 수행한다면 쉽게 보안프로그램에 탐지될 수 있다”면서 “최근 악성코드는 다양한 경로를 이용해 전파되고 있어 사용자는 이러한 경로 자체를 미리 차단하는 것이 중요하다”고 설명했다.