본문 바로가기
AhnLab 보안in

전격 해부, 악성코드도 트랜스포머가 있다?

by 보안세상 2020. 4. 13.

2011.09.14

 

안녕하세요. 안랩인입니다. 즐거운 추석 명절 되셨는지요 ^^ 귀향길에 차는 많이 막히지 않으셨는지 모르겠습니다. 우리가 모두 송편을 먹으며 즐거워하고 있을 때도 악성코드는 쉬지 않고 우리들의 PC를 호시탐탐 노리고 있다는 사실! 명절정도는 쉬어줘도 좋은데 말입니다.

그래서 오늘은 변화무쌍한 악성코드의 실체에 대해 소개해 드리겠습니다. 악성코드의 변형은 현재진행형입니다. 악성코드 제작자들은 분석가들의 추적을 따돌리기 위해 각종 최신 수법들을 이용하고 있습니다. 그 중 하나가 다형성(Polymorphic) 기법입니다. 이를 이용하여 바이러스를 제작하면 파일이 감염될 때마다 그 형태가 변하여 감염여부를 확인하기 힘듭니다. 다형성 기법을 이용한 바이러스가 바로 다형성 바이러스이며, 이러한 복잡한 형태의 바이러스는 점점 증가하고 있는 추세입니다. 이 글에서는 다형성 바이러스의 일종인 Win32/Xpaj.를 자세히 분석해보고자 합니다. 이를 통해 다형성 바이러스의 특징과 수법을 이해할 수 있기를 기대합니다.


다형성 바이러스 Win32/Xpaj.C  분석

 

Win32/Xpaj 바이러스는 2008년에 처음 발견되었으며 2009년에는 변형인 Win32/Xpaj.B형이 발견되었습니다. 그리고 최근에는 진단 및 치료가 더욱 어렵게 되어 있는 또 다른 변형인 Win32/Xpaj.C형이 발견되었습니다.

 

대부분의 바이러스 제작자들은 원본 정상파일이 손상되는 위험을 피하기 위해 복잡하게 원본 파일을 변경하지 않는 것이 일반적입니다. 그러나 최근에 발견된 Win32/Xpaj B형, C형 바이러스 같은 경우는 예외라고 할 수 있습니다. Win32/Xpaj B형, C형 바이러스들은 EPO(Entry-point Obscuring)와 다형성 바이러스 특징을 모두 가지고 있어서 바이러스의 시작지점과 공통적인 바이러스 몸통 부분을 찾기가 어렵습니다.

 

좀 더 자세히 살펴보면 정상 CALL, JMP 명령어를 임의로 패치 하여 자신이 원하는 코드 상의 위치로 분기하도록 하였으며 바이러스 몸통 부분으로 진입하기 위해 정상 서브루틴들을 임의로 변경하였습니다. 또한 명확한 바이러스 감염 표시가 없어서 파일의 감염 여부를 확인 하는 것도 다른 바이러스에 감염된 파일에 비해 쉽지 않습니다.

 

[표 1] 변종별 감염 특징 및 특이사항

 

* EPO(Entry-point Obscuring) virus

Entry-point Obscuring을 우리말로 하면 ‘시작 실행시점 불명확화'라고 할 수 있을 것입니다. 즉, 일반적인 바이러스처럼 정상파일의 EP(Entry-Point:프로그램의 진입점)를 변경시켜 바이러스 자신이 실행시키고자 하는 것을 실행시키는 것이 아니라 임의의 CALL 명령어 또는 JMP 명령어 부분을 바이러스 진입지점으로 수정하는 바이러스들을 공통적으로 EPO라고 칭합니다. 이런 EPO기법을 안티바이러스 엔진에서 진단하기 어려운 이유는 정상파일 코드영역 중 어느 부분의 CALL 또는 JMP 명령어가 변경되었는지 알 수 없기 때문에 변경되는 패턴을 찾지 못하면 코드영역 진입점부터 끝까지 스캔해서 찾아야 하는 어려움이 있기 때문입니다.

 

* 다형성(Polymorphic) 바이러스

파일이 감염될 때마다 그 형태가 변하는 다형성(Polymorphic)기법을 이용하여 감염여부를 확인하기 어렵도록 한 바이러스를 다형성 바이러스라고 합니다. 일반 백신에서 바이러스 코드의 특징을 찾아 감염 여부를 확인 한다는 것이 알려지면서 바이러스 제작자들은 암호화 방법을 구현하는 코드들을 변화시켜 특징을 찾기 어렵도록 했습니다. 암호화를 푸는 부분이 항상 일정한 단순 암호화 바이러스와는 달리 암호화를 푸는 부분조차도 감염될 때마다 달라지도록 만든 것입니다.

 

[표 1]은 변종별 특이사항을 표로 나타낸 것입니다. [표 1]에서 보이는 것처럼 최초 발견된 A형 같은 경우에는 감염 위치가 마지막 섹션으로 고정이고 CALL 명령어들만 패치 되어 있는 경우라서 진단/치료가 비교적 쉬웠습니다. 그러나 최근에 발견된 C형은 감염 섹션이 임의적이고 진단 후 치료에 필요한 데이터들이 암호화되어 있어 치료도 쉽지 않습니다.

1. 감염된 파일 특징

 

Win32/Xpaj.C형에 의해 감염된 파일은 [그림 1]과 같은 특징을 가집니다. 파일에 따라 패치된 CALL이 있을 수도 있고 없을 수도 있지만, 정상 서브루틴들이 임의로 감염되는 것은 동일하게 나타납니다. 원본 데이터들은 바이러스 몸통 부분에 인코딩 되어 저장되어 있습니다. 패치된 CALL은 감염된 서브루틴으로 분기되도록 동작을 하고 감염된 서브루틴들은 바이러스 몸통 부분의 데이터들을 이용해서 실제 바이러스 코드가 실행되도록 동작 합니다.

 

바이러스 몸통은 크게 4부분으로 분류할 수 있습니다. 첫 번째는 바이러스 감염 동작을 하는 ‘Virus Code’ 부분, 두 번째는 정상 서브루틴이 인코딩 되어 있는 ‘Encoded Original Subroutine’ 부분, 세 번째는 디코딩과 다양한 용도의 데이터를 추출할 때 사용되는 ‘4bytes Data’ 부분, 그리고 마지막으로 'Virus Code' 부분을 디코딩하고 그 후 분기하기 위한 코드들이 들어있는 'Decoding Routine Space' 부분입니다. Ahn

 

[그림 1] 감염된 파일의 특징

 


* 더 자세한 정보는 안랩 홈페이지에서 확인가능합니다. 좋은 하루 되세요.