악성 소프트웨어

**악성 소프트웨어**, **유해한 소프트웨어** 또는 **맬웨어**()는 컴퓨터, 서버, 클라이언트, 또는 컴퓨터 네트워크에 혼란을 야기하거나, 사적인 정보를 유출하거나, 정보나 시스템에 무단으로 접근하거나, 정보에 대한 접근을 박탈하거나, 사용자에게 알리지 않고 사용자의 컴퓨터 보안 및 프라이버시를 방해하도록 의도적으로 설계된 모든 소프트웨어를 말한다. 연구자들은 악성 소프트웨어를 하나 이상의 하위 유형(예: 컴퓨터 바이러스, 웜, 트로이 목마, 논리 폭탄, 랜섬웨어, 스파이웨어, 애드웨어, 악성 소프트웨어, 와이퍼 및 키로거)으로 분류하는 경향이 있다.

악성 소프트웨어는 인터넷의 개인과 기업에 심각한 문제를 야기한다. 시만텍의 2018년 인터넷 보안 위협 보고서(ISTR)에 따르면, 2017년 악성 소프트웨어 변종의 수는 669,947,865개로, 2016년보다 두 배나 증가했다. 악성 소프트웨어 공격 및 컴퓨터로 저질러지는 다른 범죄를 포함하는 사이버 범죄는 2021년에 세계 경제에 6조 미국 달러의 비용을 초래할 것으로 예측되었고, 매년 15%의 속도로 증가하고 있다. 2021년부터 악성 소프트웨어는 전력 배전 네트워크와 같은 중요 인프라를 운영하는 컴퓨터 시스템을 목표로 설계되었다.

악성 소프트웨어에 대한 방어 전략은 악성 소프트웨어의 유형에 따라 다르지만, 대부분은 바이러스 백신 소프트웨어 설치, 방화벽, 정기적인 패치 적용, 침입으로부터 네트워크 보안, 정기적인 백업, 감염된 시스템 격리를 통해 저지할 수 있다. 악성 소프트웨어는 바이러스 백신 소프트웨어 탐지 알고리즘을 회피하도록 설계될 수 있다.

## 역사

자가 복제 컴퓨터 프로그램의 개념은 복잡한 오토마타의 작동에 대한 초기 이론으로 거슬러 올라간다. 존 폰 노이만은 이론적으로 프로그램이 스스로를 복제할 수 있음을 보여주었다. 이는 계산 가능성 이론에서 타당성을 입증하는 결과였다. 프레드 코헨은 컴퓨터 바이러스로 실험하여 노이만의 가설을 확인하고, 초보적인 암호화를 사용하여 탐지 가능성 및 자가 난독화와 같은 악성 소프트웨어의 다른 속성을 조사했다. 그의 1987년 박사 학위 논문은 컴퓨터 바이러스에 관한 것이었다. 바이러스의 페이로드의 일부로 암호화 기술을 결합하여 공격 목적으로 활용하는 것은 1990년대 중반부터 시작되어 연구되었으며, 초기 랜섬웨어 및 회피 아이디어를 포함한다.

인터넷 접속이 널리 보급되기 전에는 실행 가능한 프로그램이나 플로피 디스크의 부트 섹터를 감염시켜 개인용 컴퓨터에 바이러스가 확산되었다. 바이러스는 이러한 프로그램이나 부트 섹터의 기계어 명령에 자신을 복사함으로써 프로그램이 실행되거나 디스크가 부팅될 때마다 실행되도록 한다. 초기 컴퓨터 바이러스는 애플 II와 Mac을 위해 작성되었지만, IBM PC와 MS-DOS의 지배로 인해 더욱 널리 확산되었다. 최초의 IBM PC 바이러스는 1986년 파키스탄의 파루크 알비 형제가 만든 (c)Brain이라는 부트 섹터 바이러스였다. 악성 소프트웨어 배포자들은 사용자가 감염된 장치나 매체에서 부팅하거나 실행하도록 속인다. 예를 들어, 바이러스는 감염된 컴퓨터가 플러그인된 모든 USB 스틱에 자동 실행 코드를 추가하도록 만들 수 있다. USB에서 자동 실행하도록 설정된 다른 컴퓨터에 스틱을 연결하는 사람은 감염되어 같은 방식으로 감염을 전파한다.

오래된 이메일 소프트웨어는 잠재적으로 악의적인 자바스크립트 코드가 포함된 HTML 이메일을 자동으로 열었다. 사용자들은 위장된 악의적인 이메일 첨부 파일을 실행할 수도 있다. CSO Online이 인용한 Verizon의 2018년 데이터 침해 조사 보고서에 따르면, 이메일은 전 세계 악성 소프트웨어 배포의 96%를 차지하는 주요 악성 소프트웨어 배포 방법이다.

