Malware (Malicious Software)
악성 소프트웨어 (멀웨어, 맬웨어)
“A program that is inserted into a system, usually covertly,
with the intent of compromising the confidentiality, integrity, or availability
of the victim’s data, applications, or operating system or otherwise annoying or disrupting the victim.”
- Guide to Malware Incident Prevention and Handling for Desktops and Laptops (URL)
- 멀웨어는 피해자의 데이터, 응용프로그램, 운영체제의 기밀성, 무결성, 가용성을 손상시킬 의도로
피해자의 시스템에 은밀히 삽입된 프로그램을 통칭한다.
Types of Malware (멀웨어의 유형)
- Malware의 개념들은 상호 배타적이지 않다.
즉, 각각의 개념들의 구분이 명확치 않음을 명심하자.
Terminology | Description |
APT (Advanced Persistent Threat) |
- 다양한 침입 기술과 Malware를 사용하여 상업적·정치적 목적으로 하는 사이버 범죄이다. - 장기간 특정 공격 대상에 지속적·효율적으로 적용한다. - 조직의 기밀 정보를 획득하기 위해 사용된다. |
Adware | - 소프트웨어에 통합된 광고, 팝업 또는 상업 사이트로의 강제적 경로 변경을 수행하는 프로그램이다. |
Attack Kit | - 다양한 Propagation과 Payload Mechanism을 통해 새로운 Malware를 자동으로 발생시키는 도구들을 통칭한다. |
Auto-Rooter | - 새로운 Machine을 원격으로 손상시키기 위해 사용하는 도구이다. |
Backdoor, Trapdoor | - Security Check 과정을 건너뛰게 하는 Mechanism이다. - 해당 프로그램 및 시스템의 기능에 인증 없이 접근할 수 있다. (Unauthorized Access) |
Downloaders | - 공격당하는 Machine에 다른 항목을 설치하는 코드이다. - 일반적으로, Malware 코드가 Compromised System에 우선적으로 삽입된 후, 대량의 Malware Package가 삽입된다. |
Drive-by-Download | - Browser의 취약점을 이용하여 Web Site를 Compromise하고, 공격 대상이 되는 Client가 이 Web Site를 열람하는 것을 노리는 공격이다. |
Exploits | - 하나 또는 다수의 취약점에 특화된 코드이다. (취약점 공격) |
Flooders (DoS Client) |
- 네트워크에 연결된 컴퓨터를 공격하기 위해 대량의 데이터를 발생시키기 위한 도구이다. - DoS 공격에 사용된다. |
Keyloggers | - 공격된 시스템으로부터 Keyboard 입력 정보를 수집하는 프로그램이다. |
Logic Bomb | - 공격자가 Malware에 삽입한 코드를 의미한다. - 특정 조건이 만족될 대까지 잠복되어 있다. - 조건이 만족되면 Logic Bomb이 Trigger되어 인증되지 않은 동작들을 수행한다. |
Macro Virus | - 문서에 포함된 Macro나 Scripting Code를 사용하는 바이러스 형태이다. - 문서를 열람하거나 편집할 때 자동으로 실행된다. |
Mobile Code | - Heterogeneous Platform에 변경없이 설치 및 실행될 수 있는 소프트웨어이다. |
Rootkit | - 공격자가 컴퓨터 시스템에 침입하어 Root-Level Access를 얻은 후 사용하는 공격 도구이다. |
Spammer Programs | - 대량의 스팸메일을 보내기 위한 도구이다. |
Spyware | - Keystroke, Screen Data, Network Traffic 등을 모니터링하여 얻은 정보를 다른 시스템에 전송하는 소프트웨어이다. |
Trojan Horse | - 공격 대상 시스템의 합법적 인증을 통과한 Malicious Function을 수행하는 프로그램이다. (Unexpected Functionality) |
Virus | - 자신을 다른 Executable Machine 혹은 Script에 Hook하는 Malware이다. (Passive Propagation) - 바이러스가 연결된 해당 Machine을 "Infected(감염되었다)"라 표현한다. - 이렇게 감염된 코드가 실행될 때, 바이러스도 같이 실행된다. - Boot Sector, Memory, Application, Macro, Library Routine, Compiler, Debugger, Virus Checker 등 다양한 곳에 위치할 수 있다. |
Worm | - 독립적으로 실행 가능하고, 공격 대상 시스템의 소프트웨어 취약점을 이용하여 네트워크상의 다른 서버에 Replicate 할 수 있는 프로그램이다. (Active Propagation) |
Zombie, Bot | - 다른 기계를 공격하도록 Infected된 Machine에서 활성화되는 프로그램이다. - 일반적으로, Infected된 Machine들은 그 사실을 알아채지 못한다. |
Botnet | - 다수의 Infected Machine들로 구성된 네트워크를 의미한다. |
Ransomware | - 공격 대상 시스템의 데이터들을 암호화하고 몸값을 요구하는 프로그램이다. |
Rabbit | - Fork Bomb - Process를 지속적으로 Replication하여 System Resource를 고갈시키는 프로그램이다. (DoS Attack) - Virus나 Worm의 형태로 구현된다. |
Malware Structure (멀웨어의 구조)
- Malware의 구조는 아래와 같다:
- Replication Mechanism (Infection Mechanism, Infection Vector)
- Victim(피해자; 목표)에 도달하는 것을 목표로 한다.
- Worm은 실행되면서 자신의 복사본을 생성하여 공격 대상 시스템을 붕괴시킨다.
- Trigger (Logic Bomb)
- Payload를 활성화 및 전달할 시점을 결정하는 Event나 Condition이다.
- Payload
- Victim에 도달하고 수행할 악성 동작이다.
- 중요 데이터를 탈취하거나,
데이터를 무단으로 암호화하고 몸값을 요구하고,
Traffic을 감시하거나,
다른 시스템을 공격하기 위해 소프트웨어를 무단으로 설치하고,
공격 대상을 무단으로 제어하기 위해 Rootkit을 설치하거나,
가상화폐를 대신 채굴하게 하는 등 바람직하지 않은 일을 공격 대상이 대신 수행하게 하는 것과 같은
모든 작업들을 일컫는다.
History of Malware (멀웨어의 역사)
- Advent of Virus (1972)
- Preliminary Work by Cohen (1984)
- Brain Virus (1986)
- Morris Worm(1988)
- Code Red Worm (2001)
- SQL Slammer Worm (2004)
- Trojan Horse ()
- Mirai Botnet (2016)
Advent of Virus (1972)
- Computer Virus의 개념이 최초로 등장했다.
Preliminary Work by Cohen (1984)
Brain Virus (1986)
- Boot Sector에 위치하여 부팅을 방해하고,
Disk Call을 Screen하여 탐지되는 것을 방지한다.
- 추후 만들어진 Virus들의 Prototype 역할을 했다.
- 별다른 피해를 입히지 않았다.
Morris Worm (1988)
- Unix System을 Target으로 한, 인터넷을 통해 Propagation된 최초의 Worm이다.
(Web Browser가 아닌, E-Mail, TELNET 수준의 네트워크)
- 코넬대학교의 Morris가 인터넷의 크기를 파악하기 위해 개발했으며,
악의적 의도는 없었다고 "주장"하고 있다.
- CERT(인터넷 보안기관)와 보안에 대한 인식을 강화시킨 계기가 되는 멀웨어이다.
- Morris Worm은 새로운 시스템에 침입할 때 마다,
해당 시스템에 Morris Worm이 구동중인지를 확인하도록 설계되어 있는데,
반복적인 검사로 인해 System Resource가 고갈되는 문제가 생긴다.
(Rabbit과 비슷한 양상을 보인다.)
- 모리스 웜의 동작 절차는 아래와 같다:
- 합법적 사용자로서 Victim에 접근한다.
- 사용자 계정에 대한 Dictionary Attack(Guessing),
fingerd(Finger Daemon)를 통한 Buffer Overflow 유발,
sendmail을 통한 Trapdoor 악용 등으로 합법적 접근 권한을 얻는다. - Bootstrap Loader를 Victim에게 전송한다.
- 이는 Malware의 나머지 코드를 불러오는 '선발대' 역할을 하는 프로그램이다. - Victim Machine이 Bootstrap Loader를 Compile하고 Execute한다.
- Bootstrap Loader가 Worm의 나머지 코드를 불러온다.
- Worm이 Victim Machine에서 실행된다. (Victim이 감염된다.)
- 모리스 웜이 Detection을 피하는 방법은 아래와 같다:
- Worm이 전송되던 도중에 Interrupt가 발생되면 모든 Worm Code를 삭제한다.
- 암호화된 Worm Code를 Victim Machine에 다운로드 하며, 복호화 후 Compile을 마치면 Worm Code를 삭제한다.
- Worm을 실행하면서 주기적으로 Name과 PID를 변경시킨다.
Code Red Worm (2001)
- Microsoft IIS Server의 Buffer Overflow 취약점을 이용하여 Victim의 시스템에 접근하고,
Port Number 80에서 다른 취약한 서버를 찾는다.
- 등장 초기 19일 동안에는 Propagation에 전념하고, 이후 8일 동안 백악관에 DDoS 공격을 행했다.
- 이후, 원격 제어가 가능하도록 Trapdoor를 포함시킨 형태의 Variant가 생겼다.
- Information Warfare의 시발점이 된 멀웨어이다.
SQL Slammer Worm (2004)
- Microsoft SQL Server의 Buffer Overflow 취약점을 악용한 멀웨어로, 가용 Bandwidth을 소진시키는 공격을 행했다.
- Warhol Worm의 한 종류이다.
- SQL Slammer Worm이 성공적으로 공격할 수 있었던 이유는 아래와 같다:
- Worm의 크기가 376 Bytes로, UDP Packet 하나의 크기에 적합하여 매우 빠르게 Propagation될 수 있었다.
- Worm Packet의 크기가 작아, Firewall이 탐지하기가 어려웠다.
- 일반적으로, 공격을 행하는 Packet의 크기는 비정상적으로 크기 때문에
크기가 작은 Packet은 악의적일 것이라 예상하지 못하기 때문이다. - 자체적으로 Random IP 주소를 생성할 수 있다.
* Warhol Worm
- 취약한 IP 주소들을 담고있는 Hit List를 가진 Seed Worm에 의해 System이 Infection되면,
그 이후 본격적으로 공격을 감행하는 방식의 Worm이다.
- 15분동안 인터넷 전체를 퍼져나가며 공격한 것으로 유명하다.
* Flash Worm
- Warhol Worm이 개선된 형태로, 15초동안 인터넷 전체를 퍼져나가며 공격한 것으로 유명하다.
- 알려진 취약한 IP 주소들을 Worm이 내장하고 있어, 크기가 크다.
- Worm이 Replicate되는 즉시 Split되며, 이론적으로 이 과정에서 시간과 대역폭을 소모하지 않는다.
- Flash Worm에 대해서는 Conjectured Defense(추측성 방어)를 하는데,
많은 Personal IDS를 운영하는 Master IDS가 있고,
어느 Personal IDS에서 Anomaly가 발생되면 해당 Node를 Block 시키는 방식이다.
Mirai Botnet (2016)
Botnet (봇넷)
- 다수의 Infected Machine들로 구성된 네트워크를 의미한다.
Uses of Bots (봇의 용도)
- Bot이 사용되는 형태는 아래와 같다.
- DDoS Attacks
- Spamming
- Sniffing Traffic
- Keylogging
- Spreading New Malware
- Installing Advertisement Add-Ons and Browser Helper Objects (BHOs)
- Attacking IRC Chat Networks
- Manipulating Online Polls/Games
Botnet C&C Protocol (Botnet Command and Control Protocol)
- Botnet에 명령을 내리고 제어하는 프로토콜로, 아래와 같은 종류가 있다.
- Telnet Botnet
- Bot이 Botnet을 호스팅 - IRC
- IRC Network는 단순하고 낮은 대역폭으로 통신하여 Botnet을 호스팅하는데 유용하다.
- P2P
Botnet Examples
- Mirai
- 3ve
- Emotet
- Srizbi
- Methbot
Virus Detection Method (Antivirus Software; 바이러스에 대한 대비책)
* Signature: 해당 소프트웨어의 특징
- 본 섹션에서 Signature의 의미는 '서명'이 아닌, '특징'으로 해석되어야 한다.
- 멀웨어는 Scanners에 의해 감지되며, 이를 달리 표현하면 Antivirus Software라 한다.
- Scanners는 IoC (Indicator of Compromise; 공격의 흔적)를 찾아내는 것을 목표로 하는 Antivirus Software이다.
- Malware Detection Method의 변천과정은 아래와 같다:
- Signature Detection (Simple Scanners)
- Change Detection (Heuristic Scanners)
- Anomaly Detection (Activity Traps)
- Full-Featured Protection
1. Signature Detection (Simple Scanners) |
|
Description | - Malware의 유출된 Signature를 통해 해당 Malware의 공격여부를 탐지하는 방식이다. - 가장 널리 사용되는 Detection Method이다. |
Advantages | - Traditional Malware를 효과적으로 탐지할 수 있다. - User와 Administrator의 System에 가해지는 부담이 적다. |
Disadvantages | - 알려지지 않은 Malware는 탐지할 수 없다. - Signature File의 큰 크기로 인해 Scan 속도가 느리다. |
2. Change Detection (Heuristic Scanners) |
|
Description | - 각 프로그램마다 Checksum 값(Hash 값)을 계산해두고, Checksum 값의 변화를 추적하는 방식이다. - 만약 프로그램의 수정이 없었는데도 Checksum 값이 변경되었음이 감지되었다면, 이는 Malware에 의해 공격받았다 간주한다. |
Advantages | - 변화를 무조건 감지할 수 있기 때문에 False Negative가 없다. (감염되었는데, 감염되지 않았다 판정하는 경우가 없다.) - 알려지지 않은 Malware도 탐지할 수 있다. |
Disadvantages | - 변화만을 통해 감염여부를 판단하기 때문에, False Positive가 높다. (False Alarms가 잦다.) - User와 Administrator의 System에 가해지는 부담이 크다. - Signature-Based System과 함께 사용되어야 한다. |
3. Anomaly Detection (Activity Traps) |
|
Description | - 감염된 프로그램의 구조보다는 미리 정의해농은 "악의적 행동"에 집중하여 Malware를 탐지한다. - Memory-Resident Program이다. - IDS(Intrusion Detection System; 침입 탐지 시스템)로도 인기있는 Method이다. - AI 기술로 활발한 연구가 진행되고 있다. |
Advantages | - 알려지지 않은 Malware도 탐지할 수 있다. |
Disadvantages | - 사용성이 입증되지 않았다. (낮은 신뢰도) - 공격자가 Anomaly Activity를 Normal로 보이게 위장할 수 있는 여지가 있다. - Normal Behaviour를 정의하는데 높은 비용이 든다. - 다른 Detection Method들과 함께 사용되어야 한다. |
4. Full-Featured Protection | |
Description | - Scan, Trap, Access Control 등 다양한 Anti-Virus 기술로 이루어진 Package이다. |
Malware Mechanism (멀웨어의 메커니즘)
- 해커(공격자)들은 Antivirus Software에 대응하기 위해 아래와 같은 메커니즘들을 이용한다.
Encrypted Malware (암호화 바이러스) |
- 공격자들이 Scanners에 감지되지 않는 Malware를 만들기 위해 암호화 한 Malware를 의미한다. - Malware를 암호화할 경우, Scanner의 Signature List에 탐지되지 않게 된다. - Encrypted Malware는 내부에 Decryptor Code를 내장하고 있는데, 보안 전문가들은 Malware 내부에 이 Decryptor Code를 찾는 것을 목표로 한다. |
Polymorphic Virus (다형성 바이러스) |
- Payload는 Encryption하고, Decryptor Code는 Morphing하여 Scanner의 탐지를 피하는 Malware이다. (Scanner가 발견하기 어렵게 암호화 형태를 지속적으로 바꾼다. (=Morphing)) - Encryption은 XOR의 반복으로 구현하여 비교적 암호화 강도가 약한 편이다. - 기능적으로는 동일하지만, 다른 Bit Pattern을 보이는 사본을 생성하는 Malware이다. - 복사본마다 Signature를 다르게 유지하기 위해, 불필요한 명령을 삽입하거나, 명령어들의 순서를 치환하거나, 프로그램 코드를 암호화한다. (코드를 변형하기 이전으로 되돌리는 역함수가 존재한다.) - Propagate할 때 마다 Encryption Key를 새로 생성한다. - Decryptor Code의 Sequence를 바꾸면서 Scanner의 탐지를 피하기도 한다. - Signature-Based Method로 Detection이 가능하다. |
Metamorphic Virus (변성 바이러스) |
- Malware를 Disassembled하여 Random Variation(Rearrange Jumps, Dead Code, etc)을 추가하여 Asssemble하는 등 Code를 재작성하여 Scanner의 탐지를 피하는 Malware이다. - 시스템을 감염시키기 이전에 스스로를 Mutate(Rewrite)한다. - 코드를 변형하기 이전으로 되돌릴 수 없다. - Polymorphic Malware와 마찬가지로 동일한 기능을 수행하지만, Mutation마다 Signature가 다르다. (경우에 따라, 스스로 기능을 변경하기도 한다.) - Signature-Based Detection Method를 회피할 수 있다. |
Reference: Information Security: Principles and Practice 2nd Edition
(Mark Stamp 저, Pearson, 2011)
Reference: Computer Security: Principles and Practice 3rd Edition
(William Stallings, Lawrie Brown, Pearson, 2014)
Reference: 2022학년도 1학기 홍익대학교 네트워크 보안 강의, 이윤규 교수님