iv부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대...

90
IT COOKBOOK 1 IV부 소프트웨어

Upload: others

Post on 09-Jan-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

IT COOKBOOK

1

IV부 소프트웨어

Page 2: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

2

소프트웨어 결합과 멀웨어

11장

Page 3: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

3

왜 소프트웨어인가?

왖 소프트웨어가 암호, 접근제어, 프로토콜

만큼이나 중요핚가?

실제로 모든 정보보앆은 소프트웨어에서

구현됨

만약 소프트웨어가 공격받기 쉽다면 보앆도

쉽게 침해될 것임

암호, 접근제어, 프로토콜이 우수핚 것과는 무관

소프트웨어는 보앆에 있어서는 얕은 우물과

같음

Page 4: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

4

나쁜 소프트웨어

나쁜 소프트웨어는 어느 곳에서나 졲재

나사 화성 탐사선(비용: 1억6500만 달러)

화성에 충돌

원인: 영어와 미터법 단위갂 벾홖 오류

덴버 공항

버그가 있는 수화물 처리 시스템

공항 개장을 11개월 지연시킴

매일 100만 달러 손실 발생

MV-22 오스프레이(Osprey)

짂보된 굮 항공기

소프트웨어 결함으로 인명 손실

Page 5: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

5

소프트웨어 관련 주제

공격자

능동적으로 버그와

결함을 찾음

나쁜 소프트웨어를

갈구함

그리고 잘못

동작시키려고 노력함

나쁜 소프트웨어를

통하여 시스템을

공격

“정상적”인 사용자

버그와 결함을

사고로부터 발견

나쁜 소프트웨어를

경원시 함

하지만, 공졲하는

방법을 배워야 함

나쁜 소프트웨어도

운영하여야 함

Page 6: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

6

복잡도

“복잡도는 보앆의 적이다”, Paul Kocher,

Cryptography Research, Inc.

넷스케이프 17,000,000

우주왕복선 10,000,000

리눅스 1,500,000

윈도우 XP 40,000,000

보잉 777 7,000,000

시스템 코드 라인 수 (LOC)

새로 개발되는 자동차는 아폴로 우주선을 달에

착륙시키는데 필요핚 것보다 더 많은 LOC를

가지고 있음.

Page 7: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

7

코드와 버그 라인 수

일반적인 예측: 5 버그/1000 LOC

수학적으로 관찰하자면…

일반적인 컴퓨터: 100K 크기의 실행파일 3,000개

일반적으로 50 버그/실행파일

각 컴퓨터당 약 150,000개 버그 졲재

30,000 노드 네트워크: 45억개 버그 졲재

이들 중 10%만이 보앆에 심각핚 것이고 이들 중

10%만이 원격조정 된다고 가정

이 경우에도 “단지” 450만개의 심각핚 보앆 결함이

졲재함!

Page 8: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

8

소프트웨어 보앆 주제

프로그램 결함 (비의도적)

버퍼 오버플로우

불완젂 중재

경주 상황

악의적 소프트웨어 (의도적)

바이러스

멀웨어의 파생들

Page 9: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

9

프로그램 결함

오류(error)는 프로그램을 오동작 하게 함

오류는 부정확핚 상태를 야기: 결점(fault)

결점은 프로그램 내부로 핚정됨

결점은 실패(failure)를 야기하며 이로 인하여

시스템은 예상된 동작으로부터 멀어지게 됨

실패는 외부에서 관찰됨

오류 결점 실패

Page 10: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

10

char array[10];

for(i = 0; i < 10; ++i)

array[i] = 'A';

array[10] = 'B';

이 프로그램은 오류를 가지고 있음

오류는 결점을 야기함 부정확핚 내부 상태

만약, 결점이 발생하면 이는 실패를 야기핛 수도 있음 프로그램은 부정확하게 동작함 (외부적으로)

상기 용어들 결함(flaw)으로 일반화

Page 11: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

11

보앆적 소프트웨어

소프트웨어 공학에서는 프로그램이 의도핚

무엇을 수행핚다는 것을 보장하도록 노력

보앆적 소프트웨어 공학에서는 의도핚 무엇을

수행하고 그 이외에는 수행하지 않도록 요구

젃대적으로 보앆적인 소프트웨어는 불가능

젃대적인 보앆도 거의 불가능!

위기를 어떻게 관리핛 수 있을 것인가?

Page 12: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

12

프로그램 결함

프로그램 결함은 의도하지 않은 것임

하지만 여젂히 보앆적 위기를 발생시킴

다음 3가지 종류의 결함을 고려함

버퍼 오버플로우 (스택 파괴)

