jaewoo shim may. 02. 2018 - dankooksecuresw.dankook.ac.kr/iss18-1/hw4_2018_05_02.pdf ·...

26
팀프로젝트 부연설명 Jaewoo Shim May. 02. 2018

Upload: others

Post on 02-Jun-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Jaewoo Shim May. 02. 2018 - Dankooksecuresw.dankook.ac.kr/ISS18-1/HW4_2018_05_02.pdf · 2018-05-02 · 동적 분석 실습 개별 리눅스 사용 권장 자신의 눅스가 ubuntu일

팀프로젝트 부연설명

Jaewoo Shim

May. 02. 2018

Page 2: Jaewoo Shim May. 02. 2018 - Dankooksecuresw.dankook.ac.kr/ISS18-1/HW4_2018_05_02.pdf · 2018-05-02 · 동적 분석 실습 개별 리눅스 사용 권장 자신의 눅스가 ubuntu일

목차

동적 분석 실습

Lightaidra 최종보고서 작성 안내

정적 분석 예시

2

Page 3: Jaewoo Shim May. 02. 2018 - Dankooksecuresw.dankook.ac.kr/ISS18-1/HW4_2018_05_02.pdf · 2018-05-02 · 동적 분석 실습 개별 리눅스 사용 권장 자신의 눅스가 ubuntu일

동적 분석 실습

개별 리눅스 사용 권장

자신의 리눅스가 ubuntu일 경우 환경구성(관리자 권한으로)

# apt install git

# apt install gcc

# apt install make

자신의 노트북에 리눅스가 없을 경우 실습서버 사용

ip : 172.25.235.247

id : guest

pw : guest

3

Page 4: Jaewoo Shim May. 02. 2018 - Dankooksecuresw.dankook.ac.kr/ISS18-1/HW4_2018_05_02.pdf · 2018-05-02 · 동적 분석 실습 개별 리눅스 사용 권장 자신의 눅스가 ubuntu일

동적 분석 실습

lightaidra 다운로드

$ cd /tmp/자기학번

$ cd 자기학번

$ git clone https://github.com/eurialo/lightaidra

$ cd lightaidra

4

Page 5: Jaewoo Shim May. 02. 2018 - Dankooksecuresw.dankook.ac.kr/ISS18-1/HW4_2018_05_02.pdf · 2018-05-02 · 동적 분석 실습 개별 리눅스 사용 권장 자신의 눅스가 ubuntu일

동적 분석 실습

config.h 파일 수정

$ vi include/config.h

5

Page 6: Jaewoo Shim May. 02. 2018 - Dankooksecuresw.dankook.ac.kr/ISS18-1/HW4_2018_05_02.pdf · 2018-05-02 · 동적 분석 실습 개별 리눅스 사용 권장 자신의 눅스가 ubuntu일

동적 분석 실습

config.h 파일 수정

background_mode

악성코드는 자신의 실행을 숨기기 위해서 실행 이후 백그라운드로 숨어버림

이러할 경우 분석 시 어려움이 있을 수 있음

main.c : background_mode 변수의 값에 따라 daemonize 여부를 결정

6

Page 7: Jaewoo Shim May. 02. 2018 - Dankooksecuresw.dankook.ac.kr/ISS18-1/HW4_2018_05_02.pdf · 2018-05-02 · 동적 분석 실습 개별 리눅스 사용 권장 자신의 눅스가 ubuntu일

동적 분석 실습

config.h 파일 수정

irc_servers

Irc 서버에 대한 아이피주소와 포트번호를 기입

파이프 기호 “|”를 이용하여 여러 주소를 지정하는 것 또한 가능

passproto

IRC 프로토콜에서 사용하는 값 : 변경하지 마세요

irc_passwd

irc 서버 접근 시 비밀번호가 필요할 때 사용하는 변수

본 실습서버는 난이도 하락을 위해서 비밀번호가 없음 : 변경 X

