3. 1. 주요 용어
• SWIFT (Society for Worldwide Interbank Financial Telecommunication)
• 표준화되고 신뢰된 국제 금융거래 네트워크
• 200개 이상 국가, 11,000개 금융기관에서 사용하는 SW와 서비스 제공
• Federal Reserve Banks(미국연방준비은행)
• 미국 연방준비제도의 연방 은행으로 총 12개의 연방 은행이 있으며
New York 은행이 가장 큰 규모 은행
4. 2. 사고 개요
Rizal Commercial
Banking Corporation
Pan Asia
Banking Corporation
Bangladesh Bank
Federal Reserve Bank
of New York
SWIFT “$951 million / 35” $81 million
Result
1 2
3
4
1. Federal Reserve Bank에 $951 Million을 Rizal, Pan Asia에 이체하라는
35건 의 요청 전송
2. SWIFT 코드 확인 후 의심없이 5건의 이체 진행
3. 스리랑카 수신 계좌 이름에 오타 발견(foundation fandation) 후
요청 확인을 전송했지만 Bangladesh Bank는 확인하지 못함
4. $81 Million은 이미 필리핀 Rizal Bank로 이체되어 인출해 감
5. 스리랑카 Pan Asia로 이체된 $20 Million은 다시 되찾음
각 지역이 주말이라 연락이 불가능 함을 악용하여 시간을 지체시킴
5. 3. 상세 사고 분석
SWIFT Alliance SW
Server
CONFIG FILE
gpca.dat
6. 3. 상세 사고 분석
SWIFT SW와 함께 동작하는 Main file로 추정
Malware Sample
악성코드는 Oracle DB를 사용하는 SWIFT Alliance SW 운영 환경에 스스로 서비스로 등록한 후 동작함
주요 목적은 설정 파일에 정의된 SWIFT 문자열을 검사하는 것
문자열 검사를 통해 공격자는 Field 추출 가능 (예: 전송 관련 정보, 시스템 DB와 연결된 SWIFT 주소 등)
추후 해당 정보는 특정 거래를 삭제하거나 특정 계좌의 출력정보를 수정하는데 사용할 수 있음
해당 기능은 2016년 2월 6일 06:00 까지 동작하도록 제작 되어있음
SWIFT SW에 대해 높은 수준의 이해와 지식을 갖고있는 사람이 개발한 것으로 추정
7. 3. 상세 사고 분석
Malware Config and Logging
Malware가 실행되면 RC4 Key를 사용하여 설정 파일을 복호화함
피해자 기기의 다음과 같은 경로에 설정 파일이 존재
설정 파일은 거래 ID, 추가적인 환경 정보, 다음과 같은 IP 주소(C&C) 등을 포함하고 있음
다음과 같은 파일에 기록
8. 3. 상세 사고 분석
SWIFT Alliance SW
Server
Server의 모든
Process 감시
Liboradb.dll이 로드된
Process 확인
2byte opcode 수정 검증과정 우회
DB transaction
실행 / 조작 가능
• DB 실행
• 백업 및 복구 기능
• 레지스트리로 부터 DB 경로 읽기
9. 3. 상세 사고 분석
Module Patching
Malware는 Process에 liboradb.dll이 로드되는 경우 특정 offset의 2byte를 변경 시킴
0x75, 0x04 0x90, 0x90
0x75, 0x04 는 ‘JNZ’ 라는 opcode :
If the result of the previous comparison operation is not zero, then jump into the address that follows this
instruction, plus 4bytes
조건 Jump 명령어로 해당 모듈에서는 키 유효성 검사, 허가 성공 유무 확인 과정과 같은 중요한 기능을
실행하는 명령어로 이동 시킴
0x90은 ‘NOP’ opcode : do nothing으로 아무것도 실행하지 않는 명령어
liboradb.dll은 SWIFT Alliance SW에 사용되는 모듈로
레지스트리로부터 Alliance DB 경로를 읽기, DB 실행, DB 백업 및 재설치 기능 수행
10. 3. 상세 사고 분석
Module Patching
Malware 실행 전
Malware 실행 후
11. 3. 상세 사고 분석
SWIFT message monitoring
Malware는 SWIFT Financial Application 메시지를 관찰 (아래 디렉토리에 위치한 *.prc, *.fal 파일의
내용을 분석하면서)
gpca.dat에 정의된 문자열을 찾으면서 분석하다 문자열이 존재하는 경우 아래와 같은 하드코딩된
문자열을 검색하여 MESG_TRN_REF, MESG_SENDER_SWIFT_ADDRESS를 추출
추출한 데이터를 활용하여 SWIFT 고유의 메시지 ID를 검색하는 SQL 명령어를 작성
알아낸 MESG_S_UMID는 Local DB의 거래 정보를 삭제하는 명령어에 사용
12. 3. 상세 사고 분석
Login Monitoring
‘Login’ 문자열을 포함하는 업무 기록을 지속적으로 확인
‘Login’ 검색 실패한 경우 5초 동안 멈추고 재시도
‘Login’ 검색 성공한 경우 Malware가 원격 C&C에 GET request 전송
“---O” : Login (open), “---C” : Logout (close), “---N” : Neither of the events occurred
13. 3. 상세 사고 분석
Manipulating Balances
Malware는 아래 경로에 존재하는 SWIFT 메시지를 모두 관찰
14. 3. 상세 사고 분석
Manipulating Balances
Malware는 다음 문자열을 찾으면서 분석
62F : closing balance(결산잔고), 60F : opening balance(개시잔액)
19A : transaction amount
15. 3. 상세 사고 분석
Manipulating Balances
로그인 한 계정은 Convertible Currency 가용량(MESG_FIN_CCY_AMOUNT)을 확인하는데 사용
임의의 값으로 변경(SET MESG_FIN_CCY_AMOUNT)하여 메시지 내의 Convertible Currency를 조작
16. 3. 상세 사고 분석
Printing Manipulation
SWIFT는 확인 메시지를 생성하고 프린터를 통해 자동으로 출력하기 때문에 DB와
Message 조작으로는 거래 조작을 숨기기 힘듦, 따라서 프린터도 제어 필요
Malware는 SWIFT 확인 메시지를 가로채어 조작된 메시지로 전송
SWIFT 메시지는 읽고 분석되어 PCL(Printer Command Language)로 표현된 PRT파일로
변환됨
PRT 파일은 ‘nroff.exe’라는 정상적인 SWIFT 실행파일을 통해 프린트되도록 전송됨
작성된 PCL 언어를 통해 프린터 모델을 확인할 수 있음 “HP LasesrJet 400 M401”