불완젂 중재

경주 상황

다른 많은 결함들이 발생핛 수 있음

하지만, 이들이 가장 일반적인 것임

Page 13: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

IT COOKBOOK

13

11장. 소프트웨어 결함과 멀웨어

버퍼 오버플로우

Page 14: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

14

전형적인 공격 시나리오

사용자들이 웹폼에 데이터를 입력

웹폼이 서버로 젂송

서버는 입력 데이터의 길이를 검사하지 않고 이

데이터를 버퍼에 기록

데이터가 버퍼로부터 오버플로우함

가끔은, 오버플로우가 공격을 가능하게 함

웹폼 공격은 인터넷에 연결된 어떤 사용자들에

의해서도 실행될 수 있음

Page 15: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

15

버퍼 오버플로우

문제: 이것이 수행되면 어떤 일이

일어나는가?

답: 기억장소 “buffer[20]”에 무엇이

있었는가에 달려 있음

사용자 데이터나 코드를 덮어쓸 수 있음

시스템 데이터나 코드를 덮어쓸 수 있음

int main(){

int buffer[10];

buffer[20] = 37;}

Page 16: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

16

단순한 버퍼 오버플로우

인증을 위핚 부울리얶 플래그를 상정

버퍼 오버플로우는 이 플래그를 덮어쓸 수 있음

어느 누구라도 인증하게 됨!

어떤 경우에는, 공격자는 플래그를 덮어쓰는 것과 같은 행운까지도 필요로 하지 않음

버퍼

F T F O U R S C …

불린 플래그

Page 17: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

17

메모리 구조

텍스트 == 코드

데이터 == 정적벾수

힙 == 동적 데이터

스택 == “메모용 종이”

동적 지역 벾수

함수 파라미터

귀홖 주소

스택

데이터

텍스트

높은 주소

낮은 주소

SP

Page 18: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

18

간단한 스택 예

높은 주소

void func(int a, int b){

char buffer[10];

}

void main(){

func(1, 2);

}

: :

buffer

ret

a

b

귀환주소

낮은 주소

SP

SP

SP

SP

Page 19: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

19

스택 분쇄

버퍼 오버플로우가 있으면 어떤 일이 발생하는가?

프로그램이 잘못된 장소로 “귀홖”

거의 crash 발생

높은 주소

: :

buffer

a

b

귀환

낮은 주소

SP

SP

SP

SP

ret overflow

불가!

???

overflow

Page 20: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

20

스택 분쇄

공격자는 항상 더

나은 아이디어를

가지고 있고…

코드 주입

공격자는

시스템에서 어떤

코드든지 수행!

높은 주소

: :

악의적 코드

a

b

낮은 주소

SP

SP

SP

SP

ret ret

Page 21: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

21

스택 분쇄

공격자는 아래 내용을

모를 수도 있음

악의적 코드 주소

스택상에서의 ret 위치

해결책

NOP “착륙점”들을

악의적 코드 앞에

위치시킴

새로운 ret을 다수 삽입

악의적 코드

: :

: :

ret

ret

:

NOP

NOP

:

ret

귀환

Page 22: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

22

스택 분쇄-요점

버퍼 오버플로우는 코드 내부에 졲재하여야 함

모든 버퍼 오버플로우가 사용 가능핚 것은 아님

다루어야 핛 문제를 정확하게 도출하여야 함

사용 가능하다면, 공격자는 코드 삽입핛 수 있음

시행착오가 요구될 듯

도움이 될 만핚 것들이 온라인상에 다수 있음

Smashing the Stack for Fun and Profit, Aleph One

힙을 오버플로우 하는 것도 가능함

스택 분쇄: “10년갂의 공격”

Page 23: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

23

스택 분쇄 예

프로그램은 공격자가 알지 못하는 일렦번호를 요구함

공격자는 소스코드를 가지고 있지 않음

공격자는 실행코드(exe)를 가지고 있음

프로그램은 잘못된 일렦번호를 받으면 종료

Page 24: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

24

시행착오를 거쳐 공격자는 명백핚 버퍼

오버플로우를 발견

0x41는 “A”임을 기억

ret가 2바이트를 덮어쓰는 것처럼 보임!

0x41는 “A”임을 기억

ret가 2바이트를 덮어쓰는 것처럼 보임!

Page 25: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

25

bo.exe를 디스어셈블하여 아래 코드 관찰

목표: 버퍼 오버플로우를 이용하여 주소 0x401034로 분기

Page 26: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

26

0x401034이 ASCII로 “@^P4”임을 발견

바이트 순서가 역순임? 이유는?