프로젝트를 위해 제공된 irc 서버

ip : 172.25.235.251

port : 6665, 6666, 6668, 6669

7

Page 8: Jaewoo Shim May. 02. 2018 - Dankooksecuresw.dankook.ac.kr/ISS18-1/HW4_2018_05_02.pdf · 2018-05-02 · 동적 분석 실습 개별 리눅스 사용 권장 자신의 눅스가 ubuntu일

동적 분석 실습

config.h 파일 수정

encirc, enc_servers, enc_passwd

만약 컴파일된 악성코드를 분석가가 수집 시, 통신하는 서버의 정보를 쉽게 알 수 있다는 단점이 존재(악성코드 제작자 입장에서의 단점)

따라서 이를 보다 어렵게 하기 위하여 사용하는 서버주소 암호화 설정

본 과제의 의도에서는 해당 암호화루틴을 고려하지 않음 : 수정 X

8

Page 9: Jaewoo Shim May. 02. 2018 - Dankooksecuresw.dankook.ac.kr/ISS18-1/HW4_2018_05_02.pdf · 2018-05-02 · 동적 분석 실습 개별 리눅스 사용 권장 자신의 눅스가 ubuntu일

동적 분석 실습

config.h 파일 수정

irc_chan

악성코드가 irc 서버에 접속한 이후 접속을 수행할 채널명

“#채널명“ 의 형식대로 자신이 원하는 채널명으로 변경

(주의) 이후 hexchat을 이용하여 대화방을 만들 때 해당 이름으로 대화방을 제작해야하므로 반드시 자신이 기입한 채널명을 기억하고 있기

9

Page 10: Jaewoo Shim May. 02. 2018 - Dankooksecuresw.dankook.ac.kr/ISS18-1/HW4_2018_05_02.pdf · 2018-05-02 · 동적 분석 실습 개별 리눅스 사용 권장 자신의 눅스가 ubuntu일

동적 분석 실습

config.h 파일 수정

irc_chankey

공격자가 생성한 대화방은 공격자의 의사에 따라 비밀번호를 설정하여 다른 사람의 접근을 막을 수 있음

이 때 악성코드가 원활히 접속할 수 있도록 설정하는 대화방 비밀번호

본 실습에서는 대화방을 생성 시 비밀번호를 설정하지 않기 때문에 그대로 유지

10

Page 11: Jaewoo Shim May. 02. 2018 - Dankooksecuresw.dankook.ac.kr/ISS18-1/HW4_2018_05_02.pdf · 2018-05-02 · 동적 분석 실습 개별 리눅스 사용 권장 자신의 눅스가 ubuntu일

동적 분석 실습

config.h 파일 수정

master_host, master_password

lightaidra는 공격자의 대화방에 접근한 이후 대화방 참여자 중 누가 자신의 주인인지 확인이 필요 : 해당 주인의 말만 듣기 위함

이를 식별할 수 있는 아이디와 비밀번호가 필요 : 로그인과정

master_host : 아이디

“@공격자ip주소” 의 형태로 작성

master_password : 비밀번호

원하는 비밀번호 입력

11

Page 12: Jaewoo Shim May. 02. 2018 - Dankooksecuresw.dankook.ac.kr/ISS18-1/HW4_2018_05_02.pdf · 2018-05-02 · 동적 분석 실습 개별 리눅스 사용 권장 자신의 눅스가 ubuntu일

동적 분석 실습

악성코드 빌드

Makefile 파일을 확인해보면 컴파일 후 파일이 저장되는 경로를 확인 가능

12

Page 13: Jaewoo Shim May. 02. 2018 - Dankooksecuresw.dankook.ac.kr/ISS18-1/HW4_2018_05_02.pdf · 2018-05-02 · 동적 분석 실습 개별 리눅스 사용 권장 자신의 눅스가 ubuntu일

동적 분석 실습

악성코드 빌드

$ mkdir bin

$ make x86_64

