<Fig1. Hacked by #GOP 사진 원본 >
2014년 11월 24일에 소니 픽쳐스 엔터테인먼트가 사이버 테러를 당했다.
FBI는 소니 픽처스 엔터테인먼트 해킹 사건의 책임이 북한 정부에 있다는 수사 결과를 발표했다.
전문 : http://www.fbi.gov/news/pressrel/press-releases/update-on-sony-investigation
As a result of our investigation, and in close collaboration with other U.S. government departments and agencies, the FBI now has enough information to conclude that the North Korean government is responsible for these actions. While the need to protect sensitive sources and methods precludes us from sharing all of this information, our conclusion is based, in part, on the following:
우리 수사의 결과로, 또 다른 미국 정부 부처와 기관들과의 긴밀한 협력을 통해서, FBI는 이제 북한 정부가 이런 행위들에 대한 책임이 있다는 결론을 내리기에 충분한 정보를 가지고 있다. 민감한 정보원들과 방법들을 보호할 필요성이 있어 우리가 이 정보를 모두 공유할 수는 없지만, 우리 결론은 부분적으로 다음과 같은 사항들에 근거하고 있다 :
Technical analysis of the data deletion malware used in this attack revealed links to other malware that the FBI knows North Korean actors previously developed. For example, there were similarities in specific lines of code, encryption algorithms, data deletion methods, and compromised networks.
이번 공격에 쓰인 데이터 삭제 맬웨어의 기술적 분석 결과, 북한측 행위자들이 이전에 개발한 것으로 FBI가 알고 있는 다른 맬웨어에 대한 연관이 드러났다. 예를 들어, 특정 코드 라인, 암호화 알고리즘, 데이터 삭제 방법, 침해를 당한 네트워크들 등에 유사성이 있었다.
The FBI also observed significant overlap between the infrastructure used in this attack and other malicious cyber activity the U.S. government has previously linked directly to North Korea. For example, the FBI discovered that several Internet protocol (IP) addresses associated with known North Korean infrastructure communicated with IP addresses that were hardcoded into the data deletion malware used in this attack.
FBI는 또 이번 공격에 쓰인 인프라스트럭처와, 미국 정부가 북한에 직접적으로 연관시킨 바 있는 다른 악성 사이버 활동 사이에 상당히 많은 겹침이 있다는 사실을 관찰했다. 예를 들어 FBI는 알려진 북한 인프라와 연관된 몇 개의 인터넷 프로토콜(IP) 주소들이 이번 공격에 쓰인 데이터 삭제 맬웨어 내에 하드코딩된 IP 주소와 교신했다는 사실을 발견했다.
Separately, the tools used in the SPE attack have similarities to a cyber attack in March of last year against South Korean banks and media outlets, which was carried out by North Korea.
별도로, SPE 공격에 사용된 도구들은 작년 3월 남한 은행들과 언론매체들에 대한 사이버 공격과 유사성이 있는데, 당시 공격은 북한에 의해 이뤄졌다.
자 그럼 소니 악성코드를 들여다 보자
<Fig2. PEiD >
오예 패킹 하나도 안되어 있다.!!
<Fig3. GetModuleFileNameW >
GetModuleFileNameW 를 통해 경로 확인 파라메터가 없을 시 새로운 프로세스 생성한다.
즉 최초 실행 시 –i 옵션으로 다시 실행한다.
<Fig4. CreateServiceW >
이후 옵션이 –i 으로 실행되어 있는지 확인한다.
-i 옵션이 아니라면 그림과 같이 brmgmtsvc 라는 이름으로 서비스 등록하여 실행한다.
결론적으로 악성 행위를 하기 위해선 최초 실행 -> -i 옵션으로 실행 -> -k 옵션으로 서비스 등록 단계를 거쳐 악성 행위 단계로 넘어간다.
<Fig5. inet_addr >
203.131.22.102:8080
217.96.33.164:8000
88.53.215.64:8000
Send SYN packet!
<Fig6. ???? >
뭔지 모름 날짜 같은데 사용하지 않음
<Fig7. 0x927C0 == 600000 Sleep>
-k 옵션으로 실행 되어있는지 확인한다. 이때 -k 옵션이라면 10분 동안 Sleep (자동분석 ㅃ2)
<Fig8. taskhost%s.exe>
이후 rand 함수를 통해 알파벳 2글자를 생성하여 <현재경로>\taskhost%s.exe 자기 자신 복사하여 파라메터 -w 주고 실행한 뒤 파라메터 -d 와 -m 으로 총 3개의 파일을 생성하고 실행한다. 이때 각 파일명은 랜드함수를 쓰기 때문에 다르다.
ex )
taskhostko.exe -w
taskhostha.exe -d
taskhostsu.exe -m
-d 옵션으로 모든 드라이브에 있는 파일 삭제( Windows와 Program Files 폴더는 제외 )
<Fig9. File Delete>
-w 옵션으로 iissvr.exe 파일을 드롭하여 실행한다.
termservice 종료하기 위해 cmd.exe /c net stop termservice /y 명령어를 실행한다.
이후 %Windows%폴더에 iissvr.exe 파일을 드롭한다. 이 파일은 PE 리소스 섹션에 XOR 연산한 값으로 저장되어 있다.
<Fig10. html>
이 드롭되는 파일의 리소스 영역에는 JPG, HTML, WAV 파일이 있으며, XOR 키 값은 고정으로 박혀있다.
파일 정보 :
<Fig11. Drop iisvr.exe>
-m 옵션은 usbdrv3.sys 파일을 드롭하여 드라이버를 등록한다.
%TEMP%폴더에 usbdrv3.sys 파일을 드롭하며 마찬가지로 PE 리소스 섹션에 드롭되는 파일이 XOR 연산되어 저장되어 있다.
<Fig12. Drop usbdrv3.sys>
드라이버 드롭 후 드라이버 등록한 다음 MBR wipe 작똥!
<Fig13. Drop usbdrv3.sys>
MBR을 파괴시키기 위해 랜덤데이터를 생성한다.
<Fig14. rand>
그림과 같이 rand 함수를 통해 0x10000 만큼 랜덤 데이터를 먼저 생성한다.
<Fig15. Wipe>
이후 MBR 영역에 0x10000 만큼 AAA ....(0xAA, 0xAA ... ) 로 채워 0x41번 루프문을 돌아 덮어 쓴 이후 (총 0x410000) UUUU .... (0x55, 0x55 .. )로 0x41번 루프문을 돌아 덮어 쓰고 (총 0x410000) 이후 아까 생성한 랜덤 데이터로 다시 0x41번 루프문을 돌아 덮어 쓴다. (뭐이리 많이...)
<Fig16. CreateThread 300!!!!!>
그다음 또 wipe 스레드를 무려 0x12C ( 300) 개나 생성하는데....
<Fig17. end>
아..앙대
<Fig18. LANG_KOREAN>
mfc로 제작되어 있으며 다이얼 박스에서 언어팩이 korean으로 되어 있는 것도 확인 할 수 있다.
아까 지나갔던 XOR연산으로 파일 복호화하는 알고리즘은....키 생성이 간단한것 같지만 생각보다 많이.. 귀찮음...ㅠㅠ
결론적으로 리소스 사이즈로 1차 키 생성하고 이후 3번의 돌면 xor 키가 생성되어 풀게된다.
<Fig19. Decrypt>
논리 이해하겠다고 무식하게 파이썬으로 포팅해서 첫번째 0x06는 생성함 ^^V
향후 추가적으로 분석 의향 없음 ㅠㅠ
size = 0x5ED8 ESI = size EAX = 0x55555556 EAX = EAX * ESI EDX = EAX >> 32 EAX = EDX EAX = EAX >> 0x1F EDX = EDX + EAX EBX = EDX EDI = 0x90ABCDEF EAX = 0xFE268455 ESI = 0xC2B45678 for i in range(EDX): ESI = ESI ^ EDI EDI = EAX ^ EDI EAX = EAX ^ ESI EDX = EDI A = ESI | EDX B = EDI | EAX C = EAX | A EAX = A EAX = EAX >> 0x9 EAX = EAX & 1 ESI = EAX ^ 0 EAX = A EAX = EAX >> 0x1 EAX = EAX ^ A EAX = EAX >> 0x1 EAX = EAX ^ A EAX = EAX >> 0x3 EAX = EAX ^ A EDX = A & 0x3FFFF EDX = EDX + EDX EAX = EAX >> 0xD D = EDX EAX = C EDX = C EAX = EAX >> 0x1 EAX = EAX ^ EDX EAX = EAX >> 0x3 EAX = EAX ^ EDX EAX = EAX >> 0x1 EAX = EAX ^ EDX EDX = EDX & 0x3FFFFF EAX = EAX >> 0x11 EDX = EDX + EDX EAX = D ECX = EDX EDX = B ECX = ECX ^ EDX ECX = ECX ^ EAX EAX = ECX EDX = ECX EAX = EAX >> 0x18 EDX = EDX >> 0x10 EDX = EDX&0xFF EAX = EAX ^ EDX EDX = ECX EDX = EDX >> 0x8 EDX = EDX & 0xFF EAX = EAX ^ EDX ECX = ECX & 0xFF EAX = EAX ^ ECX print "%X" % EAX