최초의 웜인 네트워크 기반 감염 프로그램은 개인용 컴퓨터가 아닌 다중 작업 유닉스 시스템에서 시작되었다. 최초로 잘 알려진 웜은 1988년의 모리스 웜으로, 썬OS 및 VAX BSD 시스템을 감염시켰다. 바이러스와 달리 이 웜은 자신을 다른 프로그램에 삽입하지 않았다. 대신 네트워크 서버 프로그램의 보안 취약점(취약점)을 악용하여 별도의 프로세스로 실행되기 시작했다. 이러한 동일한 동작은 오늘날의 웜에서도 사용된다.

1990년대 마이크로소프트 윈도우 플랫폼의 부상과 그 응용 프로그램의 유연한 매크로 덕분에 마이크로소프트 워드 및 유사 프로그램의 매크로 언어로 감염 코드를 작성하는 것이 가능해졌다. 이러한 매크로 바이러스는 응용 프로그램(실행 파일)이 아닌 문서 및 템플릿을 감염시키지만, 워드 문서의 매크로가 실행 파일 코드의 한 형태라는 사실에 의존한다.

모리스 웜을 포함한 많은 초기 감염 프로그램은 실험이나 장난으로 작성되었다. 오늘날 악성 소프트웨어는 블랙햇 해커와 정부 모두가 개인, 금융 또는 비즈니스 정보를 훔치는 데 사용된다. 오늘날 USB 포트에 연결되는 모든 장치(심지어 조명, 선풍기, 스피커, 장난감 또는 디지털 현미경과 같은 주변 장치)도 악성 소프트웨어를 확산하는 데 사용될 수 있다. 품질 관리가 불충분할 경우 제조 또는 공급 중에 장치가 감염될 수 있다.

## 목적
광범위한 광대역 인터넷 접속이 확산된 이후, 악의적인 소프트웨어는 이윤을 목적으로 더 자주 설계되어 왔다. 2003년 이후, 널리 퍼진 대부분의 바이러스와 웜은 불법적인 목적으로 사용자 컴퓨터를 제어하도록 설계되었다. 감염된 "좀비 컴퓨터"는 스팸 메일을 보내거나, 아동 포르노와 같은 불법 데이터를 호스팅하거나, 분산 서비스 거부 공격에 참여하여 공갈의 한 형태가 될 수 있다. 악성 소프트웨어는 민감한 정보를 수집하거나 전반적인 운영을 방해하기 위해 정부 또는 기업 웹사이트에 널리 사용된다. 또한 악성 소프트웨어는 개인에게 사용되어 개인 식별 번호나 세부 정보, 은행 또는 신용 카드 번호, 비밀번호와 같은 정보를 얻을 수 있다.

범죄 목적의 금전 탈취 외에도, 악성 소프트웨어는 종종 정치적 동기로 사보타주를 위해 사용될 수 있다. 예를 들어 스턱스넷은 특정 산업 장비를 교란하도록 설계되었다. 대규모 파일 삭제 및 마스터 부트 레코드 손상을 포함하여 대규모 컴퓨터 네트워크를 확산시키고 차단하는 정치적 동기의 공격이 있었으며, 이는 "컴퓨터 킬링"으로 묘사되었다. 이러한 공격은 소니 픽처스 엔터테인먼트(2014년 11월 25일, 샤문 또는 W32.Disttrack으로 알려진 악성 소프트웨어 사용) 및 사우디 아람코(2012년 8월)에 가해졌다.

## 종류
악성 소프트웨어는 다양한 방식으로 분류될 수 있으며, 특정 악의적인 프로그램은 동시에 두 가지 이상의 범주에 속할 수 있다. 크게 소프트웨어는 세 가지 유형으로 분류될 수 있다: (i) 굿웨어; (ii) 그레이웨어 및 (iii) 악성 소프트웨어.

### 악성 소프트웨어

#### 바이러스

섬네일|MS-DOS "Kuku" 바이러스의 출력
컴퓨터 바이러스는 일반적으로 다른 겉보기에는 무해한 프로그램 안에 숨겨져 있으며, 스스로 복제하여 다른 프로그램이나 파일에 삽입할 수 있고, 일반적으로 유해한 행동(예: 데이터 파괴)을 수행하는 소프트웨어이다. 이것들은 생물학적 바이러스에 비유되기도 한다. 예를 들어, 이식형 실행 감염은 일반적으로 악성 소프트웨어를 확산하는 데 사용되는 기술로, PE 파일에 추가 데이터나 실행 코드를 삽입한다. 컴퓨터 바이러스는 사용자의 지식이나 동의 없이 대상 시스템의 다른 실행 가능 소프트웨어(운영 체제 자체 포함)에 자신을 삽입하고, 실행될 때 다른 실행 파일로 확산되는 소프트웨어이다.

