Malicious Code Analysis DAY_001 악성코드 란?, Malware, 바이러스와 악성코드, 악성코드 유형, 악성코드 분석규칙, 자동화 분석, automatic analysis, 오용탐지와 이상탐지, 정적 분석 개요, 해쉬값, 악성코드..

2024. 3. 8. 22:45Information Security 정보보안/Malicious Code Analysis 악성 코드 분석

728x90

배울내용:

악성코드 란?

Malware

바이러스와 악성코드

악성코드 유형

악성코드 분석규칙 

자동화 분석

automatic analysis

오용탐지와 이상탐지

정적 분석 개요

해쉬값

악성코드분석

Malicious Code Analysis

 

 

 

 

 

 

 

 

Malicios Code Analysis 

악성 코드 분석이라고하는게 있다 이는 컴퓨터 시스템에서 발견된 악성 소프트웨어, 즉 바이러스, 웜, 트로이 목마 등과 같은 해로운 프로그램을 이해하고 분석하는 프로세스를 의미한다.

 

 

 

이번시간에는 아래의 5의 기본을 알아볼 것이다.

 

 

 

 

 

 

 

 

먼저 Malware (악성코드) 이다.

 

 

 

 

 

 

Malicious 라는 단어는 영어로는 악의적인, 악의가 있는, 해로운이라는 뜻을 가지고 있다. 예를 들어, "malicious software"는 악의적인 소프트웨어를 가리키며, "malicious intent"는 악의적인 의도를 나타냅니다. 이 용어는 다른 사람이나 그들의 이익을 해치기 위해 의도적으로 악한 행동을 하는 경우에 사용될 수 있습니다.

 

 

 

그러면 바이러스 중에서도 아래와 같은 이해가 필요하다 

 


바이러스 vs   웜 (바이러스 X  , 악성코드) 
 전파X    vs   전파 O 

 

바이러스는 전파가 안되지만 웜은 전파가 된다 

 

! 웜은 바이러스가 아니다!

이것은 바이러스와 유사하지만 약간 다르다. 바이러스는 호스트 파일에 첨부되어 전파되는 데 비해, 웜은 네트워크를 통해 자동으로 전파된다. 다시 말해, 웜은 한 시스템에서 다른 시스템으로 스스로 이동하여 전파된다. 이것은 웜이 전체 네트워크를 빠르게 감염시킬 수 있는 능력을 갖추고 있다는 것을 의미한다. 

 

 

 

 

 

 

 

바이러스 (치료)   vs   악성코드(치료 X)
바이러스,웜         vs      트로이목마

 

바이러스 나 웜은 치료가 가능하지만 악성코드는 치료가 힘들다 (그래서 삭제함) .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

그럼 위와같이 질문하면 악성코드와 바이러스 차이는 뭘까? 

 

 

 

 

 

악성코드 vs 바이러스

바이러스는 악성코드의 한 종류다.
따라서 모든 바이러스는 악성코드이다.
그러나 모든 악성코드가 바이러스는 아니다. 

 

 

위와같이 정의할수있다. 

 

 

 

 

 

 

 

그러면한번 악성코드 분류에 대해 한번알아보자 

 

 

보통 사람들이 웜을 "웜 바이러스" 라고는 하지만 바이러스가 아닌 악성코드이다.

 

 

 

 

 

위와같은 악성코드들을 

앞으로 분석을 하게 되는데 아래의 규칙을 준수해야한다 . 

 

 

 

분석 규칙은 창과 방패와 같다. 악성코드 제작자는 매번 분석 방법을 회피할수있는 새로운 기법을 만들기때문에

매번 새로운 창으로 방패를 뚫으러온다. 우리는 그런 공격을 대비해 새로운 방패또는 다양한 방패로 막아야할 필요가 있다.

 

 

 

 

 

 

그러면 규칙을 알면 어떤 방법으로 분석해야할까? 

 

 

 

 

 

아래에서 위로 올라가는 순서로 자동화에서 상세분석까지 이루어진다 그리고 그 단계가 올라갈수록 난이도 또한 올라간다.

 

여기에서 포인트는 
악성코드 분석은 무엇이다 ?   동적분석, 정적분석 이다.  

 

 

 

 

 

 

 

 

 

 

 

 

 

자동화 분석의 특징은 아래와 같다

 

 

 

 

VIRUSTOTAL , Malwares.com v4 
웹사이트를 통해 파일을 업로드함으로써,
여러개의 안티 바이러스 엔진으로 스캐닝할 수 있다. 

 

 

 

 

 

 

아래의 링크를 타고 Choose 파일을 한뒤에 파일을 올리면 다양한 나라의 백신이 분석하고 어느나라가 분석해서 탐지를 했고 탐지를 못했는지 나타내고 만약 그 수가 상당수면 악성코드로 판단될수있다. 

 

 

 

실제로 실무에서도 많이 쓰이니 잘 알아두도록 하자 . 

 

https://www.virustotal.com/gui/home/upload

 

VirusTotal

 

www.virustotal.com

 

 

 

파일을 올려서 실행해보면 아래와 같이 보인다. 

 

 

아주 간단한 웹쉘이라는 악성코드를 넣었는데 AhnLab-V3 또는 몇개만 탐지 하는걸 볼수있다. 

 

 

 

 

 

 

