본문 바로가기
  • 시 쓰는 개발자
CS 개념/컴퓨터 보안

컴퓨터 보안 (5) - Malware

by poetDeveloper 2024. 4. 25.

시험공부하며 러프하게 정리한 내용이니, 가볍게 참고만 하시길

 

Malware

 

* 바이러스, 웜, 트로이목마, 루트킷

- 전파 : 퍼뜨리는게 목표 (바이러스, 웜)

- 은폐 : 자신의 존재를 숨김 (트로이목마, 루트킷)

 

* payload : 소프트웨어로 피해를 주는 모든 행위

 

* Insider Attacks : 회사 내부 사람이 공격하는 것

 

* Insider Attacks 방어하는 방법

- 단일 실패지점은 피하기

- 코드 워크스루 사용 (코드 작성한 프로그래머가 다른 프로그래머에게 발표하는 것)

- 권한 제한하기

- 물리적 보호 강화

- 직원 행동 감시

- 소프트웨어 설치 제어

 

* Backdoor = trapdoor : 특수 커맨드로 예외적인 기능 수행. 평소에는 기능 숨겨놓고 허용 안함.

ex) 이스터 에그

 

* Logic Bombs : 특정 날짜에 프로그램 충돌시키도록 설정함. 백도어와 결합해서 사용 가능

ex) 특정 날짜에 가상의 사용자가 모든 파일을 삭제하도록 설정함.


Virus

 

* Virus

- 자기 복제 특성이 있지만, 이메일, 파일 열어보기 등으로 누군가 처음엔 실행시켜야함.

- Brain 이라는 바이러스가 최초로 PC를 감염시킴

 

* Virus의 4가지 phase (파일이 계속 여기저기 사용되면서 복잡하게 감염시킬 수 있음)

- Dormant 잠복단계 : 탐지를 피하면서 잠복해있음

- Propagation 전파단계 : 복제하며 파일 감염시킴

- Triggering 트리거링단계 : 이제부터 의도한 작업을 시작함

- Action 실행단계 : payload라는 악성 작업을 수행함

 

* Infection의 4가지 타입

- Overwriting 덮어쓰기

- Pre-pending 미리 보류하기?? : 압축된 코드 상태를 유지함

- Infection of library 라이브러리 감염 : 바이러스가 MM에 상주하게 만듦

- Macro virus : 새로운 파일을 만들면 그 파일이 감염되도록 매크로 설정

 

* Concealment 바이러스가 은폐하는 방법

- Encrypted virus 암호화된 바이러스 : 복호화 엔진 + 암호화 된 본문, 암호화 키는 무작위 생성

- Polymrphic virus 다형성 바이러스   : 복호화 엔진의 무작위 변형을 사용하는 암호화된 바이러스. CPU 에뮬레이터를 사용한 탐지

- Metamorphic virus 변종 바이러스   : 코드 순열이나 명령어 대체등이 접근에 포함되고, 탐지가 어려움


Worm, Trojan, Rootkit

 

* Worm : 스스로 복제함. 파일삭제, 백도어 설치 같은 payload 가지고 있음.

- 최초의 웜 : Morris 웜

 

*  Worm 개발

- 알려지지 않은 취약점 찾고 악용하기

- botnet에 초기 배포

- 각 host들에 대해서 감염 여부 체크 → 취약한지 확인 → 감염시키기 → 반복 ...

- 분산 그래프 알고리즘 이용

 

* 트로이 목마 : 유용한 작업 하는 것처럼 보이지만 키로거 등 부정적인 결과를 초래함.

- 다른 멀웨어의 일부로 사용될 수 있음.

- 사용자가 실수로 설치하는 경우가 많음

- 현재 멀웨어중 가장 감염성이 크다. (트로이-웜-바이러스-백도어 순서)

 

* Rootkit : OS 수정해서 자신의 존재를 숨김.

- 파일 시스템 탐색하는 부분을 수정해서 안보이게 할 수도 있음.

- OS 자체에 의존하는 SW는 탐지하기 어려움

 

* Rootkit Revealer 루트킷 찾는 방법

- 파일 시스템 2번 스캔하기

- Windows API 이용한 하이레벨 스캔

- Disk Access 이용한 원시레벨 스캔

+) 그러나 루트킷이 결과 가로채고 수정하여 무력화될 수 있음.


* 멀웨어 좀비 : 악의적인 공격 수행하도록 외부에서 조종당하는 컴퓨터

 

* Botnet : 악성 소프트웨어에 감염되어 소유자 허가 없이(혹은 소유자 모르게) 집단으로 제어되는 "컴퓨터 네트워크"이다. 봇넷 코디네이터는 봇넷을 사용해 DDoS 공격을 개시하고 데이터를 도용하며 멀웨어를 유포할 수 있습니다.


Malware 대응책들

 

* Signature 서명

- DB에 특정 문자열을 저장해놓음. 바이러스가 이 문자열을 가지고 있는지 체크함. 있다면 감염된 것.

- 그래서 빠른 문자열 패턴 매칭 기술이 필요함.

- 모든 서명을 합쳐서 멀웨어 DB를 만들어서 대응, 보통 유료 백신프로그램

 

* 화이트/블랙 리스트

- 감염된 파일은 블랙리스트에 넣음.

- OS, 정상 application은 화이트리스트

 

* Heuristic 분석 : 불충분한 정보나 부족한 시간에 명확한 실마리 없이 쓰는 어림 짐작법

- Zero Day 식별에 유용함 : 보안패치가 아직 안된 Zero day에 취약점을 공격하는 것.

- 실행 Emulation : 격리된 환경에서 실행하고 수행하는 작업 모니터링. 에뮬레이션은 HW까지 조작함. 지켜보다가 유해한 행동 하면 바이러스로 분류

 

* Shield vs On-demand

- Shield : 파일 건드릴 때마다 스캔하는 백그라운드 프로세스

- On-demand : 사용자의 요구에 의해 or 정기적으로 스캔

 

* 스캔

- Comparative : 이미 발견된 멀웨어들이랑 비교

- Retrospective : 알려지지 않은 바이러스에 대한 사전 탐지 & 더 나은 휴리스틱 확인

 

* 백신 프로그램 온라인 vs 오프라인

  온라인 (인터넷) 오프라인
무료 유료
인증 타사 인증서로 인증 OS에 설치하기 때문에 인증 없음
쉴드 쉴드 없음 시스템 쉴드
설정 poor한 설정 쉽게 설정 가능

 

* Quarantine 격리(검역소 역할) : 의심스러운 파일을 검역소로 보내서 격리된 환경에서 따로 실행해서 확인해봄

- 의심스러운 파일을 암호화 해서 무해하게 만듦.

- 오탐지일 수도 있으니 아직 삭제는 안함.

- 백신을 이용해서 격리된 파일과 소통함.

 

*  static 분석 vs Dynamic 분석

- static : 코드 실행 없이 분석

- dynamic : 가상 공간에서 실행함. 파일, 레지스트리, 프로세스, 네트워크 포트 등이 변경됐는지 체크함

 

* Virus Detection

- 실행 전에는 바이러스가 있다고 결정 불가능. Runtime에 실행되는 감염코드가 있을 수도 있으므로.

- 외적으로, 행동으로만 바이러스라고 결정 불가능

- 알려진 바이러스라고 해서 꼭 아닌 것도 아님. 진화된 바이러스일 수도 있음