#### 웜
[섬네일|[블래스터 (컴퓨터 웜)|블래스터 웜의 헥스 덤프, 웜 프로그래머가 마이크로소프트 공동 설립자 빌 게이츠에게 남긴 메시지를 보여준다.]]
웜은 네트워크를 통해 다른 컴퓨터를 감염시키기 위해  전송되고 파일을 감염시키지 않고 스스로 복사할 수 있는 독립형 악성 소프트웨어이다. 이러한 정의는 바이러스가 확산되기 위해 사용자가 감염된 소프트웨어 또는 운영 체제를 실행해야 하는 반면, 웜은 스스로 확산된다는 관찰로 이어진다.

#### 루트킷

악의적인 소프트웨어가 시스템에 설치되면, 탐지를 피하기 위해 숨겨져 있는 것이 필수적이다. 루트킷이라고 알려진 소프트웨어 패키지는 호스트의 운영 체제를 수정하여 악성 소프트웨어가 사용자에게 숨겨지도록 함으로써 이러한 은폐를 가능하게 한다. 루트킷은 해로운 프로세스가 시스템의 프로세스 목록에 표시되지 않도록 하거나 파일이 읽히지 않도록 할 수 있다.

일부 유형의 해로운 소프트웨어는 단순히 자신을 숨기는 것을 넘어 식별 또는 제거 시도를 회피하는 루틴을 포함한다. 이러한 동작의 초기 사례는 제록스 CP-V 시분할 시스템을 감염시킨 두 프로그램에 대한 자곤 파일 이야기에 기록되어 있다:

#### 백도어

백도어는 공격자가 피해자의 컴퓨터에 종종 피해자의 인지 없이 지속적인 무단 원격 액세스를 허용하는 컴퓨터 프로그램을 지칭하는 포괄적인 용어이다. 공격자는 일반적으로 인터넷과 같은 보안되지 않은 네트워크를 통해 트로이 목마, 웜 또는 바이러스와 같은 다른 공격을 사용하여 인증 메커니즘을 우회하고 백도어 애플리케이션을 설치한다. 백도어는 또한 합법적인 소프트웨어의 소프트웨어 버그의 부작용일 수도 있으며, 공격자가 이를 악용하여 피해자의 컴퓨터 또는 네트워크에 액세스할 수 있다.

컴퓨터 제조업체가 고객을 위한 기술 지원을 제공하기 위해 시스템에 백도어를 미리 설치한다는 아이디어가 종종 제기되었지만, 이는 신뢰할 수 있게 검증된 적이 없다. 2014년에는 미국 정부 기관이 "표적"으로 간주되는 사람들이 구매한 컴퓨터를 비밀 워크샵으로 보내 원격 액세스를 허용하는 소프트웨어 또는 하드웨어가 설치되었으며, 이는 전 세계 네트워크에 액세스하기 위한 가장 생산적인 작업 중 하나로 간주되었다는 보고가 있었다. 백도어는 트로이 목마, 웜, 임플란트 또는 기타 방법을 통해 설치될 수 있다.

#### 트로이 목마
트로이 목마는 자신을 평범하고 무해한 프로그램이나 유틸리티인 것처럼 위장하여 피해자가 설치하도록 설득한다. 트로이 목마는 일반적으로 응용 프로그램이 시작될 때 활성화되는 숨겨진 파괴적인 기능을 가지고 있다. 이 용어는 고대 그리스 도시 트로이를 몰래 침략하기 위해 사용된 트로이 목마 이야기에서 유래했다.

트로이 목마는 일반적으로 사회 공학의 한 형태로 확산된다. 예를 들어, 사용자가 무심한 이메일 첨부 파일(예: 작성해야 할 일반 양식)을 실행하도록 속이거나, 드라이브 바이 다운로드를 통해 확산된다. 페이로드는 무엇이든 될 수 있지만, 많은 현대적인 형태는 백도어 역할을 하여 컨트롤러와 통신(콜 홈)하여 영향을 받는 컴퓨터에 무단 액세스할 수 있으며, 잠재적으로 기밀 정보를 훔치기 위한 키로거, 암호화 채굴 소프트웨어 또는 트로이 목마 운영자에게 수익을 창출하기 위한 애드웨어와 같은 추가 소프트웨어를 설치할 수 있다. 트로이 목마와 백도어는 그 자체로는 쉽게 탐지되지 않지만, 암호화 채굴 소프트웨어가 설치될 때처럼 과도한 프로세서 또는 네트워크 사용으로 인해 컴퓨터가 더 느리게 실행되거나 더 많은 열이나 팬 소음을 방출할 수 있다. 암호화 채굴기는 탐지를 피하기 위해 리소스 사용을 제한하거나 유휴 시간 동안만 실행될 수 있다.

컴퓨터 바이러스나 웜과 달리 트로이 목마는 일반적으로 다른 파일에 자신을 삽입하거나 다른 방식으로 스스로를 전파하려고 시도하지 않는다.