기존에 바이러스라고 탐지한 코드가 존재하는것들은 공격패턴을 분석하여 탐지할수있다 .

 

 

오용탐지 와 이상탐지가 있다 

기존에 발견된 바이러스나 악성 코드에 대한 탐지는 오용탐지와 이상탐지라는 두 가지 기본적인 방법으로 이루어진다

  1. 오용탐지 (Signature-based Detection):
    • 오용탐지는 기존에 알려진 바이러스나 악성 코드의 특정 패턴이나 서명을 검색하여 발견하는 방법이다.
    • 이 방법은 이미 알려진 바이러스에 대한 데이터베이스를 사용하여 비교하므로 특정 바이러스에 대한 신속한 탐지가 가능하다.
    • 그러나 새로운 악성 코드나 변형된 코드에는 효과적이지 않을 수 있다. 즉, 이 방법은 이미 알려진 패턴만을 탐지할 수 있다.
  2. 이상탐지 (Anomaly-based Detection):
    • 이상탐지는 시스템의 일반적인 동작 패턴을 학습하고, 이와 다른 이상한 패턴을 감지하여 악성 코드를 탐지하는 방법이다.
    • 시스템의 정상적인 동작을 학습하기 위해 머신러닝이나 통계적인 기술을 사용할 수 있습다.
    • 이 방법은 새로운 형태의 악성 코드나 변형된 코드를 탐지할 수 있다. 그러나 오용탐지에 비해 정확도가 떨어질 수 있으며, 거짓 양성과 거짓 음성의 위험이 있다.

따라서 보안 시스템은 이러한 두 가지 방법을 함께 사용하여 바이러스나 악성 코드를 탐지하고 대응한다. 오용탐지는 이미 알려진 위협에 대한 신속한 대응을 제공하며, 이상탐지는 새로운 형태의 공격에 대응할 수 있도록 도와준다.

 

 

 

 

아래는 예시를 들어 쉽게 이해하게 만들었다

 

  1. 오용탐지 (Signature-based Detection):
    • 예를 들어, 오용탐지 시스템이 "컴퓨터 바이러스 A"의 서명을 알고 있다고 가정해 봅시다. 이 바이러스는 파일을 삭제하는 악의적인 동작을 수행합니다.
    • 사용자가 이러한 악성 파일을 다운로드하거나 실행하면, 시스템은 그 파일의 서명을 분석하여 "컴퓨터 바이러스 A"의 서명과 일치하는지 확인합니다.
    • 서명이 일치하면 시스템은 이를 바이러스로 탐지하고 적절한 조치를 취할 수 있습니다.
  2. 이상탐지 (Anomaly-based Detection):
    • 예를 들어, 이상탐지 시스템이 사용자의 네트워크 트래픽 패턴을 학습하고 있다고 가정해 봅시다. 정상적인 패턴은 주로 규칙적이고 일정한 양상을 보입니다.
    • 사용자의 네트워크 트래픽이 갑자기 급격히 증가하거나, 일반적인 행동 패턴과 다른 요청이 발생할 경우, 이는 이상으로 간주될 수 있습니다.
    • 이러한 이상한 패턴이 발견되면 시스템은 해당 트래픽을 분석하여 악성 코드나 해킹 시도를 탐지하고 대응할 수 있습니다.

 

 

 

이를통해 오용탐지는 사후 탐지라고 볼수있다 그리고 이상탐지는 새로운 탐지라고 볼수있다

그래서 오용탐지는 성공률이 100% 라고 볼수있지만 이상탐지는 오용탐지로 가기 전 단계라고 볼수도 있을것 같다. 

 

 

 

 

 

 

  분석에는 정적분석 과 동적분석이 있는데 정적분석이 대부분 더 많이 사용된다  

 

 

 

 

여기서 중요한 것은 모든 파일은 자신만의 해시를 갖는다. 

이는 즉 사람이 태어나면 각각의 식별자 처럼쓰이는 지문이 있는것 처럼 모든 파일또한

사람의 지문처럼 해시라는 값이 식별자로 쓰인다. 

 

 

 

그러면 해쉬값이 어떤걸까? 

 

 

만약 Kali에서 "sarimus_Malware_analysis.txt" 라는 파일을 만들고 

 

 

 

아래처럼 1 만 집어넣고 저장한다

 

 

 

 

 

 

 

그러면 "b026324c....81d1" 이라는 해쉬값이 나온다 

그러나 다른 파일이 내용이 똑같이 1 이라도 있으면 똑같은 해쉬값이 나온다

 

즉 , 1비트라도 정확히 일치하는 파일이 있으면 똑같은 해쉬값이 나온다

만약 이 파일의 원래의 해쉬값과 비교했을때의 해쉬값이 다르면 "변조" 됐다고 볼수있는 것이다. 

 

 

 

 

 

 

 

 

 

이렇게 실제로도 많이쓰이는걸 볼수있다. 

만약 이 파일의 해쉬값이 틀리면 "변조" 됐다고 볼수있다 

즉 , 이는 무결성 정검도구로 쓰이는 것이라고도 볼수도 있다 . 

SHA256 이나 SHA516 은 나중에 추가적으로 설명할것이다 .

 

 

 

 

 

 

 

 

 

728x90