블로그 보관함

2014년 2월 28일 금요일

[ZeusVM] 스테가노그라피 사용

Zeus 봇은 다양한 변종들이 만들어지고 있는 가운데 스테가노그라피를 사용하였습니다.
이미지 파일에 암호를 숨기는 기법은 오래전부터 있어 왔으며, Zeus 봇은 그 기법을 최근에 도입하여 사용하였습니다. 이 새로운 변종 Zeus 봇은 Xylitol 로 알려진 프랑스 보안 연구가가 최초로 소개했으며, ZeusVM이라고 불렀습니다.

ZeusVM은 이미지 파일에 암호화를 한 설정 데이터를 숨겼습니다. 설정 데이터에는 공격 대상인 인터넷 뱅킹 웹사이트 리스트가 포함됐습니다. 

그 설정 데이터는 Base64 인코딩과 RC4, XOR 인코딩 알고리즘을 사용하여 암호화되어 이미지 파일 끝부분에 추가되었습니다.

실제로 원본 파일은 구글 이미지 검색 서비스를 이용하면 구할 수 있으며, 암호화된 데이터가 추가되어 ZeusVM에 의해 생성된 이미지 파일를 원본 파일을 비교하면 훨씬 크기가 큰 것을 알 수 있습니다.

[그림 1] 이미지 파일에 추가된 암호화된 데이터(일부분)



















[그림 1]은 Security Affairs 블로그 에서 퍼온 것입니다.

ZeusVM에 대해서 자세히 원하면 하기 링크를 참조하면 도움이 됩니다:

[JAVA 악성파일] hosts 파일 변조

파밍 공격이 급증하고 있어 큰 문제입니다. 최근에는 카드사 및 기존 은행권 웹사이트 접속시 변조된 hosts 파일에 설정된 가짜 웹사이트로 이동되어 상당한 피해를 초래하고 있습니다.

특히 한국에서는 hosts 변조를 위해서 PE 파일을 이용해 배치 명령이나 WriteFile API를 이용해 특정 금융권 웹사이트 접속시 다른 IP 주소로 접속하도록 설정합니다.

이러한 최근의 상황 중에 hosts 파일 변조시 자바 취약점을 이용한 경우가 특이하여 글을 쓰게 되었습니다.

저는 취약점을 이용하는 부분에 해당하는 파일은 확보할 수 없었으며, hosts 변조하는 자바 파일은 확보하여 소개합니다.
[그림 1] hosts 파일 생성












[그림 2] 파밍 웹사이트 추가










감염된 웹사이트에 접속시 취약점이 발생되면 사용자 PC에 [그림 1]에서처럼 hosts 파일을 새로 생성하며 [그림 2]에서처럼 쓰레기 값과 함께 금융권 웹사이트가 파밍 웹사이트로 연결되도록 IP 주소를 변경합니다.

이러한 취약점을 이용한 hosts 파일 변조 기법이 국내에서도 유입될까요?

[Gong Da Exploit Pack]Exception을 이용한 XOR 키 생성 방법

Gong Da Exploit Pack에 의해 생성된 난독화 페이지는 분석하기 참 어렵습니다. 눈으로 따라가기 힘들며, 자바 스크립트 코드의 가독성을 높이기 위해 정리한 다음 하나씩 난독화를 해제하는 지겨운 작업을 한 다음에야 분석을 시작할 수 있습니다.
하지만 이 난독화 페이지도 다른 난독화 방법과 마찬가지로 XOR 연산을 응용한 것입니다. 특히 저의 주의를 이끈 것은 XOR 연산시 사용하는 Key를 생성하는 방법입니다.
그 방법을 소개하기 위해 이 글을 씁니다.

[그림 1] XOR 키 생성 함수

















[그림 1]은 Gong Da Exploit Pack에서 XOR 연산시 사용하는 Key를 생성하는 함수와 그 함수를 실행하는 코드입니다.
이 함수는 Exception을 이용하여 동작하며 XOR 연산시 사용하는 Key를 생성합니다.
이 동작 방식이 흥미로운데 좀 더 자세히 설명을 해보면, SkKrisv2 함수가 시작되면 제일 먼저 할당 안된 변수인 ATAGgl6을 사용하려고 하여 Exception이 발생합니다.
따라서 Exception을 처리하게 되며, 이 때 ATAGgI6 변수에는 상수 값 0을 할당합니다. 그리고 나서 SkKrisv2 함수가 한번 더 실행됩니다.
한번 더 실행된 함수에서는 상수 값 0이 할당된 ATAGgl6 변수를 사용하여 XOR 연산시 사용하는 Key를 생성합니다.
생성된 Key로 비트 연산을 한 다음에 한번 더 Key를 생성합니다. 이렇게 두 번 연산된 Key를 이용하여 Gong Da Exploit Pack에서는 난독화를 합니다.

따라서 Gong Da Exploit Pack에 의해 생성된 난독화 페이지를 해제할 때 XOR 연산시 사용하는 Key를 상수 값 0으로 할당한 후 연산한 다음 또 한번 연산을 하지 않는다면 올바른 XOR 연산 Key를 구할 수 없을 것입니다.

이것보다 좀 더 진보된 방법으로 XOR 연산시 사용하는 Key를 구하는 샘플 발견하시면 연락부탁드립니다. 이 글을 읽어주셔서 감사합니다.

2014년 2월 27일 목요일

[Dorkbot 변종] 리소스 섹션을 활용하는 특이한 방법

최근에 분석한 Dorkbot 변종은 리소스 섹션에 특이한 방법으로 바이너리를 주입하여 활용하였습니다. 그 방법을 소개하려고 합니다.

[그림 1] 리소스 섹션











[그림 1]에서 보듯이 FONT (숫자) 형식의 이름으로 리소스 섹션의 바디에 바이너리가 나뉘어 저장되어 있습니다.
이 바이너리는 나중에 특정 메모리 영역에 복사된 다음 실행됩니다. 이러한 동작 방식은 오래전부터 백신을 우회하기 위한 방법으로 사용되어 왔습니다.
하지만 이번 경우에 흥미로운 것은 다수의 리소스 영역이 글꼴 리소스 타입(RT_FONT)으로 존재하며 바이너리를 포함하고 있습니다. 또한 RC4 알고리즘으로 암호화되어 존재합니다.

[그림 2] 리소스 타입






이 암호화된 바이너리는 RC4 알고리즘으로 복호화되어 실행되며, 특정 문자열을 복호화시 Key로 사용합니다.
복호화시 Key로 사용하는 문자열 : "NYTOdX0S1P3YXvo49s2ogXC40eT2lQkx"

이러한 동작 방식으로 백신을 우회하는 방법은 매우 흥미롭습니다. 그러한 이유로 간단 분석을 하였습니다. 이 글을 읽는 여러분도 흥미롭나요?

Dorkbot 악성코드에 대한 더 많은 정보를 원하시면 아래 링크를 참조하길 바랍니다.