페이스북의 계정정보가 변경되었다는 제목의 바이러스 메일이 발송되고 있습니다. PIF 확장자의 파일이 첨부되어 있고 이 파일을 실행 할 경우 바이러스가 감염된다고 하는데, PIF 확장자는 다소 낯선 확장자입니다. 그 만큼 설마 바이러스가 동작가능한 확장자겠어? 라는 잘못된 생각까지 떠오르네요.

윈도우 상에서는 위험 파일로 감지하고 실행 여부를 묻는 경고창이 나오지만, 이를 무시하는 사용자가 다수기 때문에 감염될 가능성이 있다고 하네요. 다행히도 백신상에서는 감지가 되고 있는 것 같습니다. 메일 내용을 읽기 위해서는 마이크로소프트의 실버라이트가 필요하다고 그림을 띄우고 이 그림을 클릭하면 실버라이트 설치파일로 위장한 PIF 바이러스 파일이 받아집니다. 

페이스북에서는 설정에 따라 자신이 활동하는 페이스북 친구들의 소식이나 새로운 댓글 소식등을 메일로 보내주게 되는데, 이러한 기능을 악용하여 사칭 바이러스 메일이 나오지 않을까 생각합니다. 

지식인을 하면서 가장 많이 접하는 질문이면서, 몇가지 보안 유언비어를 손으로 꼽자면 그 중에서 del usp10.dll lpk.dll imm32.dll /a /s 명령어를 이용한 악성코드 치료법 아닐까 싶습니다. cmd 명령어를 이용한 바이러스 치료방법 이라는 각종 유언비어들이 퍼지기 시작하면서 정확하게 알지 못해 컴퓨터 고생하는 상황이 무엇인지 새삼 느꼈습니다.

이번 포스팅에서는 이 유언비어의 문제점에 대해 조목조목 따져보겠습니다. 


< 파일이 지워지지 않는다면 강제로 삭제하라? >
 
del usp10.dll lpk.dll imm32.dll /a /s 명령어는 명령 프롬프트상에서 작동하는 명렁어로써 드라이브내의 usp10.dll 파일과 lpk.dll과 imm32.dll 을 삭제하는 명령어 입니다. 이것이 왜 악성코드 치료방법으로 부각되고 있는 것일까요?

본론으로 들어가기 전 유언비어에서 주장하는 내용에 대해 알아보자면 "컴퓨터에는 기본적으로 usp10.dll 파일과 lpk.dll 파일이 특정 갯수로만 있으며, 이 갯수보다 많게 동일 파일이 존재하면 바이러스에 감염된 것으로 볼 수 있으며, 반드시 특정 갯수 외에 usp10.dll 과 lpk.dll은 삭제해야 한다. 어차피 강제로 삭제하는 과정에서 정상파일은 액세스 거부 메세지와 함께 삭제되지 않으므로 악성파일만 삭제된다." 라는 주장입니다. 

이러한 유언비어가 시작된 발단은 게임계정정보를 전문적으로 탈취하는 OnlineGameHack 악성코드의 출현으로 해당 악성코드에 대해 여러 치료방법이 주목을 끌게 되었고, 거기서 나온 것이 OnlineGameHack 이 usp10.dll 파일과 lpk.dll 파일을 변조한다는 주장이였습니다. 실제로도 초창기 OnlineGameHack 악성코드는 마치 정상적인 시스템파일인 것으로 위장하기 위해 정상 시스템파일을 악성 파일로 변조시켰고 그 중에 usp10.dll 파일과 lpk.dll 이 포함되어 있었습니다. 

usp10.dll 과 lpk.dll은 여러 프로그램들을 구동하기 위해서 반드시 필요한 것이기 때문에 윈도우마다 기본적으로 설치가 되어 있습니다. 이런 역할을 하는 정상 시스템파일의 이름을 악성코드가 자신을 감추는데 악용을 한 것입니다. 

< usp10.dll 을 찾을 수 없어 프로그램이 실행되지 않는다는 질문 >
 
문제는 'usp10.dll 과 lpk.dll 을 감염시키는 악성코드가 있다' 라는 내용의 정보를 접한 네티즌들은 곧 'usp10.dll과 lpk.dll 은 악성코드임으로 삭제해야 한다' 라는 잘못된 결론에 도달하게 되었고, 결론적으로 삭제할 수 있는 usp10.dll과 lpk.dll 파일을 모두 삭제하는 명렁어를 배포하기 시작했습니다. 정상파일로써 이용되며 매우 중요한 파일이라는 사실은 철저히 가려졌습니다. 