2017년 봄, 맥 사용자들은 브라우저 자동 완성 데이터, 맥OS 키체인, 비밀번호 저장소 등 다양한 출처에서 비밀번호 데이터를 추출하도록 훈련된 새로운 버전의 프로톤 원격 액세스 트로이 목마(RAT)에 감염되었다.

#### 드로퍼

드로퍼는 감염된 시스템에 악성 소프트웨어를 전달하는 것을 유일한 목표로 하는 트로이 목마의 하위 유형으로, 은밀성과 가벼운 페이로드를 통해 탐지를 회피하려는 목적을 가지고 있다. 드로퍼를 로더나 스테이저와 혼동하지 않는 것이 중요하다. 로더나 스테이저는 악성 소프트웨어의 확장(예: 반사적 동적 링크 라이브러리 삽입을 통한 악성 기능 모음)을 메모리로 로드할 뿐이다. 그 목적은 초기 단계를 가볍고 탐지 불가능하게 유지하는 것이다. 드로퍼는 시스템에 추가 악성 소프트웨어를 다운로드할 뿐이다.

#### 랜섬웨어

랜섬웨어는 사용자에게 대가를 지불할 때까지 파일에 접근하지 못하도록 막는다. 랜섬웨어에는 암호화 랜섬웨어와 잠금 랜섬웨어의 두 가지 변종이 있다. 잠금 랜섬웨어는 컴퓨터 시스템의 내용을 암호화하지 않고 단순히 잠글 뿐인 반면, 암호화 랜섬웨어는 시스템을 잠그고 내용을 암호화한다. 예를 들어, 크립토락커와 같은 프로그램은 파일을 안전하게 암호화하고 상당한 금액을 지불해야만 파일을 해독한다.

록스크린 또는 스크린 록커는 불법 콘텐츠 수집에 대한 허위 고발로 윈도우 또는 안드로이드 장치의 화면을 차단하고 피해자에게 수수료를 지불하도록 협박하려는 일종의 "사이버 경찰" 랜섬웨어이다.
지수트와 슬록커는 다른 록스크린보다 안드로이드 장치에 더 많은 영향을 미치며, 지수트는 모든 안드로이드 랜섬웨어 탐지의 거의 60%를 차지한다.

이름에서 알 수 있듯이 암호화 기반 랜섬웨어는 감염된 시스템의 모든 파일을 암호화하는 랜섬웨어 유형이다. 이러한 유형의 악성 소프트웨어는 사용자에게 파일이 암호화되었으며 파일을 복구하려면 (일반적으로 비트코인으로) 비용을 지불해야 함을 알리는 팝업을 표시한다. 암호화 기반 랜섬웨어의 몇 가지 예로는 크립토락커와 워너크라이가 있다.

마이크로소프트 디지털 범죄 부서에 따르면 2025년 5월, 비밀번호, 신용카드, 은행 계좌, 암호화폐 지갑을 훔치는 Lumma Stealer("Lumma")는 수백 명의 사이버 위협 행위자들이 가장 선호하는 정보 탈취 악성 소프트웨어이며, 범죄자들이 은행 계좌를 비우고, 학교를 인질로 잡고, 중요 서비스를 방해할 수 있도록 한다.

#### 클릭 사기
일부 악성 소프트웨어는 클릭 사기를 통해 돈을 벌기 위해 사용된다. 컴퓨터 사용자가 사이트의 광고 링크를 클릭한 것처럼 보이게 하여 광고주로부터 지불금을 받는다. 2012년에는 모든 활성 악성 소프트웨어의 약 60~70%가 어떤 종류의 클릭 사기를 사용했고, 모든 광고 클릭의 22%가 사기였다고 추정되었다.

### 그레이웨어

그레이웨어는 컴퓨터 성능을 저하시키고 보안 위험을 초래할 수 있지만, 악성 소프트웨어로 분류하기에는 합의나 데이터가 불충분한 모든 원치 않는 응용 프로그램이나 파일이다. 일반적으로 그레이웨어 유형에는 스파이웨어, 애드웨어, 사기성 다이얼러, 농담 프로그램("조크웨어"), 원격 액세스 도구가 포함된다. 예를 들어, 한때 소니 BMG 컴팩트 디스크는 불법 복사를 방지하기 위해 구매자의 컴퓨터에 루트킷을 조용히 설치했다.

#### 잠재적 유해 프로그램
잠재적 유해 프로그램 (PUP)은 사용자가 의도적으로 다운로드하는 경우가 많음에도 불구하고 원치 않는 것으로 간주될 수 있는 응용 프로그램이다. PUP에는 스파이웨어, 애드웨어, 사기성 다이얼러가 포함된다.

많은 보안 제품은 무단 키 생성기를 PUP로 분류하지만, 이들은 종종 명시된 목적 외에 실제 악성 소프트웨어를 포함하기도 한다. 실제로, Kammerstetter 외(2012)는 키 생성기의 55%가 악성 소프트웨어를 포함할 수 있으며, 약 36%의 악성 키 생성기가 바이러스 백신 소프트웨어에 의해 탐지되지 않았다고 추정했다.