몇가지 경고문구와 함께 에러없이 빌드되었다면 컴파일 성공

$ cd bin

$ ls

x86_64 라는 이름의 파일이 생성되었다면 악성코드 제작 완료

13

Page 14: Jaewoo Shim May. 02. 2018 - Dankooksecuresw.dankook.ac.kr/ISS18-1/HW4_2018_05_02.pdf · 2018-05-02 · 동적 분석 실습 개별 리눅스 사용 권장 자신의 눅스가 ubuntu일

동적 분석 실습

대화방 생성

Hexchat 다운로드

https://hexchat.github.io/downloads.html

14

Page 15: Jaewoo Shim May. 02. 2018 - Dankooksecuresw.dankook.ac.kr/ISS18-1/HW4_2018_05_02.pdf · 2018-05-02 · 동적 분석 실습 개별 리눅스 사용 권장 자신의 눅스가 ubuntu일

동적 분석 실습

대화방 생성

15

Page 16: Jaewoo Shim May. 02. 2018 - Dankooksecuresw.dankook.ac.kr/ISS18-1/HW4_2018_05_02.pdf · 2018-05-02 · 동적 분석 실습 개별 리눅스 사용 권장 자신의 눅스가 ubuntu일

동적 분석 실습

대화방 생성

16

더블클릭하여 수정 후 엔터 아이피주소 : 172.25.235.251/6666

수정 완료 후 close

Page 17: Jaewoo Shim May. 02. 2018 - Dankooksecuresw.dankook.ac.kr/ISS18-1/HW4_2018_05_02.pdf · 2018-05-02 · 동적 분석 실습 개별 리눅스 사용 권장 자신의 눅스가 ubuntu일

동적 분석 실습

대화방 생성

오른쪽 과같이 접속이 수행되는 것을 확인

17

두번째 join the channel 에 본인이 생성할 대화방 이름 입력

Page 18: Jaewoo Shim May. 02. 2018 - Dankooksecuresw.dankook.ac.kr/ISS18-1/HW4_2018_05_02.pdf · 2018-05-02 · 동적 분석 실습 개별 리눅스 사용 권장 자신의 눅스가 ubuntu일

동적 분석 실습

대화방 생성

아래와 같이 대화방이 생성되면, 악성코드가 접속될 대화방 생성 완료

18

Page 19: Jaewoo Shim May. 02. 2018 - Dankooksecuresw.dankook.ac.kr/ISS18-1/HW4_2018_05_02.pdf · 2018-05-02 · 동적 분석 실습 개별 리눅스 사용 권장 자신의 눅스가 ubuntu일

동적 분석 실습

악성코드 실행

아래와 같이 실행되는 모습 확인

19

Page 20: Jaewoo Shim May. 02. 2018 - Dankooksecuresw.dankook.ac.kr/ISS18-1/HW4_2018_05_02.pdf · 2018-05-02 · 동적 분석 실습 개별 리눅스 사용 권장 자신의 눅스가 ubuntu일

동적 분석 실습

악성코드 실행

대화방에 랜덤한 이름을 가진 익명의 사용자가 접속되는 것을 확인

해당 사용자가 악성코드

20

Page 21: Jaewoo Shim May. 02. 2018 - Dankooksecuresw.dankook.ac.kr/ISS18-1/HW4_2018_05_02.pdf · 2018-05-02 · 동적 분석 실습 개별 리눅스 사용 권장 자신의 눅스가 ubuntu일

동적 분석 실습

악성코드 로그인해보기

채팅창에 아래와 같이 커맨드 입력

.login 비밀번호(앞서 config.h에서 입력넣은 비밀번호)

21

Page 22: Jaewoo Shim May. 02. 2018 - Dankooksecuresw.dankook.ac.kr/ISS18-1/HW4_2018_05_02.pdf · 2018-05-02 · 동적 분석 실습 개별 리눅스 사용 권장 자신의 눅스가 ubuntu일

