문맥 (context)
악성 소프트웨어,유해한 소프트웨어(惡性-) 또는 맬웨어(malicious software 또는 malware)는 컴퓨터, 서버, 클라이언트, 컴퓨터 네트워크에 악영향을 끼칠 수 있는 모든 소프트웨어의 총칭이다. 예전에는 단순히 컴퓨터 바이러스만이 활동하였으나, 1990년대 말 들어서 감염 방법과 증상들이 다양해지면서 자세히 분류를 나누기 시작했다. 과거에는 디스크 복제 등 저장매체를 따라 전파되었으나 네트워크가 발달하면서 이메일이나 웹으로 감염되는 경우가 훨씬 많아졌다.
<heading>악성코드 분석 </heading>
악성코드의 분석 방법은 크게 코드 정적 분석 (Static code analysis)과 코드 동적 분석 (Dynamic code analysis) 두 종류로 나눌 수 있다. 코드 정적 분석의 경우는 프로그램을 디스어셈블하는 디버깅프로그램 들을 이용하는 방법으로 Immunity Debugger, 올리디버거, IDA 프로, GDB 등의 프로그램을 사용한다. 위의 프로그램들을 사용하여 디스어셈블된 프로그램의 코드를 실행시키지 않고 분석하는 기법이다. 코드 동적 분석 (Dynamic code analysis)의 경우는 런타임 디버깅기법을 이용하여 통제된 상황 하에서 악성코드를 직접 실행시키며 이후에 발생하는 변화들을 분석하는 형태로 이루어진다. 런타임 디버거로는 앞서 언급한 Immunity Debugger, 올리 디버거 등이 있으며 프로그램의 프로세스에 붙어서 제어하는 역할을 한다. 통제된 상황에서 변화를 살펴보는 툴로는 파일의 입출력을 감시하는 Filemon, 레지스트리 정보 변화를 감시하는 Regmon, TCP/UDP 통신에 대한 입출력을 감시하는 TDImon, 실행 중인 프로세스의 DLL 정보 등을 감시하는 프로세스 익스플로러 등이 있다.
지시문 (instruction)
주어진 원문을 읽고 필요한 정보를 파악하여, 원문에 근거해 질문에 답하라.
질문 (question)
악성코드 분석 방법 중 코드 정적 분석과 코드 동적 분석의 차이점은 무엇인가?
추론 과정 (compact_reasoning)
-
1과제 해석
task_interpretation코드 정적 분석과 코드 동적 분석의 특징을 비교하여 차이점을 도출해야 한다.
-
2정보 추출
information_extraction정적 분석의 정의와 실행 방식, 동적 분석의 정의와 실행 방식을 추출한다.
- 코드 정적 분석의 경우는 프로그램을 디스어셈블하는 디버깅프로그램 들을 이용하는 방법으로
- 디스어셈블된 프로그램의 코드를 실행시키지 않고 분석하는 기법이다.
- 코드 동적 분석 (Dynamic code analysis)의 경우는 런타임 디버깅기법을 이용하여 통제된 상황 하에서 악성코드를 직접 실행시키며 이후에 발생하는 변화들을 분석하는 형태로 이루어진다.
-
3근거 선택
evidence_selection두 방식의 핵심적인 차이점인 '코드 실행 여부'와 '분석 방식'을 근거로 선택한다.
- 코드를 실행시키지 않고 분석하는 기법이다.
- 악성코드를 직접 실행시키며 이후에 발생하는 변화들을 분석하는 형태
-
4논리 통합
logical_integration정적 분석은 코드를 실행하지 않고 디스어셈블된 코드를 보는 방식이며, 동적 분석은 코드를 직접 실행하여 변화를 관찰하는 방식임을 대조한다.
-
5결론 도출
conclusion_formulation실행 여부를 기준으로 두 분석법의 차이를 명확히 정리한다.
-
6답변 생성
answer_generation정적 분석은 코드를 실행하지 않고 디스어셈블된 코드를 분석하는 방식인 반면, 동적 분석은 통제된 상황에서 악성코드를 직접 실행하여 발생하는 변화를 분석하는 방식이라는 점을 기술한다.
- 코드를 실행시키지 않고 분석하는 기법이다.
- 악성코드를 직접 실행시키며 이후에 발생하는 변화들을 분석하는 형태
최종 답변 (final_answer)
코드 정적 분석은 디스어셈블된 프로그램의 코드를 실행시키지 않고 분석하는 기법인 반면, 코드 동적 분석은 런타임 디버깅기법을 통해 통제된 상황에서 악성코드를 직접 실행시키며 발생하는 변화를 분석하는 방식이라는 차이가 있다.
핵심 해석 (core_interpretation)
악성코드 분석은 프로그램을 실행시키지 않고 분석하는 정적 분석과 통제된 상황에서 직접 실행하며 분석하는 동적 분석으로 구분된다.