어두운 한국과 PuTTY 툴 행위 발견

Nowaday/보안 이슈 2013. 4. 8. 23:34 Posted by 알 수 없는 사용자


[원문] Dark South Korea and Discovered PuTTY Tools Behaviours by Zemanta


ERIC ROMANG BLOG에 공개된 글에서 Dark South Korea라는 표현을 쓰고 있습니다. 이 말이 무슨 의미인지 몰라서 검색을 해 봤는데 이와 관련된 글은 없더라구요. 제가 생각하기로는 이번 2013년 3월 20일 사태를 표현하여 어두운 한국이라는 표현을 쓰지 않았나...라는 추측을 해 봅니다. 아무튼 3.20 사태에 사용된 드롭퍼(Dropper) 중 하나를 분석한 내용인 듯 합니다. 자세한 내용을 보기 전에 간단하게 관련 정보를 살펴보면 좋을 것 같습니다.


alg.exe (Application Layer Gateway Service)


윈도우 작업관리자를 실행하면 볼 수 있는 정체모를 프로세스입니다. 이 프로세스는 인터넷 연결 공유 및 윈도우 방화벽에 대한 타사의 프로토콜 플러그인을 지원할 수 있도록 하는 윈도우 서비스입니다[1]. alg.exe는 대부분 보안과 관련된 프로세스입니다. FTP나 RTSP와 같은 응용프로그램들이 클라이언트 컴퓨터에서 서버의 알려진 포트와 통신을 할 때, 수동 TCP/UDP 포트를 동적으로 사용가능 하도록 도와주는 역할을 합니다. 그리고 한 컴퓨터의 소프트웨어가 방화벽이 존재할 수도 있는 다른 컴퓨터에 존재하는 응용프로그램에 접근할 수 있도록 해줍니다.


만일 어떤 이유로 alg.exe 프로세스가 동작하지 않는다면, 보안 프로토콜은 통신 포트를 막아버리거나 네트워크 상에서 고의적으로 방화벽을 해꼬지 할 수 있어, 잠재적인 보안 상의 문제를 야기시킬 수 있습니다. 윈도우 방화벽을 사용하지 않도록 설정한다면 alg.exe 프로세스는 실행되지 않을 것입니다. 하지만 보안상 alg.exe는 활성화 되어있는 것이 좋으며, 의도적으로 끄지 않는 것을 권장합니다[2].


conime.exe (Console Input Method Editor)


conime.exe는 콘솔에서 입력할 때 사용되는 프로세스입니다. 마이크로소프트 윈도우 운영체제의 한 부분으로서 주로 아시아 계열의 언어를 콘솔에 입력할 때 사용됩니다. 윈도우에서 cmd.exe를 실행시키고 한글을 입력하면 conime.exe 프로세스가 실행하게 되는 것을 볼 수 있습니다. 문제는 콘솔 입력 창을 종료하여도 conime.exe가 실행된 채로 존재하는 경우가 있다는 것입니다. 즉, 쓸모 없는 프로세스가 지속적으로 실행이 되고, 이로 인해 보안 상의 문제가 발생할 수도 있다는 것입니다. 물론 큰 문제가 발생하는 경우는 드물지만, 불필요하게 실행되어 있는 conime.exe 프로세스는 종료해 주는 것이 좋습니다[3].


------------------------------


Dark South Korea 드롭퍼(Dropper) 중 하나를 분석하던 중 “%TMP%” 윈도우 폴더에 설치된 PuTTY 바이너리와 관련된 흥미로운 행위를 발견하였다. 이러한 행위들은 예상으로써 여겨질 수도 있지만, 나중에는 보다 효율적으로 사용될 수 있다.


설치된 두 개의 바이너리는 “alg.exe”와 “conime.exe”이고, mRemote와 SecureCRT의 설정파일에서 발견된 *NIX를 대상으로 “~pr1.tmp” 배쉬(bash) 파일을 업로드 하는데 사용된다.


“alg.exe”는 PuTTY 백엔드(back-end)에서 커맨드라인 인터페이스로써 동작하는 PuTTY 도구인 “plink.exe”이고, "conime.exe"는 커맨드라인의 안전한 파일 복사를 위한 SCP 클라이언트로써 동작하는 PuTTY 도구인 "pscp.exe"이다. 이 두 개의 바이너리는 정상으로서 악성코드와 관계된 그 어떠한 것도 포함하지 않으며, 단지 악성코드를 돕는 도구로 사용된다.