#### 애드웨어
일부 유형의 애드웨어는 안티맬웨어 및 바이러스 보호 기능을 끄는데, 기술적인 해결책이 가능하다.

#### 스파이웨어
사용자의 웹 브라우징을 모니터링하고, 원치 않는 광고를 표시하거나, 제휴 마케팅 수익을 리디렉션하도록 설계된 프로그램을 스파이웨어라고 한다. 스파이웨어 프로그램은 바이러스처럼 확산되지 않는다. 대신 보안 취약점을 악용하여 일반적으로 설치된다. 또한 관련 없는 사용자 설치 소프트웨어와 함께 숨겨져 패키지될 수도 있다. 소니 BMG 루트킷은 불법 복사를 방지하기 위한 것이었지만, 사용자의 청취 습관을 보고하고 의도치 않게 추가적인 보안 취약점을 만들었다.

## 탐지
바이러스 백신 소프트웨어는 일반적으로 악성 소프트웨어를 탐지하기 위해 두 가지 기술을 사용한다: (i) 정적 분석 및 (ii) 동적/휴리스틱 분석. 정적 분석은 잠재적으로 악의적인 프로그램의 소프트웨어 코드를 연구하고 해당 프로그램의 시그니처를 생성하는 것을 포함한다. 이 정보는 바이러스 백신 프로그램이 스캔한 파일을 비교하는 데 사용된다. 이 접근 방식은 아직 연구되지 않은 악성 소프트웨어에는 유용하지 않으므로, 바이러스 백신 소프트웨어는 동적 분석을 사용하여 컴퓨터에서 프로그램이 어떻게 실행되는지 모니터링하고 예상치 못한 활동을 수행하면 차단할 수 있다.

모든 악성 소프트웨어의 목표는 사용자나 바이러스 백신 소프트웨어로부터 자신을 숨기는 것이다. 잠재적인 악성 소프트웨어를 탐지하는 것은 두 가지 이유로 어렵다. 첫째, 소프트웨어가 악의적인지 판단하기 어렵다. 둘째, 악성 소프트웨어는 탐지를 더 어렵게 만들기 위해 기술적인 조치를 사용한다. 악성 소프트웨어의 약 33%는 바이러스 백신 소프트웨어에 의해 탐지되지 않는 것으로 추정된다.

가장 일반적으로 사용되는 탐지 회피 기술은 시그니처 인식 방지를 위해 악성 소프트웨어 페이로드를 암호화하는 것이다. 암호화기는 암호화된 악의적인 코드 덩어리와 해독 스텁을 제공한다. 스텁은 덩어리를 해독하여 메모리로 로드한다. 바이러스 백신은 일반적으로 메모리를 스캔하지 않고 드라이브의 파일만 스캔하므로, 이를 통해 악성 소프트웨어는 탐지를 회피할 수 있다. 고급 악성 소프트웨어는 시그니처의 차이로 인해 탐지될 가능성을 낮추기 위해 자신을 다른 변종으로 변환할 수 있는 능력을 가지고 있다. 이를 다형성 악성 소프트웨어라고 한다. 탐지를 회피하기 위해 사용되는 다른 일반적인 기술은 일반적인 것부터 드문 것까지 다음과 같다: (1) 실행 시 환경을 핑거프린팅하여 분석 및 탐지 회피; (2) 자동화된 도구의 탐지 방법 혼란. 이를 통해 악성 소프트웨어는 악성 소프트웨어가 사용하는 서버를 변경하여 시그니처 기반 바이러스 백신 소프트웨어와 같은 기술에 의한 탐지를 피할 수 있다. (3) 시간 기반 회피. 이는 악성 소프트웨어가 특정 시간이나 사용자가 취한 특정 조치에 따라 실행되어, 부팅 과정과 같은 특정 취약한 기간 동안 실행되고 나머지 시간 동안은 휴면 상태를 유지하는 것이다. (4) 자동화된 도구가 악성 소프트웨어를 탐지하지 못하도록 내부 데이터를 난독화; (v) 정보 은닉 기술, 즉 스테고웨어; (5) 파일리스 악성 소프트웨어는 파일을 사용하지 않고 메모리 내에서 실행되며 기존 시스템 도구를 활용하여 악의적인 행위를 수행한다. 악의적인 활동을 수행하기 위해 기존 바이너리를 사용하는 기술은 LotL, 즉 Living off the Land로 알려져 있다. 이는 분석에 사용할 수 있는 포렌식 아티팩트의 양을 줄인다. 최근 이러한 유형의 공격은 2017년에 432% 증가하여 2018년 공격의 35%를 차지하면서 더욱 빈번해지고 있다. 이러한 공격은 수행하기 쉽지 않지만 익스플로잇 키트의 도움으로 더욱 널리 퍼지고 있다.

