블로그

Dridex가 당신을 지켜보고 있습니다

F5 썸네일
F5
2016년 6월 22일 게시

Dridex 개발자는 보안 공급업체의 탐지 및 완화 기술을 지속적으로 회피하기 위해 새로운 기능 난독화, 새로운 구성 인코딩과 같은 업데이트를 자주 출시합니다. 그들은 악성 소프트웨어의 초점을 유럽 금융 기관에서 미국 내 새로운 은행 기관으로 옮겼습니다.

분명히, 맬웨어 개발자들은 클라이언트 및 서버 패러다임과 난독화에 뛰어난 능력을 보여줍니다. 다음 연구에서는 이러한 기술 세트에 대해 설명합니다. Dridex 작성자의 맬웨어 기능의 지속적이고 빈번한 업데이트에 대한 헌신과 함께 Dridex는 매우 민첩해지고 결과적으로 감지, 해독 및 분석이 어려워집니다.

드리덱스는 당신을 어떻게 감시하나요?

그렇다면 Dridex가 당신의 허락 없이 당신을 감시하고 있는데 당신은 그것을 모르는 이유는 무엇입니까?

원격 세션을 통해 은행 거래 중에 감염된 사용자의 컴퓨터에 연결합니다. 이 세션은 맬웨어가 VNC 프로토콜을 사용하여 여는 데스크톱의 다른 인스턴스에서 보관되기 때문에 사용자에게는 보이지 않습니다. 이 인스턴스는 복제되지만 공유되지 않으므로 공격자는 사용자의 마우스 및 키보드 움직임을 볼 수 없으며 그 반대의 경우도 마찬가지입니다.

악성 소프트웨어가 피해자의 컴퓨터에 설치된 후, 봇넷의 명령 및 제어(C&C)에 "전화"를 걸어 대상 목록을 얻고 다음 모듈을 요청합니다. VNC와 SOCKS.

활성화 프로세스는 다음 두 가지 방법 중 하나로 시작될 수 있습니다.

  • C&C로부터 받은 명령에 의해
  • 구성에서 VNC 플래그를 검사한 후 브라우저 기능 후크를 통해

본 연구는 주입 모듈 접근 방식에 초점을 두고 있습니다. (Dridex 구성 내부에서 VNC 시작이 트리거되는 방식은 이전 F5 문서 에서 설명했습니다.)

VNC 활성화 흐름

이 흐름에는 감염된 브라우저와 감염된 explorer.exe 프로세스 간의 상호작용이 포함됩니다.

브라우저의 역할

구성 내의 VNC 플래그는 Dridex가 브라우저에 주입한 네트워크 기능 후크의 악성 코드에 의해 검사됩니다.

  1. 이 후크를 사용하면 Dridex가 각 요청을 전송하기 전에 검사할 수 있습니다.

이 후크를 사용하면 Dridex가 각 요청을 전송하기 전에 검사할 수 있습니다.
  1. 요청 URL이 "리디렉션" 구성의 URL과 일치하면 악성 스크립트에 대한 요청이 후크된 네트워크 기능에서 c&c로 전송됩니다.
  2. 따라서 타겟 URL에 접근하여 악성 스크립트가 사용자에게 전송되었습니다. 다음은 뭐죠?

  3. 스크립트를 수신하면 VNC 플래그가 검사됩니다.
    VNC 플래그가 켜져 있으면 맬웨어는 암호화된 데이터를 수신할 것으로 예상합니다. 이 암호화된 데이터에는 맬웨어가 나중에 사용하는 정보가 포함되어 있습니다.

    • VNC IP 및 PORT - VNC 세션을 시작할 때 연결할 원격 주소
    • SOCKS IP 및 PORT — SOCKS 세션을 시작할 때 연결할 원격 주소
    • 데이터는 XOR을 사용하여 암호화됩니다(첫 번째 4바이트가 키임)
Dridex 그림 1: 전체 복호화 루틴
그림 1 : 전체 복호화 루틴

아래는 IP + 포트가 추가된(복호화된 루틴 이후) 서버의 간단한 HTML 응답의 예입니다.

alt="Dridex 그림 2: 복호화된 스크립트 내용; IP와 PORT가 추가되었습니다.
그림 2: 복호화된 스크립트 내용; IP와 PORT가 추가되었습니다.

감염된 브라우저는 이러한 암호화된 IP 레코드를 구성과 동일한 키 아래의 레지스트리에 저장하지만, 별도의 하위 키 아래에 저장합니다.
 

Dridex 그림 3: IP 및 PORT 레지스트리 레코드
그림 3: IP 및 PORT 레지스트리 레코드