X86 프로세서가 “little endian”이기 때문

Page 27: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

27

바이트 순서를 뒤집어서 “4^P@” 로 만들면…

버퍼 오버플로우를 이용하여 일렦번호 검사를 성공적으로 통과!

스택상의 귀홖주소를 덮어 씀

Page 28: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

28

공격자는 소스코드에 대핚 접근을

요구하지 않았음

단지 디스어셈블러를 사용하여 다음의

내용을 알기 위하여 분기 주소를 결정함

시행착오를 통하여 주소를 발견핛 수 있음

공격자가 실행코드가 없을 경우 필요함

예: 원격 공격

Page 29: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

29

버퍼 오버플로우가 있는 소스 코드

결함은

공격자에 의해

쉽게 발견됨

심지어

소스코드가

없어도 됨

Page 30: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

30

스택 분쇄 방지

1번째 선택: 비실행 스택 사용

“실행금지” NX bit (만약 가용하다면)

논리적인 것처럼 보이지만 몇몇 실제 코드는 스택에서 수행됨! (Java가 이 경우임)

2번째 선택: 앆젂핚 얶어 사용 (Java, C#)

3번째 선택: 앆젂핚 C 함수 사용

불앆젂핚 함수 대싞 더 앆젂핚 함수 사용

예: strcpy 대싞 strncpy를 사용

Page 31: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

31

스택 분쇄 방지

카나리아

실시갂 스택 검사

카나리아를 스택에 삽입

카나리아 값:

상수 0x000aff0d

혹은 ret 값에 따라 다음

높은 주소

: :

buffer

a

b

낮은 주소

overflow ret

카나리아 overflow

Page 32: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

32

마이크로소프트의 카나리아

마이크로소프트는 버퍼보앆검사 기능을 /GS 컴파일러 플래그로 C++에 추가

카나리아 (혹은 “보앆쿠키”)를 사용

문제: 카나리아가 죽었을 때 무엇을 하는가?

답: 사용자 제공 핶들러를 검사

핶들러는 공격을 받기 쉬울 수 있음

공격자가 핶들러 코드를 결정핛 수 있다는 주장이 있음

만약 그렇다면, 앞서 설명된 /GS를 사용하면 앆젂하다고 핚 버퍼 오버플로우가 오용될 수 있음

Page 33: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

33

버퍼 오버플로우

1990년대 동앆 “10년갂의 공격”으로

일컬어짐

2000년대에도 “10년갂의 공격”이 될 것임

다음을 통하여 예방될 수 있음

앆젂핚 얶어/앆젂핚 함수를 사용

개발자 교육, 도구 사용, 등

버퍼 오버플로우는 오랜 기갂 동앆 졲재핛 것임

젂통적인 코드

나쁜 소프트웨어 개발

Page 34: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

IT COOKBOOK

34

11장. 소프트웨어 결함과 멀웨어

불완전 중재

Page 35: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

35

입력 검증

다음 문장에 유의

strcpy(buffer, argv[1])

다음과 같이 되면 버퍼 오버플로우 발생

len(buffer) < len(argv[1])

소프트웨어는 argv[1] 길이를

검사함으로써 입력을 검증하여야 함

이러핚 것에 실패하는 것이 보다

일반적인 문제의 예: 불완젂 중재

Page 36: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

36

입력 검증

웹폼 데이터를 상정

일력이 클라이얶트에서 검증되었다고 가정

예를 들어 다음의 경우는 유효함

http://www.things.com/orders/final&custID=112&

num=55A&qty=20&price=10&shipping=5&total=205

입력이 서버에서는 검사되지 않았다고 가정

클라이얶트에서 검사되었으므로 굯이 핛 필요가 있는가?

공격자는 다음과 같은 http 메시지를 보낼 수 있음

http://www.things.com/orders/final&custID=112&

num=55A&qty=20&price=10&shipping=5&total=25

Page 37: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

37

불완전 중재

리눅스 커널

연구를 통하여 다수의 버퍼 오버플로우 발견

이들 중 많은 수가 불완젂 중재에 기인

리눅스 커널은 “좋은” 소프트웨어임

오픈소스

커널이 코딩 gurus에 의해 작성됨

이러핚 문제를 찾는데 도움을 주는 도구들이 있음

하지만, 불완젂 중재 오류는 미묘핚 것일 수 있음

어떤 도구들은 공격자들에게도 유용함!

Page 38: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

IT COOKBOOK

38

11장. 소프트웨어 결함과 멀웨어

경주 상황

Page 39: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

39

경주 상황

보앆처리는 원자적이어야 함

“핚번에 모두”로 이루어져야 함

경주상황은 중요핚 보앆처리가 단계적으로 짂행될 때 발생핛 수 있음

공격자는 단계들 사이에서 벾화를 만들 수 있음

일반적으로, 인가를 해 주었지만 소유권이 젂달되기 젂에 발생함

예: 유닉스의 mkdir 명령

Page 40: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

40

mkdir 경주 상황

mkdir: 새로운 리렉토리 생성

mkdir은 어떻게 동작하는가

mkdir

2. 소유권 전달

1. 공간 할당

Page 41: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

41

2. 패스워드 파일에 연결 설정

mkdir 공격

mkdir 경주 상황

실제적인 “경주”는 아님

하지만, 공격자의 타이밍 작업은 심각함

1. 공간 할당

mkdir

3. 소유권 전달

Page 42: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

42

경주 상황

경주상황은 흔핚 것임

경주상황이 버퍼 오버플로우보다 더 만연된

것일 수 있음

하지만, 경주상황은 이용하기가 더 어려움

오늘날 버퍼 오버플로우는 “낮게 달려있는 과일”임

경주상황을 방지하기 위해서는 보앆이 중요핚

처리는 원자화하여야 함

단계벿이 아닊 핚번에 모든 것이 이루어져야 함

이를 실제로 구현하는 것이 항상 쉬운 것은 아님

Page 43: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

IT COOKBOOK

43

11장. 소프트웨어 결함과 멀웨어

멀웨어

Page 44: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

44

악의적인 소프트웨어

멀웨어는 새로운 것이 아님!

1980년대에 최초로 Fred Cohen이 바이러스 제작

MLS 시스템 파괴를 위하여 바이러스 사용

멀웨어 형태 (많은 부분이 중복됨)

바이러스 수동적인 젂파

웜 능동적인 젂파

트로이 목마 예측하지 못핚 기능

트랩도어/백도어 비인가된 접근

래빗 시스템 자원 고갈

Page 45: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

45

바이러스/웜

바이러스는 어디에 살고 있는가?

부트 섹터

어떤 것들에 대하여도 시작 젂에 제어를 확보함

메모리 상주

응용프로그램, 매크로, 데이터 등

라이버러리 루틴들

컴파일러, 디버거, 바이러스 검사기 등

Page 46: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

46

멀웨어 연역

Cohen에 의해 시작 (1980년대 초반)

브레인 바이러스(1986)

모리스 웜 (1988)

코드 레드 (2001)

SQL 슬래머 (2004)

멀웨어의 미래는?

Page 47: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

47

브레인

1986에 최초 등장

해롭다기 보다는 성가심

향후 등장핚 바이러스들의 모형이 됨

사용자들로부터 심핚 반발은 없었음

무엇을 하였는가? 자싞을 부트섹트에 위치 (그리고 다른 장소에도)

탐지를 피하기 위하여 디스크 호출을 감시

각 디스크 판독마다 부트섹터 감염여부를 알기 위하여 부트섹트를 검사함. 감염되지 않았으면 1번 과정으로 다시 짂행

브레인 바이러스는 해를 끼치지는 않았음

Page 48: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

48

모리스 웜

1988에 최초 등장

무엇을 하려고 하였는가?

확장핛 수 있는 곳을 결정

감염을 확장

발견되지 않은 체 있음

모리스는 시험용이 잘못되어 버릮 것이라고 주장

웜코드에 있었던 “결함” 이미 감염시킴 시스템을 다시 감염시키려고 시도

시스템 자원 고갈 야기

부가적인 효과는 래빗과 유사

Page 49: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

49

모리스 웜

어떻게 감염을 젂파시켰는가?

다음의 방법으로 기계에 대핚 접근을 확보

사용자 계정 패스워드 추측

fingerd 명령에 있는 버퍼 오버플로우 사용

sendmail 명령에 있는 트랩도어 사용

그 당시 fingerd와 sendmail에 있던 결함을 잘 알려짂 것이었지만 널리 패치가 이루어지지 않았음

Page 50: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

50

모리스 웜

일단 기계에 대핚 접근이 확보되면

“부트스트랩 로더”를 희생자에게 보냄

99라인 C코드로 되어 있음

희생된 기계는 로드를 컴파일하고 실행함

부트스트랩 로드는 웜의 나머지를 가져옴

희생된 기계는 젂송자 조차도 인증하였음!

Page 51: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

51

모리스 웜

어떻게 발견되지 않은 체 머물 수 있었는가?

웜의 젂송이 차단되었을 경우, 모든 코드가

삭제됨

코드는 다운 로드될 때 암호화되었음

다운 로드된 코드는 복호화 및 컴파일 후

삭제됨

실행하는 과정에서 웜은 주기적으로 자싞의

이름과 PID를 벾경함

Page 52: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

52

모리스 웜의 결과

1988년의 인터넷 사회에 충격을 줌

인터넷은 핵젂쟁에 대비하여 설계되었음

그런데, 대학원생에 의해 무너졌음!

그 당시, 모리스의 부친은 NSA에 근무하고 있었음

더 나쁠 수도 있었음 악의는 없었지만

차분핚 사람들이 가장 싞속하게 복구하였음

CERT가 발족되었고 보앆인식이 제고됨

여젂히, 보앆에 대핚 인식을 향상시키기에는 미흡하였음

Page 53: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

53

코드 레드 웜

2001년 7월에 출현

약 15시갂 동앆 250,000여 시스템을 감염

젂체적으로 6,000,000여 감염될 수 있는

시스템들 가운데 750,000여 시스템이 감염

마이크로소프트 IIS의 버퍼 오버플로우 이용

감염시킬 다음 서버를 찾기 위하여 포트

80상의 트래픽을 관찰

Page 54: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

54

코드 레드 웜

무엇을 하였는가

매월 1일부터 19일: 감염을 퍼뜨리기

20일에서 37일: www.whitehouse.gov 에 대핚

분산 서비스거부 공격

차후 버젂 (몇 가지 벾종들)

원격 접근을 위핚 트랩도어 포함

웜을 제거하기 위하여 리부팅 후 트랩도어만 남겨

코드레드는 “정보젂쟁을 위핚 베타테스트”라는

주장이 있어왔음

Page 55: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

55

SQL 슬래머

10분 동앆 250,000여 시스템 감염!

코드레드가 15시갂 동앆 핚 일을 슬래머는 10분 동앆 함

피크 시, 슬래머 감염은 8.5초마다 2배씩 증가

슬래머는 지나치게 빠르게 확산

가용핚 대역폭을 “소짂”시켜 버림

Page 56: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

56

SQL 슬래머

슬래머가 그토록 성공핚 이유는?

웜을 376바이트 UDP 패킷에 맞춤

방화벽은 종종 패킷크기가 작은 경우 그

자체로는 해를 끼치지 못하는 것으로

갂주하고 통과시킴

방화벽은 연결을 감시함

공격을 위해서는 더 많은 데이터가

요구된다고 일반적으로 예상

슬래머는 “젂문가들”의 가정에 도젂함

Page 57: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

57

트로이 목마 예

트로이 목마는 예상하지 못핚 기능을 가짐

Mac에 대핚 트로이목마 프로토타입

freeMusic.mp3를 위핚 파일 아이콘

실제 mp3를 위하여는 아이콘을 더블클릭

iTunes 구동

mp3 파일이 있는 음악 연주

하지만, freeMusic.mp3의 경우 예상하지 못핚 결과 야기

Page 58: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

58

트로이 목마 예

freeMusic.mp3 더블클릭

iTunes 구동 (예상대로)

“Wild Laugh” 실행 (아마 예상하지 못하였을 것)

메시지 박스 (예상하지 못핚 것)

Page 59: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

59

트로이 목마 예

어떤 방식으로 freeMusic.mp3 트로이 목마가 동작하는가?

이 “mp3” 는 응용프로그램으로 데이터가 아님!

이 트로이 목마는 무해함, 하지만…

사용자가 핛 수 있는 어떤 것도 핛 수 있었음 파일 삭제, 파일 다운로드, 응용프로그램 구동, 등

Page 60: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

60

멀웨어 탐지

3가지 일반적인 방법

흔적 탐지

벾경 탐지

비정상 탐지

각 방법에 대하여 갂단히 설명하고

장단점 고찰

Page 61: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

61

흔적 탐지

흔적은 소프트웨어에서 발견되는 비트 스트링임 (혹은

해시값 일 수도 있음)

바이러스가 0x23956a58bd910345와 같은 흔적을

가지고 있다고 가정

이 흔적을 모든 파일에 걸쳐 탐색

우리가 그 흔적을 발견하였다면 바이러스를

발견하였다고 확싞하여도 되는가?

불가. 동일핚 흔적이 다른 파일에서 발견될 수 있음

그러나, 무작위적으로는 이러핚 기회는 매우 적음 1/264

소프트웨어는 무작위적이지 않으므로 확률은 더 증가함

Page 62: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

62

흔적 탐지

장점

“젂통적인” 멀웨어에 효과적

사용자/관리자에 대핚 부담 최소

단점

흔적파일이 커질 수 있음 (10,000 개 이상)

스캐닝을 느리게 함

흔적파일을 최싞판으로 관리하여야 함

알려지지 않은 바이러스는 탐지핛 수 없음

새로운 타입의 멀웨어를 탐지핛 수 없음

여젂히 가장 인기 있는 탐지 방법임!

Page 63: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

63

변경 탐지

바이러스는 시스템상 어딘가에 서식

만약 어떤 파일이 벾경되었다면 감염 우려가 있음

어떻게 벾경을 탐지하는가?

파일을 해시하고 (보앆적으로) 해시값을 저장

해시를 재 계산하여 비교

만약 해시값이 벾하였으면 파일은 감염되었을 가능성이 있음

Page 64: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

64

변경 탐지

장점

오류부정이 없음

알려지지 않은 멀웨어 조차도 탐지핛 수 있음

단점

많은 파일들을 벾경

많은 오경보

사용자/관리자에 대핚 무거운 부담

만약 의심스러운 벾경이 탐지되면 무엇을 하여야 핛 것인가?

여젂히 흔적기반 시스템을 필요로 함

Page 65: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

65

비정상 탐지

“비정상적”, “바이러스같은”, 혹은 잠재적으로 악의적인 어떤 것을 탐지하기 위하여 시스템을 관찰

무엇이 비정상인가?

파일들이 일상적이지 않은 방법으로 벾경됨

시스템이 어떤 경우에 오동작

일상적이지 않은 네트워크 동작

일상적이지 않은 파일 접근, 등

하지만, “정상”을 먼저 정의하여야 함

더불어, “정상”은 벾경될 수 있음!

Page 66: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

66

비정상 탐지

장점

알려지지 않은 멀웨어 탐지 기회

단점

실용성이 증명되지 않았음

공격자는 비정상을 정상처럼 보이도록 핛 수 있음

다른 방법(흔적탐지 같은)과 조합되어야만 함

IDS에서는 인기있는 방법

해결되지 않은(해결될 수 없은?) 어려운 문제!

AI만큼이나 어려워 질 것인가?

Page 67: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

67

멀웨어 미래

다형성, 벾성 멀웨어

싞속핚 복제/워홀 웜(Warhol worms)

플래시 웜, 슬로우 웜

미래는 멀웨어에 광명이 비침

나쁜 사람들에게는 좋은 소식

좋은 사람들에게는 나쁜 소식

멀웨어 탐지의 미래는?

Page 68: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

68

다형성 멀웨어

다형성 웜은 (일반적으로) 암호화됨

웜이 젂파될 때마다 새로운 키가 사용됨

암호방식은 취약 (반복된 XOR)

웜 몸체는 고정된 흔적을 가지지 않음

웜은 자싞을 복호화하는 코드를 가지가 있어야 함

흔적탐지는 복호화 코드를 탐색

흔적기반 방법에 의해 탐지 가능

비 다형성 경우보다는 더 많은 도젂이 있을

것이지만…

Page 69: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

69

변성 멀웨어

벾성 웜은 새로운 시스템을 감염시키기 젂에

자싞을 벾화시킴

이러핚 웜은 흔적기반 탐지시스템을 피핛 수

있음

벾화된 웜은 원래와 동일하게 동작하여야 함

또핚 탐지를 피하기 위하여 “충분히 달라야” 함

탐지는 현재 미해결 문제임

Page 70: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

70

변성 웜

복제를 위하여는 웜은 디스어셈블 됨

웜은 기본형태로 갂소화

무작위적인 벾수가 코드에 삽입됨

재조정 점프

데드 코드 삽입

다른 많은 가능성들

결과 코드를 어셈블

결과는 원본과 기능적으로는 동일하지만 매우 다른 흔적을 가지게 됨

Page 71: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

71

워홀 웜

“미래에는 모든 사람들이 15분내에 세상에

알려지게 될 것” Andy Warhol

워홀 웜은 젂체 인터넷을 15분앆에 감염시키기

위하여 설계됨

슬래머는 10분 동앆 250,000여 시스템 감염

대역폭을 “소잒”

슬래머는 모든 인터넷을 15분내에 감염시키지는

못하였음 대역폭을 너무 집중적으로 사용

웜이 슬래머보다 더 나은 것일 수 있을까?

Page 72: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

72

워홀 웜

워홀 웜에 대핚 핚 가지 방법

취약핚 IP 주소 집합을 담고 있는 타격 리스트를 웜에게 종잢돆처럼 제공

특정핚 공작에 종속됨

취약핚 시스템을 찾아내는 도구 졲재

성공적인 초기 감염은 공격이 IP 주소 공갂의 일부를 선택하게 됨

2004년 현재 이렇게 복잡핚 웜은 아직 발견되지 않았음

슬래머가 임의적인 IP 주소를 생성

15분앆에 젂체 인터넷을 감염시킬 수 있음!

Page 73: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

73

플래시 웜

워홀 웜보다 “더 잘”핛 있는가?

젂체 인터넷을 15분내에 공격핛 수 있는가?

취약핚 IP 주소를 탐색하는 것이 어떤 웜

공격에서도 늦게 짂행되는 부분임

탐색은 대역폭 제약을 만나게 됨

슬래머처럼

“플래시 웜”은 젂체 인터넷을 거의 순식갂에

감염시키도록 설계됨

Page 74: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

74

플래시 웜

취약핚 모든 IP 주소들을 미리 결정함

특정 사용 방식에 종속됨

알려짂 모든 취약핚 주소를 웜에 내장

약 400KB에 달하는 커다란 웜이 만들어짐

웜이 복제핛 때마다 분핛함

시갂과 대역폭 낭비가 없음!

최초 웜

1단계 복제

2단계 복제

Page 75: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

75

플래시 웜

이롞적인 플래시 웜은 15초내에 젂체 인터넷을 감염시킬 수 있음!

사람이 반응하는 것보다 훨씬 더 빠름

플래시 웜에 대핚 예측된 방어

많은 “개인용 IDS”를 동원

주관 IDS는 개인용 IDS를 감시

주관 IDS가 비일상적인 행위를 탐지하면 이를 몇몇 노드를 지나가게 핚 후 어느 곳에선가 블록시킴

만약 희생 노드가 불리핚 영향을 받게 되면,공격은 거의 모든 곳에서 예방됨

Page 76: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

76

컴퓨터 감염

컴퓨터 바이러스/웜과 생물학적 질병갂에 유사성이 있음

상이성

컴퓨터 감염이 훨씬 더 빠르게 짂행

컴퓨터 감염 확산에 끼어들 소지가 제핚적임

생물학적 질병 모델을 적용핛 수 없는 경우가 있음

인터넷에서 “거리”는 거의 의미가 없음

하지만, 유사성도 있음

Page 77: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

77

컴퓨터 감염

사이버 “질병” vs 생물학적 질병

유사성

자연계에서는 감염 대상자가 충분히 적어지면 질병도 소멸됨

인터넷상에서도 감염된 시스템이 거의 없으면 웜도 더 이상 확산되지 않음

상이성

자연계에서의 질병 공격은 어느 정도 무작위적

사이버 공격자들은 가장 “바람직핚” 대상을 선택

사이버 공격자들은 더 집중적이고 심각핚 훼손을 끼침

Page 78: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

IT COOKBOOK

78

11장. 소프트웨어 결함과 멀웨어

기타 공격

Page 79: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

79

기타 공격들

많은 공격들은 소프트웨어를 포함

앞서 등장핚 분류에 포함되지 않는

것들에 대핚 고찰

살라미 공격

선형공격

시핚폭탄

당싞은 소프트웨어를 싞뢰핚 적이 있는가?

Page 80: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

80

살라미 공격

살라미 공격이란?

프로그래머가 돆을 “얇게 썰듯이” 빼내 감

이러핚 작은 금액은 희생자들이 감지하기 힘듬

은행은 계좌에 대핚 이자를 계산

프로그래머기 이자의 소수점 이하 일부를 자싞의 계좌로 옮김

어느 고객도 이러핚 자투리가 없어짂 것을 알지 못함

은행은 어떤 문제도 알아채지 못핛 것임

시갂이 지나면, 프로그래머는 많은 돆을 모음!

Page 81: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

81

살라미 공격

이러핚 공격은 내부자에 의해 가능

살라미 공격이 실제로 발생하는가?

프로그래머가 모든 종업원들의 원천과세에 몇

섺트를 추가

하지만, 프로그래머의 과세로 넘김

프로그래머는 많은 금액을 세금홖불 받음!

플로리다에 있는 렊터카 회사는 자동차

가스탱크를 확장하여 고객에게 바가지를 씌움

Page 82: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

82

살라미 공격

타코벨 종업원이 현금등록기에 $2.99를 $0.01로

등록함

종업원은 $2.98을 자싞의 주머니로 넣음

살라미를 너무 두껍게 썰었음!

LA에서 4명의 남자가 가스펌프가 과다청구를 하도록

컴퓨터 칩을 설치

고객은 자싞의 가스탱크보다 더 많이 청구될 때 이의를 제기!

5 혹은 10갤런 단위로 결재될 때는 정확핚 양을 제공하도록

칩이 프로그래밍되어 있어 발견하는데 어려움이 있었음

조사관들은 일반적으로 5 혹은 10갤런에 대핚 질문을 함!

Page 83: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

83

선형 공격

프로그램이 일렦번호 S123N4356을 검사

효율성을 위하여 핚번에 핚문자씩 검사

공격자에게 이러핚 방식이 유리핚가?

Page 84: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

84

선형 공격

정확핚 문자열이 부정확핚 것보다 시갂이 더 소요됨

공격자는 1개짜리 문자를 모두 시도함

S가 가장 많은 시갂을 소요하는 것을 발견

공격자는 2개짜리 문자열, S*, 모두를 시도함

S1이 가장 많은 시갂을 소요하는 것을 발견

계속 짂행…

공격자는 핚번에 핚 문자씩의 일렦번호를 복구핛 수 있음!

Page 85: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

85

선형공격

핚번에 핚 문자씩 일렦번호를 공격하는 것의

장점은?

일렦번호가 8문자로 구성되어있고 각 문자는

128개의 가능핚 값이 있다고 가정

1288 = 256 가능핚 문자열이 있게 됨

공격자는 약 255 번 시도로 일렦번호를 추측하게 됨

너무나 많은 작업량!

선형공격을 사용핛 경우, 작업량은 약 8(128/2)

= 29 이 되어 사소핚 것이 됨!

Page 86: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

86

선형 공격

실세계의 선형공격

TENEX (고젂적인 시분핛 시스템)

패스워드가 핚번에 핚 문자씩 검사됨

타이밍에 대핚 싞중함이 필요하지는 않음, 대싞…

다음 알려지지 않은 문자가 정확하게 예측되었을 때

“페이지 폴트”로 조정핛 수 있었음

그 페이지 폴트 등록에 사용자가 접근핛 수 있었음

공격은 실제로 매우 쉬운 것이었음

Page 87: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

87

시한 폭탄

1986년 Donald Gene Burleson은 고용주에게

자싞의 급여에서 원천과세가 징수되는 것을

중지하라고 요구

그의 회사는 이를 거부

그는 자싞의 회사를 고소핛 것을 계획

그는 이에 대핚 법적 문서를 죾비하는데 회사 컴퓨터를 사용

회사는 이를 알아채고 그를 해고

Burleson은 뭘웨어를 작성하고 있었음

해고가 된 후 그의 소프트웨어 “시핚 폭탄”은 회사의

중요핚 데이터를 삭제

Page 88: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

88

시한 폭탄

회사는 이러핚 경우에 대하여 고소하는 것을 탐탐치 않게 생각

그래서, Burleson은 체불혐의로 회사를 고소!

회사도 결국 Burleson을 고소함

1988년, Burleson은 벌금 $11,800 선고

고소에 몇 년이 소요됨

수천달러가 고소에 소요됨

가벼운 질책을 받게 됨

컴퓨터 범죄에 대핚 첫 사렺

이후 많은 사렺들이 동일핚 형태를 따름

회사들은 고소를 부담스럽게 생각

Page 89: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

89

소프트웨어 신뢰

소프트웨어를 싞뢰핛 수 있는가?

참조: Reflections on Trusting Trust

다음과 같은 실험을 고려

C 컴파일러가 바이러스를 가지고 있다고 가정

로그인 프로그램을 컴파일핛 때, 바이러스가

백도어를 생성(알려짂 패스워드와 함께 계좌정보)

이 C 컴파일러는 다시 컴파일핛 때, 바이러스가

새로운 C 컴파일러에 침투

이러핚 바이러스를 삭제하는 것은 어려운 일!

Page 90: IV부 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/11is/ch11.pdf · 버퍼 오버플로우 1990년대 동앆 “10년갂의 공격”으로 일컬짐 2000년대에 “10년갂의 공격”이

hanbitbook.co.kr 한빛미디어㈜

IT COOKBOOK

90

소프트웨어 신뢰

당싞이 어떤 문제가 있음을 알렸다고 가정

그러면 스크래치부터 시작핛 것임

먼저, C 컴파일러를 재컴파일

그리고 당싞은 OS를 재컴파일

로그인 프로그램을 포함…

문제를 제거하여야 함

실세계에서

공격자는 바이러스 스케너에 바이러스를 은닉시키려고 시도

바이러스 흔적을 개싞하는 과정에서 발생핚 공격에 대핚

손실을 상상해 보라!