일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 딱다구리과
- 계수정렬
- 한국의 새
- 딥러닝공부
- keras
- python3
- 가마우지과
- 비둘기목
- Python
- 직박구리과
- 흰날개해오라기
- AI역량평가
- Birthday paradox
- ADsP
- 오리과
- 비둘기과
- 백로과
- 한국의새
- IBK기업은행 인턴
- AI전략게임
- 생일문제
- django
- 딥러닝 공부
- 솔딱새과
- SimpleCraft
- 맑은소리 스피치학원
- 참새과
- structured_array
- 기러기목
- 참새목
- Today
- Total
진박사의 일상
[컴보] 6강 악성 소프트웨어 본문
악성 소프트웨어(Malicious Software) = Malware
시스템에 몰래 설치되어 기밀성, 무결성, 가용성을 침해하기 위한 목적으로 데이터, 어플리케이션, OS 등을 공격하는 프로그램
멀웨어 기술
- Adware : 광고 띄우기
- Backdoor : 공격 이후에 다음 공격을 쉽게 할 수 있도록 설치
- Downloader : 다운로드만 하는 프로그램이라 악성코드로 감지하기 쉽지 않음. 다운로더로 다른 악성코드를 다운.
- Drive-by-Download : 웹 페이지에 잘못 접근했을 때 자동으로 다운로드 되는 기술
- Exploits : 공격 할 수 있는 코드
- Logic bomb : 특정 조건이 만족하면 동작하는 악성코드
- Rootkit : root level로 설치되어 공격자의 공격 행위를 숨기는 기술
- Spammer program : 스팸 메일
- 그 외에도 Attack Kit, Auto-rooter, Flooders(DoS client), Keyloggers, Macro Virus, Moblie code, Spyware, Trojan horse, Virus Worm Zombie, bot 등이 있음.
악성 코드의 특징
-Propagation mechanisms(확산 매커니즘) : 다른 시스템이나 취약점을 찾아서 웜이나 drive-by-download로 악성 코드가 설치되도록, social engineering attack(사회공학적 공격)으로 전파
-Payload action(공격 코드) : 시스템 or 데이터의 파괴, 서비스나 정보 절도, 악성코드의 존재를 숨기기
Viruses (Worm과의 차이점 주의 - worm은 독립적인 프로그램)
- 다른 소프트웨어에 감염되서 전파 : 숙주인 host body가 있어야 함. 복제를 통해 추가적인 감염. 주로 네트워크를 통해 전파. 정상적인 실행 가능 프로그램에 붙어 해당 프로그램의 권한으로 목적과 다른 일을 수행. 특정 OS나 하드웨어에 따라서 동작.
- 구성요소 : Infection mechanism(감염 메커니즘), Trigger(어느 순간 악성 행위를 할 것인지, =logic bomb), Payload(어떤 공격행위를 할 것인지)
Virus Phases
- dormant phase(잠복기) : 비활성 상태, 특정 이벤트에 의해 활성화, 모든 바이러스가 가지는 것은 아님.
- propagation phase(확산기) : 바이러스가 스스로를 복제하여 시스템이나 다른 프로그램에 설치.
- triggering phase : 다양한 시스템 이벤트에 의해 바이러스의 악성 함수가 활성화
- execution phase : 악성 행위가 동작
Propagation(확산)
- 공격할 수 없는 사이트에 대한 하드코딩 된 블랙리스트 보유
- 디버깅 SW의 존재 유무 -> MS homepage 접속 시도 -> C&C sever에 접속 순서로 실행. 디버깅 SW가 없고 MS homepage 접속되는지 확인 후 악성코드 서버로 접속
- VM의 존재를 감지하기 위해 MS office를 설치해 word 문서가 열린 적 있는지 검사
Virus 구조
정상 프로그램의 앞에 붙어서 다른 파일을 랜덤으로 가져와서 (감염된 해당 프로그램의)특정 시그니처가 맞는지 검사하고 아니라면 감염된 프로그램이 아니므로 해당 프로그램에 바이러스를 붙임(infect-executable) -> 트리거가 맞으면 공격 시작(trigger-pulled) -> 트리거가 아니라면 원래 정상 프로그램 코드로 진입하도록(go-next).
-> Virus가 붙으면 용량이 커져서 판별 가능
-> 이를 막기 위해서 Compression Virus Logic (Packing)
압축을 해서 virus를 붙이고 실행할 때 uncompress함
(1) 바이러스 감염된 압축 프로그램 P1' 실행할 때 압축된 바이러스(CV)가 다른 프로그램(P2)을 압축 -> (2) 압축된 프로그램(P2')에 압축된 바이러스(CV)를 부착해서 원래 사이즈로 -> 확산이 끝난 후 P1'의 압축을 해제하여 P1을 실행
(압축/풀기 대신 암호화/복호화를 사용할수도 있음)
Virus 분류
- Target에 따른 분류
- Encrypted virus : 바이러스 코드를 암호화해서 알아보기 힘들게
- Stealth virus : 백신 프로그램이 찾지 못하도록 숨기는
- Polymorphic virus : 여러개 형태의 바이러스. 복호화 한 프로그램은 동일하지만 암호화 한 실행파일은 모두 다른 크기. -> signiture로 탐지하기가 어려워짐
- Metapmorphic virus : 형태 뿐 아니라 실행하는 실행 행위도 다른 바이러스
- Concealment strategy(은폐 정책)에 따른 분류
- Boot sector infector : 부트 섹터에 감염
- file infector : 특정 실행 가능한 파일에 감염
- macro virus : 어플리케이션에 의해 해석되는 매크로를 이용한 바이러스
- multipartite virus : 파일을 여러가지 방법으로 감염시키는 바이러스
Macro/Scripting Code Virus
- 1990년도 중반에 Document 파일에 감염되던 플랫폼 독립적인 바이러스. 실행파일이 아닌 document에 감염되서 확산 쉬움.
- MS Office의 매크로 기능을 악용한 바이러스 - 지금은 다운로드한 문서의 경우 default로 매크로 기능이 블락되어 있어서 예전처럼 많이 쓰이지 않음.
Worms
- 바이러스와 달리 독자적으로 동작하는 프로그램.
- SW 취약점 악용, 네트워크, USB나 공유문서 등의 공유 매체, 이메일 첨부파일 등을 통해 전파
- 활성화 되면 자가복제하고 확산, 악성 행위(payload)도 함.
Worm Replication(웜 복제 방법) - 대응 방안
- E-mail or Instant messenger facility(이메일, 메신저) - 첨부파일 열 때 주의, 의심스러운 파일 열기x
- File sharing(파일 공유) - 공유 폴더 사용x or 공유 폴더 암호 설정
- Remote execution capability(원격 실행), Remote file access or transfer capability(원격 파일 접근 or 전송), Remote login capability(원격 로그인) - 원격 접속 & 서비스 사용 주의
Worm Propagation Model
Morris Wrom
- 1988년 Robert Morris에 의해 배포된 최초의 Worm 중 하나
- UNIX 시스템에 전파되는 worm, local password file을 크랙해서 다른 시스템에 로그인
- finger protocol(원격 사용자 정보를 알려주는 프로토콜)의 버그를 악용
- 이메일 서비스의 trapdoor를 악용
주요한 웜들
Mellissa : 이메일 웜
Code Red, Code Red 2 : Web server(MS IIS)를 공격. 잘 짜여진 코드
Nimda : 다양한 공격 경로를 가지고 있어서 빠른 시간 내에 전 세계 컴퓨터 감염
SQL Slammer : SQL서버의 buffer overflow 취약점을 악용. -> 국내 인터넷을 2시간이나 차단시킨 전적.
Stuxnet : 기존 웜과 달리 industrial control systems(발전소 제어 시스템 등)을 공격 대상으로 삼음. - 일반적으로 폐쇄망을 사용하는 ICS를 공격. 개인 PC를 감염시켜 USB를 통해서 내부 시스템에 전파. - 이란 핵 재처리시설 모터를 파괴
Worm Technology
- multiplatform(다중플랫폼) < multi-exploit(공격 종류 여러가지로) < ultrafast spreading(전파속도 빠르게) < polymorphic < metamorphic
Mobile Code
- 변환 없이 다양한 플랫폼에서 동작될 수 있도록 하는 프로그램. 바이러스나 웜, 트로이목마 등에 사용가능
- 주로 Java Applet이나 ActiveX, JS, VBScript 등을 이용
Mobile Phone Worms
- 2004년 이후로 빠르게 전파, 스마트폰 보급으로 더 빠르게 전파
Drvie-By-Downloads
- 브라우저 취약점을 악용하여, 악성 스크립트를 포함된 사이트(Malicious Web Page)에 접근한다면 악성 코드를 다운받게 함.
Social Engineering Attack
- "tricking" 사용자를 속여서 특정 행동을 유발하는 공격
- Spam : 악성 링크, 악성 파일 첨부
- Trojan Horse : 정상 동작 외에 숨겨진 악성 코드가 포함되어 작동하는 프로그램
- Mobile Phone Trojans : 모바일 어플리케이션에서는 트로이 목마 공격이 잦음
Payload(악성 행위) - System Corruption
- Data destruction : 데이터 파괴
ex) Chernobyl virus(1998년, Window 95,98, 시스템 파괴), Klez(worm, win95-XP, drive를 clear)
Ransomware(사용자 파일을 암호화시키고 복호화를 빌미로 돈을 요구)
- Real-world Damage : 물리적 장치를 파괴
ex) Stuxnet worm( Industrial Control System 공격), Logic bomb(특정 contidion이 맞으면 악성 행위 실행)
Malware-2
Payload - Attack Agents
-Bots : 개인 PC에 감염되는 악성 코드. botnet이라는 네트워크를 형성
-bot의 이용 : DDoS 공격, Spam, sniffing traffic, keylogging, 새로운 malware 전파, 광고 add-on BHO(Browser Helper Objects) 설치, IRC 채팅 네트워크 공격, 온라인 게임 투표 조작
Botnet Overview
- bot master : malware를 이용해 botnet 설치, 악성 행위 command를 전송
- bot : bot-master에게 감염된 개인 pc나 장치, bot-master에 의해 악성 행위 수행
- botnet : 하나 이상의 bot master에게 속한 bot들의 네트워크
- C&C servers : 역추적을 통한 bot master 특정을 피하기 위해 중간에서 command를 연결시켜주는 서버(명령은 C&C 서버를 거쳐서 내리고 Bot-master는 서버 접속 기록을 제거)
-감염 경로 : Browser Exploits(브라우저 악용, 65%), Email 첨부(13%), OS Exploits(11%), Download files(9%), 그외(2%)
Countermeasures against botnets
- 봇넷을 막기 어려운 이유
- 감지가 어려움 : 다양한 특징이 있고 많은 변이가 있음. 봇이 되는 개인 PC에는 악성 행위를 하지 않고 bot을 이용해 다른 곳을 공격하는 것이 목적이기 때문에 탐지 어려움
- 관리가 잘 되지 않는 일반 사용자 pc에 감염됨 -> 그래서 정상 IP를 사용함(IP Spoofing을 하지 않음)
- 적은 수의 공격 패킷만을 생성하고(bot에서는) 대부분의 시간에서는 활동을 하지 않음.
Botnet Composition and operations
1. 봇 마스터가 취약점을 이용해 악성파일을 배포
2. 감염된 bot들이 C&C Server와 연결
3. 봇 마스터가 C&C서버로 명령을 내림. (항상 켜져 있고 인터넷이 접속된 서버나 PC를 활용)
4. C&C 서버가 bot으로 명령을 전달.
5. 각 bot들이 공격 대상으로 악성 행위를 함. (DDoS, 스팸메일 등)
-Network Protocols : IRC(채팅 프로토콜로 암호화된 명령어 전달), HTTP(방화벽 피하기), P2P(P2P 중 일부를 C&C로)
- 봇 마스터가 C&C 서버를 통해 명령을 전달할 때 1) 어떤 것을 C&C로 설정할지 2) C&C 서버가 경찰에 의해 다운될 때 대비
1) C&C 서버 IP 주소를 Hard-coding -> 서버가 다운되면 botnet이 무용지물
2) DNS 주소로 보냄. -> 서버가 다운되면 해당 DNS의 서버를 다른 IP의 서버로 전환. 또는 다운 되지 않았더라도 자주 IP를 바꿈.(공격 시도가 여러개 서버로 분산되므로) <- 자주 domain IP를 바꾸면 C&C 서버로 의심할 수 있음. -> 도메인 이름도 매번 랜덤하게 새롭게 설정(DGA)하기
CCTV bots : cctv와 같은 IP 기반 IoT 장비도 bot이 될 수 있음. ex) mirae - 회사별 default id/ps가 하드코딩 되어 있음
Remote Control Facility
- bot은 worm과 다르게 스스로 퍼지고 동작하지 않고 초기에 중앙 시설에 의해 컨트롤 됨. 이를 위해 주로 IRC 서버, HTTP, P2P 등을 이용함.
Payload - Information Theft
- Keylogger : key stroke를 캡처하고 수집해서 공격자에게 전달
- Spyware : 브라우저 활동을 모니터링, 웹 사이트 요구 시 가짜 사이트로 연결, 데이터를 보낼 때 변조해서 보내기 등
- Phishing(Privacy + fishing) : 여러 방법으로 악성 사이트에 접속시켜 개인정보 탈취
- Spear-phishing : 공격 대상자에 대해 조사해서 개인 맞춤형 악성 이메일을 보내기(지능적인 공격)
Payload - Stealthing
- Backdoor(=Trapdoor) : 공격자가 한번 공격을 성공한 후에는 동일한 경로가 아닌 더 쉽게 접속할 수 있는 경로를 따로 만들기 위해 만들어 두는 프로그램. 또는 개발자가 관리나 디버그 목적으로 만들어놓은 백도어(maintenance hook)를 공격자가 발견해서 이용하는 방법도 있음.
- Rootkit : 커널 레벨에서 악성 코드 설치. 주요 목적은 공격자의 행위가 기록에 남지 않도록 숨김. root 레벨에서 설치되므로 백신 어플리케이션으로 탐지하기 어려움. 특징 : persistent, memory based, user mode, kernel mode, virtual machine based, external mode
System Call Table Modification - Rootkit 공격
system call table을 수정해서 사용자의 흔적이 남지 않는 위조한 system 함수로 연결시킴
막기 위해서 HW based Rootkit detection(하드웨어 레벨에서 탐지) - kernel integrity
Phishing - 보이스 피싱, 메신저 피싱, SMS 피싱, 이메일 피싱
Malware- 3
Cold Boot Attacks
전력 공급이 끝나면 데이터가 휘발되는 DRAM에서 전력 공급 중단 후 n 초 동안 DRAM에 잔류한 데이터 량
DRAM을 냉각하면 Decay가 느리게 진행되어 DRAM을 덤프할 수 있게 됨.
Web Attacks - Cybercrime 2.0
- Browser-related attacks : 스팸메일...
- Web server attacks : IFRAME 태그를 악용해 drive-by download, SQL injection 공격
Web Attacks - Cross Site Scripting(XSS)
- 게시판에 HTML 스크립트를 입력할 수 있도록 해놓은 경우에 발생할 수 있음
서버에 스크립트를 올렸는데 실제 스크립트가 실행되는 건 사용자 PC가 되어 사용자 정보를 빼가는 공격
- 특수문자 필터링을 해서 막기
- 그러나 특수문자 필터링 해도 이런식으로 우회할 수 있음.
그 이외의 공격들
- .htaccess 공격
일반적으로 URL을 입력해서 접속하면 정상 접속이 되나, 검색 사이트 등 외부 사이트에서 접속할 경우 공격자의 사이트로 리다이렉트 되게
- Fake anti-virus scanners/ codecs/ video players
- key-logging 등
OWSP top 10 2017->2021
SNS 공격
- 트위터 : 스팸 공격 성공적(많은 대중, URL 압축 서비스, 필터링 매커니즘 부족)
CTR(클릭횟수) : 245000 url 중 97.7%가 미클릭, 클릭한 중 대부분은 10회 미만이었으나 10%는 많이 클릭, 스팸 성공률이 이메일보다 높음
Malware Countermeasure Approaches
- 가장 이상적인 해결책은 '예방(prevention)'
- 예방의 4 요소 : policy(정책), awareness(교육), vulnerability mitigation(취약점 완화), threat mitigation(위협 완화)
- 예방이 실패했을 때 대처 : detection(공격 탐지), identification(공격 종류 식별), removal(위협 제거)
Anti-Virus Software의 세대별 구분
1 Gen - simple scanner : malware의 signature를 식별, 이미 알고 있는 malware만 대처할 수 있다는 한계.
2 Gen - heuristic scanner : heuristic한 rule을 정해서 특정 행위에서 통계적인 이상치(ex 너무 많은 파일 생성 등)를 감지
3 Gen - activity traps : 악성코드의 행위를 보고 탐지. 실시간 모니터링
4 Gen - full-featured protection : 다양한 방법을 종합해서
Generic Decryption(GD)
- 악성코드가 packing되어 있으면 unpacking해야 함. 암호화된 Polyomorphic virus을 감지하기 위한 간단한 방법은 Virtual Machine 상에서 악성코드를 실행하는 것. 악성코드를 실행하면 Decrypt를 할 것이므로...
- 이 때 VM을 써서 악성코드를 실행해서 검사하는 것이 GD scanner
- GD Scanner 요소 : CPU Emulator, Virus signature scanner, Emulation control module
- GD Scanner에서 악성코드를 몇 분간 실행할 것인지를 정하는 것이 어려움
Host-Based Behavior-Blocking Software
-각 개별 머신에 설치되어 OS에서 system call 호출하는 것을 실시간으로 감시하여 악성 행위라고 판단되면 blocking
Perimeter Scanning Approaches
- ingress monitors : 외부->내부의 트래픽 모니터링. 내부 네트워크를 보호하기 위한 목적 오직 특정 포트만을 열고 나머지는 block하는 정책.
- egress monitors : 내부->외부 트래픽 모니터링. 심하게 차단하지는 않는 대신 bot이 될 수도 있으므로 모니터링.
Worm Countermeasures
- signaure-based worm scan filtering : 감지
- filter-based worm containment : 웜이 전송될 때의 패킷의 특징으로 판단해서 차단
- payload-classificaition-based worm containmet : 웜의 패킷의 페이로드 특징을 보고 차단
- threshold random walk (TRW) scan detection : 웜이 감염되면 악성 코드를 전파하기 위해 포트에 들어오는 패킷과 나가는 패킷의 수가 threshold보다 많아지므로 이를 스캔해서 웜의 감염 여부를 감지
- rate limiting/halting : 악성 코드 전파시 특정 포트의 트래픽이 증가하므로 전체 대역폭을 차지하지 못하도록 트래픽 비율을 제한(limiting)하거나 일정 비율을 넘어서면 포트의 트래픽을 drop(halting)
Digital Immune System
특정 네트워크의 Client Mahcine이 악성코드에 감염되면 중앙 관리 머신에서 Malware Analysis Machine으로 전송하여 악성코드의 행동과 구조를 분석 -> Signature 추출 -> 예방책 도출 -> 개인 pc나 관리자 머신에게 보내서 예방
-> 새로운 악성코드 정보를 빠르게 수집할 필요성 있음
-> Worm Countermeasure Architecture
Correlation server에서 외부 센서와 내부 네트워크의 Firewall sensor, Passive sensor, Honeypot(fake data가 들어있어서 진짜 개인 PC처럼 보이지만 공격당하면 그 정보를 모니터링 할 수 있음.)을 통해 빠르게 새로운 악성코드 정보를 수집. -> sendboxed enviroment에서 분석 -> 필요하다면 패치 생성해서 예방
Andorid Malware Detection
- DREBIN : 스마트폰 앱에 대한 정적 분석을 통해 Used permission, API Calls 등 특징을 추출하고 악성인지 아닌지 분류하는 모델
- DroidAPIMiner : API call + 파라미터 분석해서 dangerous API를 찾기
- MADAM : kernel-level과 user-level을 감시하여 악성 행위(behavior)를 구별. system call 분석
- Android Malware Analysis with ML : APK 정적 분석.
Malware Analysis
- Issues on Malware Analysis : 매일 90000개 이상의 악성코드가 발생... 자동화 필요
- 정적 분석 vs 동적 분석
- 정적 분석 : 실행x binary만으로 분석 - instruction frequency, control flow graph(CFG), system call invocation sequence, block-based similarity 등으로 분석, binary code를 분석 가능하다는 장점, 문제점-packing technique 때문에 분석이 어려움. -> 동적 분석을 해봄
- 동적 분석 : 실행해서 분석. 패킹 기술이 적용되어 있어도 분석 가능. but 실행이 제대로 되지 않는다면 불가능
동적 분석 환경 :
모니터 머신에서 분석 서버로 커맨드를 보내면 분석 서버의 VMWare에서 OS+PIN+VS를 깔고 FTP 서버의 Malware DB로부터 Malware를 불러와 실행하고 Excution Trace를 돌려줘서 분석.
Static Analysis - Opcode Qrequency
악성 코드 종류에 따라 Opcode의 사용 빈도가 다르므로 이로 구별
-> Dynamic하게 Opcode Frequency 분석을 할 수 있음.
Block 중에서 반복되는 구문은 동일한 Excution trace가 나오므로 생략
Malware Visualization
Malware를 Image로 바꿔서 같은 분류군의 악성코드로 분류 -> ML기술 적용 가능
Reverse Engineering - 악성코드 분석 + 취약점 테스팅 등에 이용
Reverse Code Enginnering - SW 분야의 Reverse Engineering, Static과 Dynamic 분석이 있음.
- Static(실행x feature[type, size, API, 압축, 정규화 디버깅 정보 등] 분석), Dynamic(실행 후 행위 분석, 디버깅을 통해 control flow & memory state 분석)
Patch & Crack
- Patch : 실행 파일이나 메모리 컨텐츠를 바꾸는 일(window update)
- Crack : Patch와 비슷하나 의도가 불법적(저작권 침해)
'프로그래밍 > 공부' 카테고리의 다른 글
[데베시] 7강 - Relational Algebra (0) | 2021.10.25 |
---|---|
[데베시] 6강 (0) | 2021.10.18 |
[데베시] 5강 - Relational Data Model (0) | 2021.10.14 |
[컴보] 5강 DB Security (0) | 2021.10.05 |
[데베시] 4강 (0) | 2021.10.04 |