실제로 처음에 보안 업계에서 제시한 올바른 치료법은. 자신의 바이러스 감염 사실이 확실하나 백신을 통해 치료할 수 없는 상황이라면 수동으로 dll파일을 제거하고 정상 dll 파일로 바꾸는 것이었습니다. 네티즌은 삭제절차 이후에 dll 파일을 정상파일로 교체해야 된다는 사실을 쏙 빼 놓고 무작정 제거만 한 것입니다. 

만약 교체 절차가 빠진다면 어떤 상태가 될까요? 수동으로 감염파일이 제거 되었으나, 정작 프로그램 실행에 필요한 정상 dll 파일 또한 없는 상태가 된 것입니다. 이 경우 당연히 시스템이나 프로그램 상에서 오류가 나타날 수 밖에 없습니다. 즉, 삭제 뿐만 아니라 정상 파일의 dll 파일로 교체해야 하여야 비로소 올바른 치료방법으로 볼 수 있다는 것입니다. 


< 포스팅 중인 내 컴퓨터에는 usp10.dll 과 lpk.dll 파일이 17개나 있네? >

 
유언비어 내에서 주장하는 dll 파일 갯수에 대해서도 문제가 있습니다. usp10.dll 이나 lpk.dll 등 수 많은 dll 파일들은 프로그램마다 필요에 의해 별도의 수정본을 만들어 프로그램 각 폴더에 따로 저장하는 경우가 비일비재 합니다. 컴퓨터 내부에는 프로그램 환경에 따라 같은 이름의 여러 갯수의 dll 파일이 존재할 수 있기 때문에 콕 찝어 몇개 이상의 dll 파일이 있으면 비정상이다! 라고 이야기하는 것은 잘못 된 주장입니다.

결정적으로 해당 dll을 악용하는 OnlineGameHack 악성코드는 별도의 usp10.dll 과 lpk.dll 을 파일을 추가로 생성하여 사용하는 것이 아니라, 기존의 usp10.dll 파일과 lpk.dll 파일을 이용하는 것이기 때문에 악성코드가 감염되었다고 해서 전체적인 usp10.dll, lpk.dll 파일 갯수는 절대로 변하지 않습니다.  


< 이미 예전(2010년)에 유행했던 바이러스임을 확인할 수 있다 >

이 유언비어의 또 다른 문제점은 악성코드가 매일매일 새롭게 변하고 있다는 것입니다. 즉, 감염되는 시스템 파일이 점차 시기에 따라 변하고 있다는 것인데, 최근에 나오는 악성코드는 기존의 usp10.dll 과 lpk.dll 이 아닌 다른 dll 파일을 감염시키고 있다는 사실을 반드시 알고 계셔야 합니다. 

이것이 왜 문제냐? 라고 생각하실 수 있습니다. 더 이상 악성코드가 usp10.dll 과 lpk.dll 을 이용하지 않게 되면서 기존의 수동 삭제방식을 이용하여 삭제해버릴 경우에 정상적인 dll 파일을 삭제해버릴 수 있다는 것입니다. 질병에 비유를 하자면, 새로운 형태의 바이러스가 감염되었으나 과거에 사용하던 약을 이용해 치료를 시도하다 몸이 망가지는 것입니다.  

특히나 바이러스에 감염이 되었는지 되지 않았는지 정확하게 알지도 못한 채로 무작정 파일을 삭제해 버리는 사용자들이 많은 것으로 볼 때 애꿎은 정상파일만 삭제하게 될 가능성이 매우 높습니다. 
 

 

netstat 포스팅 이후로 거듭 강조드리지만 되도록이면 이러한 바이러스는 백신을 이용해 치료해주십시오. 인터넷 상에 돌아다니는 각종 보안지식 중에는 허위로 작성되거나 전혀 근거가 없거나 이번 유언비어처럼 중요한 내용이 빠져있어 시스템에 치명적인 타격을 줄 수 있는 정보가 많습니다. 특히나 이번 유언비어는 시스템파일을 조작하는 만큼 단순히 프로그램 구동 불가를 넘어서 부팅 불가까지 초래할 수 있고, 실제 사례도 있다는 점을 명심하십시오. 

백신에서도 대부분의 OnlineGameHack 바이러스를 진단/치료가 가능한 만큼, 바이러스를 치료한다고 신뢰를 할 수 없는 유언비어를 듣기보다는 비교적 신뢰있는 백신 프로그램을 이용하는 것이 확실하고 안전한 바이러스 치료가 될 수 있습니다. 



 


