악성코드 분석의 과정
- 샘플 수집: 악성코드를 분석하기 위해 샘플을 수집한다. 이는 실제 악성코드를 분석하거나 공개된 악성코드 데이터베이스에서 가져올 수 있다.
- 정적 분석: 악성코드의 파일 구조, 코드 분석, 암호화 및 패킹 방법 등을 조사한다. 이를 통해 악성코드의 행위, 기능, 특성을 이해할 수 있다.
- 동적 분석: 악성코드를 격리된 환경에서 실행하여 행위를 관찰하고 분석한다. 동적 분석은 악성코드가 파일을 생성하거나 시스템에 변화를 가할 때의 행위를 추적하고 기록한다.
- 악성 행위 분석: 악성코드의 행위를 이해하고 분석한다. 이는 파일 시스템, 레지스트리, 네트워크 통신, 프로세스 조작 등의 행위를 포함한다.
- 페이로드 분석: 악성코드의 페이로드, 즉 실제로 실행되는 악성 기능을 조사한다. 이는 데이터 유출, 시스템 손상, 랜섬웨어 등의 기능일 수 있다.
- 보고서 작성: 분석 결과를 문서화하고, 악성코드의 특성, 위험성, 대응 방법 등을 기록한다. 이 보고서는 보안 업체, 기관 또는 사이버 보안 커뮤니티와 공유될 수 있다.
악성코드 분석을 위한 환경 구축
- 가상머신 소프트웨어를 설치한다. 대표적으로 VirtualBox, VMware, Parallels 등이 있다.
- 운영체제 이미지를 다운로드한다. Windows XP, Windows 7 등의 구 버전 운영체제를 사용하는 것이 좋다.
- 가상머신 소프트웨어에서 새 가상머신을 만든다.
- 새 가상머신에서, 운영체제 이미지를 사용하여 운영체제를 설치한다.
- 필요한 악성코드 분석 도구를 설치한다. 예를 들어, OllyDbg, IDA Pro 등의 디버깅 도구, Wireshark, Fiddler 등의 패킷 분석 도구, PEiD, Dependency Walker 등의 파일 분석 도구 등이 있다.
- 악성코드 샘플을 다운로드하거나 분석 대상으로 삼을 샘플을 선택한다.
- 악성코드 샘플을 실행하여 동작을 분석한다.
- 분석 결과를 정리하고, 적절한 대응 방안을 마련한다.
환경 구축 시 주의사항
1. 격리된 환경
악성코드 샘플은 시스템에 위험을 일으킬 수 있으므로, 분석을 위한 격리된 환경을 구축해야 한다. 가상 머신(VM)이나 컨테이너 등 가상화 기술을 사용하여 실제 시스템과 분리된 환경에서 작업.
2. 네트워크 분리
악성코드는 인터넷을 통해 제어 서버와 통신할 수 있다. 따라서 분석 환경에서는 네트워크 연결을 완전히 차단하거나, 분석에 필요한 특정 통신을 제한하여 네트워크 분리를 유지해야 한다.
3. 업데이트 및 패치
분석 환경의 운영 체제, 보안 소프트웨어, 악성코드 분석 도구 등을 최신 상태로 유지. 보안 업데이트와 패치는 악성코드 샘플 분석 시스템의 보안을 강화하는 데 중요하다.
4. 백업 및 회복 계획
가상머신 스냅샷을 생성하여, 악성코드 분석 시 초기 상태로 쉽게 돌아갈 수 있도록 준비한다.
악성코드 분석 중에는 예기치 않은 문제가 발생할 수 있다. 따라서 중요한 데이터와 시스템에 대한 백업을 정기적으로 수행하고, 분석 환경을 이전 상태로 복원할 수 있는 계획을 갖추어야 한다.
5. 가상 분석 도구
악성코드를 분석하기 위해 다양한 가상 분석 도구를 활용. 예를 들어, 디버깅 도구, 프로세스 모니터, 행위 기반 분석 도구 등이 유용할 수 있다.
6. 악성코드 샘플 분류
분석 환경에서 악성코드 샘플을 분석하기 전에, 분류 및 우선순위를 결정. 위험도가 높은 샘플부터 분석하는 것이 좋다.
7. 유해성 평가
악성코드 샘플을 분석하기 전에, 유해성 평가를 실시. 이는 분석에 사용되는 환경과 도구에 악영향을 미칠 수 있는 특정 유형의 악성코드를 식별하고 분석 우선순위를 결정하는 데 도움이 된다.
8. 난독화된 코드 처리
일부 악성코드는 코드를 난독화하여 분석을 어렵게 만든다. 이러한 경우, 난독화된 코드를 해독하거나 분석하기 위한 도구를 사용해야 할 수 있다.
9. 법적 및 윤리적 고려 사항
악성코드 분석은 합법적인 목적과 윤리적인 행동 원칙을 준수해야 한다. 법적인 제한사항과 개인정보 보호 등 관련 법규 준수를 고려하며, 다른 사람의 권리와 프라이버시를 침해하지 않도록 주의해야 한다.
10. 협력과 지식 공유
악성코드 분석은 지속적인 학습과 업데이트를 필요로 한다. 커뮤니티와의 협력과 지식 공유는 악성코드 분석 업무의 효율성을 높이고 최신 동향을 파악하는 데 도움이 된다.
유해성 평가
: 악성코드 샘플이 분석 환경과 도구에 어떤 유해한 영향을 미칠 수 있는지 평가하는 과정이며, 유해성 평가를 통해 악성코드 분석 작업을 안전하고 효율적으로 수행할 수 있다.
1. 복제 및 전파 가능성
악성코드가 분석 시스템에서 복제되거나 전파될 수 있는 가능성을 평가한다. 이를 통해 분석 환경의 안전성과 보안을 유지할 수 있다.
2. 악영향 가능성
악성코드가 시스템에 어떤 악영향을 줄 수 있는지 평가한다. 이는 시스템의 기능, 데이터 무결성, 네트워크 연결 등에 대한 위험을 고려한다.
3. 분석 도구와의 호환성
악성코드 분석에 사용되는 도구와 분석 환경 간의 호환성을 평가한다. 도구의 버전, 지원 기능, 운영 체제 등을 고려하여 정상적인 분석 활동을 보장한다.
4. 운영 체제 및 기타 소프트웨어의 영향
악성코드가 운영 체제, 보안 소프트웨어, 네트워크 장비 등에 어떤 영향을 줄 수 있는지 평가한다. 이를 통해 악성코드가 분석 환경을 우회하거나 탐지를 회피할 가능성을 파악한다.
5. 분석 시간 및 자원
악성코드 분석은 시간과 자원을 소비하는 작업이다. 유해성 평가를 통해 분석에 필요한 시간, 컴퓨팅 리소스, 저장 공간 등을 적절히 계획할 수 있다.
환경 구축 시 참고사항
1. 네트워크 설정은 어떻게 해야하나? - NAT? 어댑터에 브릿지?
로컬 컴퓨터에 문제가 가지 않도록 가상머신을 분리하는것이 중요하다고 생각해서 네트워크 설정을 알아보았다.
NAT, 어댑터에 브릿지 방식의 설정에는 장단점이 있으므로, 상황에 맞게 선택하면 된다.
1. NAT(Network Address Translation)
NAT 설정은 가상머신을 호스트 시스템의 네트워크와 분리하는 데에 유용하다. 가상머신은 호스트의 IP 주소를 사용하여 외부와 통신하며, 외부로부터는 가상머신의 IP 주소를 확인할 수 없다. 이 방식은 가상머신을 격리된 네트워크 환경에서 실행하고 싶을 때 유용하다.
2. 브리지 어댑터(Bridged Adapter)
브리지 어댑터 설정은 가상머신에 실제 네트워크 인터페이스를 연결하여 가상머신을 실제 네트워크와 동일한 레벨로 구성한다. 이렇게 하면 가상머신이 호스트와 동일한 네트워크 범위 내에 위치하게 됩니다. 따라서 가상머신은 외부와 직접 통신할 수 있다. 이 설정은 가상머신에게 외부와의 통신이 필요한 경우 유용하다.
즉, 요약하면 다음과 같다.
NAT : 외부로의 직접 통신이 필요 없는 경우, 가상머신을 더욱 격리된 환경에서 실행가능
어댑터에 브리지 : 외부와의 통신이 필요한 경우
… 악성코드 분석 과정에서 참고사항이 추가된다면 상시로 추가 할 예정이다.