만약 mRemote가 설치되었다면, 드롭퍼는 “confCons.xml” 설정 파일에서 모든 필요한 정보(자격 증명, 포트, IP/도메인)를 추출하고, 저장된 패스워드를 복호화하기 위해 mRemote의 암호화 취약점을 이용한다. 취약점 공격 이후에 “conime.exe”는 대상 서버에 배쉬 파일을 드롭하는데 사용된다.


또한 만약 최신 SecureCRT 버전이 설치되었다면, 드롭퍼는 “*.ini” 설정 파일에 존재하는 모든 필요한 정보(자격 증명, 포트, IP/도메인)를 추출한다. SecureCRT에 저장된 각각의 커넥션은 “*.ini”를 사용한다. 이는 저장된 패스워드를 복호화하기 위해 알려지지 않은 취약점이 이전 SecureCRT 버전에 존재했던 것 같다. 그러나 최신 SecureCRT 버전에는 해당 취약점이 존재하지 않는 것 같다. 따라서 “conime.exe”가 대상 서버에 접속을 시도할 때 잘못된 암호로 인해 인증에 실패하게 된다.





SecureCRT의 잠재적인 취약점을 연구하는 동안, PuTTY 소프트웨어의 “HKCU\Software\SimonTatham\PuTTY\Sessions”와 “HKCU\Software\SimonTatham\PuTTY\SshHostKeys“ 레지스트리 키에 접근하는 ”conime.exe“에 관심을 가졌다.



대부분의 시스템 관리자와 같이 PuTTY를 설치하고, 또한 SecureCRT 소프트웨어에 기록된 잠재적인 서버에 해당하는 엔트리를 생성하였다.




그리고 드롭퍼를 한 번 더 실행하였다. “conim.exe”는 예상대로 대상 서버와 관련된 “HKCU\Software\SimonTatham\PuTTY\Sessions\192.168.178.54“ PuTTY 레지스트리 키에 접근하는 것을 확인할 수 있었다. 그리고 드롭퍼 인증 시험은 잘못된 패스워드 때문에 여전히 실패하였다.



그러나 “conime.exe”가 PuTTY의 또 다른 레지스트리 키인 “HKCU\Software\SimonTatham\PuTTY\SshHostKeys\rsa2@22:192.168.178.54“에 접근하는 것을 발견하였다. 



그래서 개인키와 공개 SSH 키를 생성하고, 이 SSH 개인키 인증을 지원하기 위해 putty 세션을 다시 설정하였다. 그리고 이 개인키는 암호에 의해 보호되지 않는다.



드롭퍼를 한 번 더 실행하자 대상 서버에서 성공적으로 인증한 것을 볼 수 있었다. 즉, “conime.exe”는 PuTTY 레지스트리 키에 존재하는 개인키를 사용한 것이다.



마지막 테스트로는 PuTTY 설정에서 개인키를 제거하고, PuTTY에 대한 SSH 인증 에이전트인 “pagent.exe”와 PSCP, PSFTP, Plink를 사용하였다. “pagent.exe”에서 개인키를 로드하고, 드롭퍼를 한 번 더 실행하였다. 그 결과 이전과 동일하게 대상 서버에서 성공적으로 인증되는 결과를 얻을 수 있었다.



결론(Conclusions)

  1. mRemote와 SecureCRT에 관련된 취약점으로 Dark South Korea 드롭퍼 중 하나를 분석함으로써, “나쁜X”들이 *NIX 서버를 감염시키기 위해 오래된 소프트웨어의 기존 취약점을 이용한다는 것을 알 수 있었다. 이 기존 취약점을 사용하는 이유는 개인키가 사용된 경우에 단순히 PuTTY를 대상으로 수행 할 수 있기 때문이다.

  2. 암호없이 개인키를 생성할 수 없다.

  3. PuTTY Pagent는 개인키를 이용하여 실행하지 말자!

* 출처: ERIC ROMANG BLOG by Zemanta

* 참고 사이트
[2] Knowledge Library, http://www.plusblog.co.kr/22, 2009.
[3] Knowledge Library, http://plusblog.tistory.com/27, 2009.

* 관련 사이트

'Nowaday > 보안 이슈' 카테고리의 다른 글

익스플로잇 데이터베이스 웹사이트 Inj3ct0r 해킹  (0) 2013.03.28
국가 인프라 해킹 - SCADA Exposed  (0) 2010.09.14
DLL Hijacking  (0) 2010.08.27
AND