본 글은 몽(정구홍)님의 페이스북 해당 문제 관련 글에서 댓글을 달아주신 점제(강흥수)님, 비스트(이승진)님의 댓글과 박세한님이 올려주신 고귀한 감염된 파일의 분석을 토대로 작성된 글임을 밝힙니다.
우리가 자주 사용하는 프로그램 중 윈도우(Windows)환경에서 원격으로 파일을 보내고 서버를 관리하는 등의 작업을 쉽게 할 수 있도록 도와주는 프로그램이 있을 것이다. 그 중 국내 기업인 넷사랑컴퓨터의 제품 Xshell이나 Xftp 등 ‘X’가 붙은 제품의 시리즈는 많이 사용할 것으로 생각된다. 특히, 넷사랑컴퓨터의 제품은 개인사용자 무료에다가 사용하기도 편리하여, 많은 사용자를 보유하고 있다. 하지만 이 제품에 문제가 발생했다. 바로 넷사랑컴퓨터에서 업로드 한 제품들의 업데이트 파일에 악성코드가 첨부되어 사용자들에게 퍼진 것이다. 많은 사용자를 보유한 제품이라 더 난감한 상황이다. 더군다나 기업에서 문제를 파악하고 새로운 업데이트 파일을 올렸지만, 아직 완전히 해결된 것으로 보이지 않는다.[1]
넷사랑컴퓨터는 국내 보안 네트워크 솔루션을 개발하는 업체로 컴퓨터 소프트웨어 벤처회사다. 1997년부터 리눅스와 유닉스에 연결하는 솔루션을 개발하면서 PC X server, SSH 클라이언트, FTP 클라이언트 등 다양한 제품을 제공하고 있다.[2] 더욱이 제대로 된 홍보가 없었음에도 제품을 사용해본 사람들의 입소문을 타고 많은 사용자를 보유하고 있다.[3] 넷사랑컴퓨터는 2012년부터 미국, 일본, 중국어 등 판매 제품의 지원언어를 다국어로 확대하면서 많은 매출을 내고 있는 글로벌 기업이기도 하다.[4] 단순히 인터넷에서 클릭만으로 제품을 사고 사용할 수 있어 적은 비용으로도 큰 매출을 만들어낼 수 있었다고 한다.
문제의 발단은 2017년 7월 18일에 배포한 업데이트 파일에 있다. 아직 문제가 어떻게 발견되었는지 자세한 내막은 알 수 없지만, 해당 기업은 문제를 확인하고 긴급 공문을 올렸다. 공문은 18일에 배포한 업데이트 파일에 악성코드가 첨부되어 있으니 새롭게 업데이트를 받으라는 내용이었다. 업체측에 의하면 문제에 해당하는 제품은 Xmanager Enterprise 5.0 build 1232, Xmanager 5.0 build 1045, Xshell 5.0 build 1322, Xftp 5.0 build 1218, Xlpd 5.0 build 1220로 이 외에 것은 해당하지 않는다고 한다. 이 말이 맞다면, 아이러니하게도 업데이트를 하지 않았다면 걸리지 않았을 문제다. 그럼 해당 파일을 살펴보자.
감염된 설치 파일을 VirusTotal로 확인해본 결과, 아래와 같은 결과가 나왔다.
안랩, 알약, 카스퍼스키, 체크포인트의 백신 엔진에서는 악성코드가 포함된 파일이라는 결과를 보여준다. 해당 악성 바이너리는 빌드된 파일 위에 패치된 형태가 아니라 소스코드에 포함되어 빌드된 형태이다. 해당 악성 함수와 인코딩된 악성코드는 PE파일 내부에 코드와 데이터로 안착되어 있기 때문이다. 서명이 유효하고 빌드 전에 포함, 배포되었다는 점에서 개발자 컴퓨터나 빌드서버까지 공격당한게 아닌가 조심스레 추측해 본다. 또한 악성코드 파일에 사용된 인증서와 새로 업데이트된 파일에 사용된 인증서가 같다.
해당 제품을 설치하면 ‘c:\program files(x86)\NetSarang\[프로그램]\nssock2.dll’ 경로에 nssock2.dll 파일이 있는 것을 확인할 수 있다. 바로 이 파일이 문제가 되는 파일로, 악성코드가 추가되어 있다. 이 파일을 살펴보면 악성코드는 쉘코드 형태로 되어 있고, 데이터 영역에 있는 코드를 디코딩해서 실행한다. 즉, virtualalloc을 통해 악성코드를 메모리에 올려서 실행하는데, disasm을 깨뜨리는 간단한 트릭이 포함되어 있다. 악성코드가 실행되면 UDP로 서버에 연결하여 데이터를 주고받는다. 연결되는 서버의 도메인은 'nylalobghyhirgh.com'인데 막상 서버에 연결하려고 하면 닫혀있다.
감염된 nssock2.dll 파일을 분석해보면 UDP를 통해 데이터를 보내고 있는 코드가 있다. 하지만 실제로 와이어샤크를 통해 오가는 패킷을 보면 UDP 연결을 통한 데이터의 전송은 보이지 않는다. 이를 봤을 때, 추측하기로 UDP를 통해 서버에 연결되는 트리거가 따로 존재하는 것 같다. 아래의 사진은 악성코드가 활동하는 부분이다. 대략 8시간 정도 기다렸다 실행되는데, 막상 URL은 디코딩하고 보내지는 않는다.
악성코드에 감염되었는지 확인할 수 있는 방법은 크게 세 가지다. 먼저, 프로그램을 다운로드 할 때 백신에 파일이 걸렸다면 문제의 파일임을 확인할 수 있다. 본 악성파일은 카스퍼스키 랩과의 협조로 백신에 악성코드 정보가 제공되었다고 한다. 두 번째로 이번 악성코드에 문제가 되는 파일 nssock2.dll(c:\program files(x86)\NetSarang\[프로그램]\nssock2.dll)의 크기가 180,432바이트(MD5 해시: 3b7b3a5e3767dc91582c95332440957b)일 때 문제의 파일이라고 볼 수 있다. 마지막으로 프로그램을 실행한 후 도움말의 (프로그램) 정보를 보면 프로그램의 버전을 알 수 있으므로 이를 통해 감염되었지를 알 수 있다.[5]
정리하자면 제품 패키지에 악성코드가 함께 첨부되어 사용자들에게 퍼진 상태이기 때문에 해당 제품을 사용하는 기업에서는 대응이 필요할 것으로 보인다. 특히, 서버에 연결하는 기능을 가진 제품이기 때문에 서버의 계정 정보가 유출됐을 가능성도 염두해야 한다. 물론, 갑작스레 벌어진 일이기 때문에 해당 기업도 정신이 없을 거라 생각되지만, 당분간은 조심할 필요성이 있다고 본다. 또한, 단순히 기업에서 제공한 업데이트 패치가 있긴 하지만, 삽입된 악성코드가 새로운 악성코드를 다운받아 추가로 설치했을 가능성도 아직 배제할 수는 없기 때문에 본 글에서는 운영체제를 다시 설치하라고 권고하고 싶다. 찝찝하잖아.