분석 : 
YIS 동아리 팀장 이규형 호밌(ttuu44@naver.com) ( http://ris1.tistory.com/ )
YIS 동아리 팀원 박정훈 삼수맨(dkaldyfl@naver.com) ( http://blog.bpscal.com/


악성코드 소식 과 파일 제공 및 같이 밤새워 분석해주신 이규형 팀장님 감사합니다. :)
 

2012.1.20 같은 동아리 팀장 이규형 군으로 부터 신종 악성코드 소식을 듣고 파일 분석을 시작하였습니다. 

 우선 파일 아이콘 자체가 VB 으로 작성된 파일임을 금방 눈치챌 수 있죠. 추가적으로 peid 를 통해서 VB로 작성된 것임을 더욱 확실히 확인할 수 있었습니다. 처음에는 Ollydbg 를 이용해 분석하려 하였으나 디버거상의 오류로 부득이 하게 책으로만 접해보았던 IDA Pro 를 사용하게 되었습니다. 

 악성코드 증상은 파일을 실행하였을 시에 윈도우 인식이 되지 않는 문제였습니다. 실제 실행해본 결과 XP의 경우 블루스크린과 함께 재부팅시 OS 부팅 불가. 7의 경우 모든 데이터 읽기 쓰기가 작동되지 않고 컴퓨터를 정상 종료해도 종료되지 않으며 재부팅시 OS 부팅 불가 현상이 발생합니다. 

 무엇보다도 AVG를 제외한 어떠한 국내외 백신에서도 감지되지 않아, 아이콘이나 파일이름을 바꾸어 재 배포할 경우 심각한 문제가 발생할 수 있었습니다. 

 
 처음에는 엉뚱한 부분을 분석하였으나 리버싱 책을 참고하면서 특정 부분에 함수 쿼리가 몰려있으며, 어느 부분부터 함수의 시작인지 발견하게 되었고, 동시에 vba 기본 함수와는 거리가 먼 함수 테이블을 확인할 수 있었습니다. WriteBytes 라는 함수명으로 미루어 바이트를 조작하는 것을 알 수 있습니다. 


어떠한 Windows OS에도 적용되는 것을 보아서 어느 Windows OS에나 공통적으로 설치되어 있는 기능이나 OS에 구애받지 않는 기능을 이용하여 공격하고 있음을 짐작할 수 있습니다. 특히나 OffsetLow High 와 같은 함수로 미루어 볼 때 기존 바이트를 읽어오고 사용함을 알 수 있습니다. 


 함수명을 검색 중 해당 함수가 개인이 제작한 MBR 조작 함수라는 정보를 얻게 되었고 과거 DDoS 좀비파일의 자가 파괴형식이 MBR 손상이였다는 정보에 비추어 볼 때 이번 공격도 MBR을 손상 시킴으로써 피해를 발생시키는 것임을 짐작할 수 있습니다. 더군다나 MBR 부분은 특정 OS에 구애받지 않는 부분 입니다. 

 또, MBR 조작 원본 소스코드의 주석 중 '512 바이트를 그대로 옮겨놓는다.' 라는 문구는 하드디스크의 512바이트가 MBR 부분이라는 정보에 비추어 볼 때 MBR 을 사용하는 것이 확실해 보입니다. 


MBR 손상이라는 가설을 더욱 확실하게 하기 위해 MBR 보호프로그램을 가동한 채로 악성코드를 실행해 보았습니다. 악성코드는 보호프로그램에 의해 어떠한 손상작업도 할 수 없었고 결론적으로 OS는 어떠한 손상도 입지 않았습니다.

악성코드는 MBR 을 이용한다는 것이 확실하게 드러난 것입니다. 




악성코드 실행으로 손상된 컴퓨터의 MBR 영역을 보니 기존 DDoS 의 MBR 파괴당시 처럼 16비트상으로 00 의 아무 의미없는 코드로 MBR 부분이 덮어씌워졌음을 알 수 있습니다. 

현재 해당 악성코드 및 함수파일은 오래전 부터 배포되어져 왔으나 신고의 부재인 것인지 백신에서 감지하지 못하고 있습니다.
https://www.virustotal.com/file/717e8afdf58cb17108fb17dbe3ef50edafc54b803f4f2d6ae0aae49e6d50db4f/analysis/1327118871/ 

EXE 파일을 실행하는 것은 어느정도의 위험부담을 안고 가는 것이므로, 평소 실행하실 때에 다른 사용자가 있고 정상적으로 작동하고 있는 것인지 반드시 확인하셔야 하며, 블로그나 카페에 단독적으로 올려져 있는 첨부파일은 바이러스일 가능성이 높으므로 되도록이면 소프트웨어는 소프트웨어 개발사 홈페이지에서 직접 다운로드 받으시고, 핵과 관련된 파일은 사용을 자제해주시기 바랍니다. 

+ Recent posts