S/W Security와 관련된 2가지 Topic(S/W Flaws, malware S/W)이 존재
그 중 비의도적인 S/W Flaw의 경우 아래의 원인에 의해 발생할 수 있음
① Program Flaw (unintentional)
② Malicious software (intentional)
S/W 보안 - ① 까지 Program Flaw의 Buffer Overflow에 대해 정리
의도적으로 buffer overflow를 발생시켜 복귀주소를 덮어쓰기하거나 복귀주소에 악성 코드의 주소를 삽입하여 악의적인 코드를 수행하도록 유도하는 공격. 이때 공격 성공률을 높이고자 Stack Smashing 기법을 사용해 nop로 덮어쓰기하여 landing point를 늘려 공격 성공률을 높일 수 있다.
: 함수 수행 시 검증(input validation)을 제대로 수행하지 않아서 생기는 보안상 취약점
다음의 사례에서 incomplete meidation 발생
e.g - ① : copy하려는 문자열이 buffer공간보다 클 때,
strcpy (buffer, argv[1] )
if len(buffer) < len(argv[1])
e.g - ② url을 제대로 check, parsing하지 않으면 Client가 fake url에 접속할 수 있음
쇼핑몰 사용자(Client) & Server
Client가 Server에 주분 정보를 보냄
① 보안 이슈와 관련된 동작은 최대한 atomic 해야함 (한번에 수행)
② atomic 하지 않을 경우 중간에 개입(끼어들기)를 통해 보안상 취약점 발생할 수 있음
※ 안드로이드 취약점
Intent != direct call ( 즉 intent를 보내고 언제 respones할지 모름), msg 발송 후 reponse하는게 알아서 (=inplicit invocation)
=> 안드로이드 내 각 요소들이 indepentdent하게 동작
race condition 발생하기 easy (eventsystem)
①과 ② 사이에 공격자는 메모리 공간에 권한을 가져올 수 있음
※ Summary
1. Buffer Overflow
2. Incomplete Medation
3. Race Condition
위 3가지 요소에 의해 Program Flaw가 발생할 수 있음
Buffer overflow, Input mediation, race condition에 의해 S/W security 취약점을 발생. 이는 unintentional flaw이나, malware같은 intentional flaw가 존재
Malicious Software : S/W created for malicious purpose (intentional)
ⓐ Virus
ⓑ Worm
ⓒ Trojan horse
ⓓ Trapdoor/backdoor
ⓔ Rabbit
ⓐ Boot sector
ⓑ Memory resident
ⓒ Applications, macros, data, etc.
ⓓ Library routines
ⓔ Compilers, debuggers, virus checker, etc.
< Brain >
< Morris Worm >
최초의 worm
어디로 갈지 확인/퍼뜨린다/들키지 않고 숨어있도록
(초기 의도) 감염된 시스템에 계속 퍼뜨리려하였으나 비감염 시스템을 계속 공격하는 바람에
=> resource exhaustion
pw 유추
Dictinary attack
fingerd(client 서버 연결용, 512 byte로 고정)에 대한 buffer overflow (512 byte를 넘겨서 주고받을 수 있도록 실제 설계됨
=> 보안 취약점 (512bytes는 비우고 ,overflow 24byte에 악성 수행 코드등을 삽입) (buffer overflow 악용)
sendmail
code red worm : 대규모 worm의 위험성
sql slammer worm : code red보다 더 빠르게 감염, MS의 SQL 서버를 감염 (특정 포트를 통해),감염자체가 8.5초마다 2배씩 (너무 빠르게 bandwidth 확장으로 인한 소모로 인해 빠르지만 멈추버림, 네트워크의 가용 대역폭을 넘어서서), 방화벽이 모니터링하므로, 특정길이보다 작은 경우 그냥 보내주는구나 (공격 시보내는 패킷 길이보다) => 이길이로 맞춰서 보내자 (376byte) => 방화벽에 filtering 되지 않음
=> 둘다 buffer overflow 악용
Trojan Horse : (.mp3파일로 위장 but 사실은 어플)
Malware의 감지를 통해 공격으로부터 보호할 수 있다.
(Network Security 에서와 동일한 컨셉)
1) Signature (주요 특징기반 감지)
2) Change (코드 변경 감지)
3) Anomaly (정상 비정상 구분지어 비정상을 검출)
: 악성 SW에서 주로 발견되는 패턴의 "string of bits"를 signature로 보고 악성 SW를 탐지할 수있다.
장점
- 전형적인 malware 탐지에는 효과적
- 부담이 적음(cost나 effort가 타 기법에 비해 적은편)
단점
- signature file 자체가 매우 클 수 도 있음(can be slow)
- 이는 signature scanning을 느리게하여 성능 저하로 이어질 수 있음
- ★ 전형적이지 않은 malware탐지는 어려움(unknow viruses)
- 새로운 타입의 malware 탐지가 불가
=> 그럼에도 여전히 가장 popular한 technique
: system code(file)의 변경을 탐지
How to detect changes?
: 원본(정상)시스템 코드의 Hash값을 저장하여, 현재 시스템 코드 Hash값과 비교
=> Hash값이 변하였다면 시스템이 감염되었을 수 있음
장점
- ★ No false negative(거짓음성) : malware에의해 감염되었는데 감염되지 않았다고 판단하는 일이 없음
- 새로운 타입의 malware를 탐지할 수 있음
단점
- 정상적으로도 시스템 코드(파일)이 변경될 수 있음
- 이에 따라 ★ false positive는 다수 발생 : 감염되지 않았는데 알람 발생
- 매번 Hash value를 recompute & compare해야하므로 burden
=> 일반적으로, 1) Signature Detection과 함께 사용됨
: 비정상(unusal or virus-like)을 탐지
What is unusual?
- Files change in some unusual way
- System misbehaves in some way
- Unuswal network activity
- Unusual file access
=> 중요한 것은 "normal"를 미리 정의해야함
(but, standard for "normal" can change!)
장점
- 악성 SW를 감지할 수 있음
단점
- 실전에서 검증되지 않음
- 공격자는 "normal"인척 할 수 있음 ("noraml"에 대한 기준이 존재한다면 그에 맞추지 뭐)
=> 마찮가지로 다른 Technique과 같이 사용