동적 분석 실습

악성코드에 감염된 서버에 임의 커맨드 전달해보기

채팅창에 .help라고 입력하면 사용 가능한 커맨드를 확인 가능

채팅창에 아래와 같이 입력

.exec ls

.exec id

.exec 자신이 원하는 커맨드

팀 프로젝트를 위한 악성코드의 동적분석 완료

해당 사항까지 정리하여 최종보고서에 반영

22

Page 23: Jaewoo Shim May. 02. 2018 - Dankooksecuresw.dankook.ac.kr/ISS18-1/HW4_2018_05_02.pdf · 2018-05-02 · 동적 분석 실습 개별 리눅스 사용 권장 자신의 눅스가 ubuntu일

동적 분석 실습

주의사항 및 특이사항

가급적 자신의 가상환경(고립된 환경)이 갖추어지지 않는 이상 악성코드의 다른 커맨드는 자제해주세요.

본 실습에서 사용한 환경(컴파일환경)은 외부에서는 접근되지 않습니다.

23

Page 24: Jaewoo Shim May. 02. 2018 - Dankooksecuresw.dankook.ac.kr/ISS18-1/HW4_2018_05_02.pdf · 2018-05-02 · 동적 분석 실습 개별 리눅스 사용 권장 자신의 눅스가 ubuntu일

Lightaidra 최종보고서 작성 안내

양식 및 분량 – 자유

팀 별로 1부 제출

보고서에 반드시 포함되어야 하는 내용

제안서에 기입했던 내용들

환경과 도구는 분석 시 다르게 이용했을 경우 실제 사용한 내용을 작성

소스코드 분석 내용(소스코드 주석달아 제출하지 마세요 - 감점)

각 *.c 파일의 역할 – 무슨 기능을 하는지?

각 함수의 역할 – “~기능을 수행하는 함수이다.”

컴파일 후 실행 내용

어떤 기능을 수행하는 악성코드인지?

어떤 식으로 동작하는지?(자세하게)

어떤 분석환경을 어떻게 갖추어 어떻게 실행시켜 확인했는지?

결론

이 악성코드는 어떤 환경에서 무슨 기능을 수행하는 악성코드다.

내가 보안 담당자라면 어떻게 해당 악성코드를 탐지 및 차단할 것인지?

5월 16일(수) 까지 연기

24

Page 25: Jaewoo Shim May. 02. 2018 - Dankooksecuresw.dankook.ac.kr/ISS18-1/HW4_2018_05_02.pdf · 2018-05-02 · 동적 분석 실습 개별 리눅스 사용 권장 자신의 눅스가 ubuntu일

Lightaidra 최종보고서 작성 안내 - 예시

attack.c : lightaidra가 사용하는 공격 커맨드 중 synflood, ackflood, ngsynflood, ngackflood 기능의 소스코드가 포함

synflood() : tcp 패킷을 구조체 형식에 맞추어 제작하여 무한루프를 돌며 synflood 공격을 행한다. synflood 공격이란 ~~~~~~~~~~~~~~~것이다.

ackflood() : 앞서 설명한 synflood()와 유사한 코드 흐름을 보인다. Ackflood 공격이란 ~~~~~~~~~~~~~~것이다.

ngsynflood() : synflood()와 동일한 코드로 작성되어있다.

requests.c : 공격자로부터 전달받은 커맨드를 분석하여 각각의 역할을 수행할 수 있는 소스코드가 포함되어있다.

pub_requests() : 사용자로부터 전달받은 커맨드가 어떠한 커맨드인지 확인하여 역할에 맞는 함수를 호출하는 기능을 수행한다.

25

Page 26: Jaewoo Shim May. 02. 2018 - Dankooksecuresw.dankook.ac.kr/ISS18-1/HW4_2018_05_02.pdf · 2018-05-02 · 동적 분석 실습 개별 리눅스 사용 권장 자신의 눅스가 ubuntu일

26