## 위험

### 취약한 소프트웨어
취약점은 애플리케이션, 완전한 컴퓨터, 운영체제, 또는 컴퓨터 네트워크의 약점, 결함 또는 소프트웨어 버그로, 악성 소프트웨어가 방어 기능을 우회하거나 실행에 필요한 권한을 얻기 위해 악용한다. 예를 들어, TestDisk 6.4 또는 이전 버전에는 공격자가 윈도우에 코드를 삽입할 수 있도록 허용하는 취약점이 포함되어 있었다. 악성 소프트웨어는 운영 체제, 응용 프로그램(예: 브라우저, 예: 윈도우 XP에서 지원되는 이전 버전의 마이크로소프트 인터넷 익스플로러), 또는 어도비 플래시 플레이어, 어도비 애크러뱃 또는 리더, 또는 자바 SE와 같은 취약한 버전의 브라우저 플러그인에 있는 보안 결함(보안 버그 또는 취약점)을 악용할 수 있다. 예를 들어, 일반적인 방법은 버퍼 오버런 취약점 악용이다. 이 취약점은 지정된 메모리 영역에 데이터를 저장하도록 설계된 소프트웨어가 버퍼가 수용할 수 있는 것보다 더 많은 데이터가 제공되는 것을 막지 못할 때 발생한다. 악성 소프트웨어는 버퍼를 넘치게 하는 데이터를 제공할 수 있으며, 악성 실행 코드나 데이터가 끝 이후에 추가될 수 있다. 이 페이로드에 접근하면 공격자가 의도한 대로 작동하며, 합법적인 소프트웨어의 의도와는 다르다.

악성 소프트웨어는 개발자가 적절한 패치를 배포할 시간을 갖기 전에 최근에 발견된 취약점을 악용할 수 있다. 취약점을 해결하는 새로운 패치가 배포된 경우에도 즉시 설치되지 않을 수 있어, 악성 소프트웨어가 패치가 없는 시스템을 악용할 수 있다. 때로는 패치를 적용하거나 새 버전을 설치해도 이전 버전이 자동으로 제거되지 않는 경우도 있다.

사용자가 소프트웨어 보안 취약점으로부터 정보를 얻고 보호받을 수 있는 몇 가지 방법이 있다.
소프트웨어 제공업체는 종종 보안 문제를 해결하는 업데이트를 발표한다.
일반적인 취약점에는 고유 식별자(CVE ID)가 할당되며, 국가 취약점 데이터베이스와 같은 공개 데이터베이스에 목록화된다.
Secunia PSI와 같은 도구는 개인 사용에 무료이며, 컴퓨터에 알려진 취약점을 가진 오래된 소프트웨어를 스캔하고 업데이트를 시도할 수 있다.
방화벽과 침입 방지 시스템은 공격을 나타낼 수 있는 의심스러운 활동에 대해 네트워크 트래픽을 모니터링할 수 있다.

### 과도한 권한
사용자와 프로그램에 필요한 것보다 많은 권한이 할당될 수 있으며, 악성 소프트웨어는 이를 악용할 수 있다. 예를 들어, 샘플링된 940개의 안드로이드 앱 중 3분의 1은 필요한 것보다 더 많은 권한을 요청했다. 안드로이드 플랫폼을 대상으로 하는 앱은 악성 소프트웨어 감염의 주요 원인이 될 수 있지만, 한 가지 해결책은 과도한 권한이 할당된 앱을 탐지하기 위해 타사 소프트웨어를 사용하는 것이다.

일부 시스템은 모든 사용자가 시스템의 핵심 구성 요소나 설정을 변경할 수 있도록 허용하는데, 이는 오늘날 과도한 권한 접근으로 간주된다. 이는 초기 마이크로컴퓨터 및 가정용 컴퓨터 시스템의 표준 운영 절차였으며, 관리자 또는 루트와 일반 시스템 사용자 간의 구분이 없었다. 일부 시스템에서는 비관리자 사용자가 시스템의 내부 구조를 수정할 수 있도록 허용되는 설계상 과도한 권한을 가지고 있다. 일부 환경에서는 사용자들이 부적절하게 관리자 또는 그에 상응하는 권한을 부여받아 과도한 권한을 가지고 있다. 이는 사용자들이 필요한 것보다 더 많은 권한을 요구하는 경향이 있어 종종 불필요한 권한을 할당받게 되기 때문이다.

