TIL 2022-07-29

고둑·2022년 7월 29일
0

소프트웨어 분석 순서

자전거의 구조 관찰(소프트웨어의 큰 구조 파악)

↓ 솔직히 분석하기엔 정보 부족하긴함

자전거 타는 사람 관찰(프로그램을 실행해보며 관찰)

-> 자세한 분석이 필요하면 특정부분을 더 세밀하게 관찰 -> 동적 분석(다이나믹),정적 분석(스테틱)

정적 분석 : 외적인 관찰을 통해 정보를 알아내는 방식 (자전거의 구조 관찰) -> 큰 구조 파악 용이

동적 분석 : 직접 실행해가며 정보를 알아내는 방식 (자전거를 직접 타보며 분석) -> 직관적으로 알 수 있는 부분을 파악하기 용이

서로가 장단점이 있기때문에 혼용해가며 사용!!!!


정적 분석

파일의 종류(확장자: exe, dll, doc, zip 등), 크기, 헤더(PE) 정보, Import/Export API, 내부 문자열, 실행 압축 여부, 등록 정보, 디버깅 정보, 디지털 인증서 등의 다양한 내용을 확인 하는 것이다.

장점

  • 전체 구조 파악이 매우 용이하다(그래프 그리기 굿)
  • 분석 환경의 제약 ↓ (윈도우에서 APK분석 가능)
  • 악성 프로그램 분석 ↑ (실행 X -> 감염 X)

단점

  • 난독화 기법 적용시 GG (요즘은 개나 소나 다 리버싱 방지때문에 난독화 기법 적용함)
  • 가장 중요한게 일단 프로그램을 실행시킨다는 것은 프로그램에 사용되는 함수들이 실시간으로 동적으로 데이터를 주고받는다는 뜻인데 정적으로 분석시 이러한 동적인 흐름을 놓칠 수 있음
    -> 코드 복잡해지면 복잡해질수록 효율 개씹망

디스어셈블러가 기계어를 어셈블리 언어로 바꾸는 것도 정적 분석의 일종이다.


동적 분석

파일을 직접 실행시켜서 동작하는것을 분석하고, 디버깅을 통해서 코드 흐름과 메모리 상태 등을 자세히 살펴보는 방법이다.

파일, 레지스트리, 네트워크 등을 관찰하면서 프로그램의 행위를 분석한다.

장점

  • 코드를 자세히 분석하지 않아도 대략적인 정보를 파악 가능 (효율성 ↑↑↑↑↑↑↑)

단점

  • 분석 환경의 구축에 어려움이 존재할 수도 있다.
    -> 일단 뭐 실행이 되야 분석이 가능해지므로 생각보다 까다롭다

  • 디버깅(동적 분석의 일종)이 감지되면 스스로 kill하는 안티 디버거도 존재한다 -> 정적 분석의 난독화 같은 느낌

동적 분석은 대부분 디버거를 이용하며 프로그램을 직접 메모리에 띄워서 메모리를 관찰함과 동시에 레지스터와 같은 저장소들을 동시에 관찰한다


이번거를 요약하자면
동적 분석 / 정적 분석의 정의와 대충 뭐 하는건지만 감 잡으면 OK

profile
문워킹은 하지말자

0개의 댓글