감염된 브라우저는 Windows의 이벤트 개체 API를 사용하여 감염된 explorer.exe에 VNC를 시작하도록 알립니다. 이 지점에서 감염된 explorer 프로세스가 활성화 프로세스를 인수합니다.


탐험가의 역할

  1. Explorer의 악성 코드는 VNC 연결을 담당하는 전용 스레드에서 무한 루프로 실행되고 브라우저에서 이벤트 신호를 기다립니다. 이 신호를 수신하면 레지스트리에서 IP + 포트 레코드를 추출하여 디코딩합니다.
Dridex 그림 4: 감염된 브라우저는 감염된 explorer.exe가 읽기 전에 레코드를 씁니다.
그림 4: 감염된 브라우저는 감염된 explorer.exe가 읽기 전에 레코드를 씁니다.
  1. Explorer는 Windows API "LoadLibrary"의 사용자 정의 구현을 사용하여 vnc_x32.dll을 로드합니다.
    • 이 지점 이전에는 VNC 모듈이 원시 데이터로 Explorer의 메모리에 상주했습니다.
    • 모든 PE 섹션을 매핑한 후 vnc.dll의 DllEntryPoint를 호출합니다(DLL_PROCESS_ATTACH 플래그 포함)
    • 이 기술은 "LoadLibrary"를 추적할 수 없기 때문에 VNC 모듈이 로드되는 시점을 난독화하여 분석하기가 훨씬 어렵습니다.
Dridex 그림 5: explorer.exe – 원래 탐색기 코드, worker_x32.dll – 주요 Dridex 모듈, vnc_x32.dll – vnc 모듈
그림 5: explorer.exe – 원래 탐색기 코드, worker_x32.dll – 주요 Dridex 모듈, vnc_x32.dll – vnc 모듈
  1. vnc_x32.dll은 서버를 시작하고 중지하는 두 가지 함수를 내보냅니다.
  2.  

Dridex 그림 6: VNC에서 내보낸 기능
그림 6: VNC에서 내보낸 기능

     

  1. Explorer의 작업자 모듈은 VNC 연결을 시작하기 위해 IP와 포트를 매개변수로 사용하여 VncStartServer 함수를 호출합니다.
     

     

Dridex 그림 7: 매개변수를 포함한 VNCStartServer 호출
그림 7: 매개변수를 포함한 VNCStartServer 호출

     

  1. SOCKS 모듈이 관련되지 않은 외부 VNC IP 주소가 수신된 경우 VNC 모듈은 공격자의 VNC 서버에 연결을 시작합니다. 감염된 컴퓨터가 원격 세션을 시작합니다. 이는 일반적으로 시청자가 서버 역할을 하므로 프로토콜을 사용하는 독특한 방법입니다.
    • 로컬 VNC 주소를 수신하면 Dridex 모듈은 공격자로부터 들어오는 VNC 연결을 수신하게 됩니다.
  2.  

     

  3. VNC 서버에 TCP 연결을 설정한 후, vnc_x32.dll은 VncStartServer 루틴에 매개변수로 전달된 bot_id 문자열을 사용하여 챌린지를 생성합니다. 이는 VNC 프로토콜 핸드셰이크가 발생하기 전에 서버의 ID를 확인하는 데 사용됩니다.

     

  4.  

Dridex 그림 8: 피해자와 공격자 통신 계획
그림 8: 피해자와 공격자 통신 계획

이후 모든 단계가 성공하면 VNC 원격 세션이 시작되고 사기꾼은 피해자의 컴퓨터에 대해 피해자의 지식 없이 작업을 수행할 수 있습니다.

이 기능은 일반적으로 은행 내 보안 제품을 우회하기 위해 자격 증명을 도용한 후 보완적인 조치로 사용됩니다. 이러한 제품은 브라우저의 고유한 지문을 사용하여 사용자를 식별하는 것을 목표로 합니다.

F5 연구팀, 드리덱스를 주시하다

보안 업체와 사이버 범죄자들 사이의 끊임없는 경쟁으로 인해 범죄자들은 더욱 난독화되고 다양하고 독립적인 구성 요소로 구성된 맬웨어를 만들게 되었습니다. 이러한 구성 요소는 맬웨어 작성자가 은행 기관과 보안 공급업체가 구축한 장애물과 보호 장치를 극복하는 데 도움이 됩니다. 이러한 구성 요소는 이제 모듈 간의 상호 작용을 이해하는 것이 필요하므로 분석 프로세스에 복잡성을 더합니다.

이 경쟁은 또한 연구자로서 우리가 Dridex의 캠페인과 진화를 모니터링하고 경계하도록 촉구합니다.