일부 시스템은 사용자가 실행하는 코드가 해당 사용자의 모든 권한에 접근할 수 있도록 허용하는데, 이를 과도한 권한 코드라고 한다. 이는 또한 초기 마이크로컴퓨터 및 가정용 컴퓨터 시스템의 표준 운영 절차였다. 과도한 권한 코드로 실행되는 악성 소프트웨어는 이 권한을 사용하여 시스템을 전복시킬 수 있다. 현재 인기 있는 거의 모든 운영 체제와 많은 스크립팅 응용 프로그램은 코드에 너무 많은 권한을 허용하는데, 이는 일반적으로 사용자가 코드를 실행할 때 시스템이 해당 코드에 해당 사용자의 모든 권한을 허용한다는 의미이다.

### 약한 비밀번호
자격 증명 공격은 관리자 권한을 가진 사용자 계정이 해독되어 해당 계정이 악성 소프트웨어에 적절한 권한을 부여하는 데 사용될 때 발생한다. 일반적으로 공격은 가장 약한 형태의 계정 보안(일반적으로 사전 공격 또는 무차별 대입 공격을 사용하여 해독할 수 있는 짧은 비밀번호)이 사용되기 때문에 성공한다. 강력한 비밀번호를 사용하고 다요소 인증을 활성화하면 이러한 위험을 줄일 수 있다. 후자를 활성화하면 공격자가 비밀번호를 해독하더라도 해당 계정의 합법적인 사용자가 소유한 토큰이 없으면 계정을 사용할 수 없다.

### 동일한 운영체제 사용
균질성은 취약점이 될 수 있다. 예를 들어, 네트워크의 모든 컴퓨터가 동일한 운영 체제를 실행할 때, 하나를 악용하면 하나의 웜이 모든 것을 악용할 수 있다: 특히, 마이크로소프트 윈도우 또는 Mac OS X는 시장 점유율이 매우 커서, 이 두 운영 체제 중 하나에 집중된 취약점을 악용하면 많은 시스템을 전복시킬 수 있다. 2020년 1월부터 3월 사이에 발생한 악성 소프트웨어 감염의 약 83%가 윈도우 10을 실행하는 시스템을 통해 확산된 것으로 추정된다. 이러한 위험은 네트워크를 다른 서브넷으로 분할하고 그 사이의 트래픽을 합법적인 것으로 알려진 트래픽으로 제한하기 위해 방화벽을 설정함으로써 완화된다.

## 완화

### 안티바이러스 / 안티맬웨어 소프트웨어
안티맬웨어(때로는 안티바이러스라고도 함) 프로그램은 모든 종류의 악성 소프트웨어의 일부 또는 전부를 차단하고 제거한다. 예를 들어, 마이크로소프트 시큐리티 에센셜 (윈도우 XP, 비스타, 윈도우 7용) 및 윈도우 디펜더 (윈도우 8, 10, 11용)는 실시간 보호 기능을 제공한다. 윈도우 악성 소프트웨어 제거 도구는 시스템에서 악성 소프트웨어를 제거한다. 또한, 여러 유능한 바이러스 백신 소프트웨어 프로그램이 인터넷에서 무료로 다운로드할 수 있다 (일반적으로 비상업적 용도로 제한된다). 테스트 결과 일부 무료 프로그램이 상용 프로그램과 경쟁력이 있는 것으로 나타났다.

일반적으로 바이러스 백신 소프트웨어는 다음과 같은 방식으로 악성 소프트웨어와 싸울 수 있다:
# **실시간 보호:** 컴퓨터에 악성 소프트웨어가 설치되는 것을 실시간으로 보호할 수 있다. 이 유형의 악성 소프트웨어 보호는 바이러스 백신 보호와 동일한 방식으로 작동하며, 안티맬웨어 소프트웨어는 모든 들어오는 네트워크 데이터를 악성 소프트웨어에 대해 스캔하고 발견되는 모든 위협을 차단한다.
# **제거:** 안티맬웨어 소프트웨어 프로그램은 이미 컴퓨터에 설치된 악성 소프트웨어의 탐지 및 제거에만 사용될 수 있다. 이 유형의 안티맬웨어 소프트웨어는 윈도우 레지스트리, 운영 체제 파일 및 컴퓨터에 설치된 프로그램의 내용을 스캔하고 발견된 모든 위협 목록을 제공하여 사용자가 삭제하거나 유지할 파일을 선택하거나 이 목록을 알려진 악성 소프트웨어 구성 요소 목록과 비교하여 일치하는 파일을 제거할 수 있도록 한다.
#**샌드박싱:** 샌드박싱은 응용 프로그램을 제어된 환경 내에 가두어 해당 응용 프로그램의 작업을 제한하고 호스트의 다른 응용 프로그램으로부터 격리시키며 시스템 리소스에 대한 액세스를 제한한다. 브라우저 샌드박싱은 악성 소프트웨어 및 익스플로잇을 방지하기 위해 웹 프로세스를 격리하여 보안을 강화한다.

#### 실시간 보호
온액세스 또는 실시간 스캐너라고 불리는 안티맬웨어 소프트웨어의 특정 구성 요소는 운영 체제의 핵심 또는 커널 깊숙이 연결되어 특정 악성 소프트웨어 자체가 작동하려는 방식과 유사하게 작동하지만, 시스템 보호를 위한 사용자의 인지된 허가를 전제로 한다. 운영 체제가 파일에 접근할 때마다 온액세스 스캐너는 파일이 감염되었는지 여부를 확인한다. 일반적으로 감염된 파일이 발견되면 실행이 중지되고 파일은 돌이킬 수 없는 시스템 손상을 방지하기 위해 검역된다. 대부분의 AV는 사용자가 이 동작을 재정의할 수 있도록 한다. 이것은 운영 체제에 상당한 성능 영향을 미 미칠 수 있지만, 영향의 정도는 가상 메모리에서 생성하는 페이지 수에 따라 달라진다.

#### 샌드박싱
샌드박싱은 보안 모델로, 응용 프로그램을 제어된 환경 내에 가두어 인가된 "안전한" 작업으로 제한하고 호스트의 다른 응용 프로그램으로부터 격리시킨다. 또한 격리 유지를 위해 메모리 및 파일 시스템과 같은 시스템 리소스에 대한 접근을 제한한다.

브라우저 샌드박싱은 악성 코드의 취약점 악용을 방지하기 위해 웹 브라우저 프로세스와 탭을 운영 체제로부터 격리시키는 보안 조치이다.
이는 잠재적으로 해로운 코드를 샌드박스 내에 가두어 악성 소프트웨어, 제로데이 공격, 비의도적인 데이터 유출로부터 보호하는 데 도움이 된다.
이는 별도의 프로세스 생성, 시스템 리소스 접근 제한, 격리된 프로세스에서 웹 콘텐츠 실행, 시스템 호출 모니터링, 메모리 제약 등을 포함한다.
프로세스 간 통신 (IPC)은 프로세스 간의 보안 통신에 사용된다.
샌드박스를 탈출하는 것은 샌드박스 메커니즘 또는 운영 체제의 샌드박싱 기능에 있는 취약점을 목표로 한다.

샌드박싱이 완벽하지는 않지만, 일반적인 위협의 공격 표면을 크게 줄여준다.
브라우저와 운영 체제를 최신 상태로 유지하는 것이 취약점 완화에 중요하다.

### 웹사이트 보안 스캔
웹사이트 취약점 스캔은 웹사이트를 검사하고, 악성 소프트웨어를 탐지하며, 오래된 소프트웨어를 발견하고, 알려진 보안 문제를 보고하여 사이트 침해 위험을 줄인다.

### 네트워크 분리
네트워크를 작은 네트워크 집합으로 구성하고, 그 사이의 트래픽 흐름을 합법적인 것으로 알려진 트래픽으로 제한하면 감염성 악성 소프트웨어가 더 넓은 네트워크를 통해 스스로 복제하는 능력을 방해할 수 있다. 소프트웨어 정의 네트워킹은 이러한 제어를 구현하는 기술을 제공한다.

### "에어 갭" 격리 또는 "병렬 네트워크"
최후의 수단으로, 컴퓨터는 악성 소프트웨어로부터 보호될 수 있으며, 감염된 컴퓨터가 신뢰할 수 있는 정보를 유포할 위험은 "에어 갭"(즉, 다른 모든 네트워크에서 완전히 분리)을 적용하고 외부로부터의 소프트웨어 및 데이터의 진입 및 출입에 대한 강화된 통제를 적용함으로써 크게 줄일 수 있다. 그러나 악성 소프트웨어는 일부 상황에서 여전히 에어 갭을 넘어갈 수 있는데, 이는 에어 갭 네트워크에 소프트웨어를 도입해야 할 필요성 때문이며, 그 위에서 지원되는 자산의 가용성 또는 무결성을 손상시킬 수 있다. 스턱스넷은 USB 드라이브를 통해 대상 환경에 도입되어 데이터를 외부로 유출할 필요 없이 환경에서 지원되는 프로세스에 손상을 입히는 악성 소프트웨어의 예이다.

AirHopper, BitWhisper, GSMem 및 Fansmitter는 연구자들이 도입한 네 가지 기술로, 전자기, 열 및 음향 방출을 사용하여 에어 갭 컴퓨터에서 데이터를 유출할 수 있다.

## 연구
2005년부터 2015년까지의 악성 소프트웨어 연구 동향을 영향력 있는 저널, 많이 인용된 논문, 연구 분야, 출판물 수, 키워드 빈도, 기관 및 저자와 같은 기준을 고려하여 서지 분석을 활용한 결과, 연평균 성장률이 34.1%로 나타났다. 북아메리카가 연구 성과를 주도했으며, 그 다음으로 아시아와 유럽이 뒤를 이었다. 중국과 인도는 신흥 기여자들로 확인되었다.

## 같이 보기
* 
* 바이러스토탈

## 각주

## 외부 링크
* 경찰청 사이버안전국 예방수칙