본문으로 바로가기

악성코드 분석

category 정보 보안 2023. 6. 1. 22:08
728x90
반응형

cyberchef - xor 연산 복잡할때 써먹기 좋은 툴

스택(Stack)

  • 데이터가 저장되는 가장 기본적인 구조
  • 가장 나중에 들어온 데이터가 가장 먼저 나감(LIFO)
  • 우리가 주로 사용하는 데이터는 높은주소에서 낮은 주소로 채워짐(마이너스로 표현됨)(ex/ ebp-4)
  • 함수가 소환될 때 사용하는 지역변수와 매개 변수들이 저장되는 공간
  • 함수의 소환이 끝나면 같이 사라짐
  • 지역변수와 매개변수매개변수 : 인자라고도 불림, 전달되는 값을 받는 변수(ebp+xx)
  • 지역변수 : 함수 안에서만 사용 가능한 변수(ebp-xx)

스택 프레임이란?

  • 함수가 사용될 때(호출될 때) 그 함수가 가지는 공간을 의미
  • 함수가 종료되면 스택 프레임도 함께 사라짐
  • 함수가 호출되면 해당 함수 내에서 사용할 매개변수, 호출이 끝난 뒤 돌아갈 주소, 함수에서 선언된 지역변수등이 스택에 차곡차곡 들어감
  • 이러한 정보들을 스택 프레임이라 부르며 이 정보들로 인해 함수는 처음 호출 된 곳으로 돌아갈 수 있음EBP : base pointer // 스택 프레임의 기준
  • EIP : instruction pointer // 실행할 코드의 주소
  • ESP : stack pointer //스택 프레임 포인터.

함수의 호출 방법

  1. 함수가 사용 할 데이터들이 PUSH됨.
  2. 함수를 소환함!(call 함수!)
  3. 소환된 함수 내부에서 스택프레임이 생성됨
  4. 함수의 행위가 실행됨
  5. 행위가 끝난 함수는 스택 프레임을 정리함
  6. 함수가 처음 소환되었던 곳 다음 줄로 돌아감

Windows 아키텍쳐 이해하기

함수 호출 규약(Calling Convention)

  • 함수를 어떻게 호출 하는 지 에 대한 방법을 정의한 것
  • 함수에 파라미터를 전달하는 순서
  • 전달된 파라미터가 스택에 어떻게 PUSH되는지
  • 함수가 리턴(종료)될 때 어떻게 스택이 정리되는지

cdecl

  • 파라미터를 오른쪽에서 왼쪽으로 전달
  • 함수를 호출한 호출자가 스택에 PUSH된 파라미터를 정리함

stdcall

  • 파라미터를 오른쪽에서 왼쪽으로 전달
  • 호출된 함수 내부에서 스택을 정리하고 돌아감

Visual Studio 로 C로 직접 코딩 해보고 디버깅 해보고 리버싱 공부하면 도움 많이 됨

비쥬얼스튜디오로 코딩 해보고 직접 리버싱 해본걸 이력서에 적는것도 플러스가 됨

if문 for문 (조건문, 반복문) while문 같은거 해보면 좋을거같음 if문 for문 하고 비교해보는 거도 괜춘

https://bpsecblog.wordpress.com/2016/05/27/re_tutorial_1/

콘치의 리얼리티 3000% 리버싱 튜토리얼 (1)

참고해서 하면 좋을듯 하다

Windows API

Windows API(Windows Application Programming Interface)는 Microsoft에서 제공하는 프로그래밍 인터페이스 모음으로, 소프트웨어 개발자가 Windows 운영 체제에서 작동하는 응용 프로그램을 만들 수 있도록 지원합니다.

  • Windows 동작하는 프로그램 분석 시 기본이 되는 함수
  • 윈도ㅜㅇ에서 동작하기 위한 다양한 행동들이 WindowsAPI라는 삼후 모음집으로 이미 만들어져있음
  • 악성코드에서 무진장 많이많이 사용하시때문에 알고있어야함
  • MSDN에서 검색하사며 사용하면됨(다못외움 너무많음)

windows api 는 msdn 에서 어지간하면 다 검색 가능하니까 모르면 검색을 좀 해봐라

다 나온다

안티 디버깅(Anti-Debugging)

  • 악성코드에서 상당히 기본적으로 사용되는 기법
  • 현재 실행중인 파일이 디버깅 상태인지 체크 후 더 이상의 행위를 진행하지 않음
  • 동적 분석을 방해하는 몹시 매우 성가신 기법
  • 주로사용되는 API

-IsDebuggerPresent, FindWindows, GetTickCount 등

패킹과 프로텍트

패킹

  • 실행압축
  • 실행 파일 내부에 압축 해제 코드가 포함 되어있음
  • 동적으로 실행 시 압축 해제된 코드 확인 가능
  • UPX, ASPack, 더미다 등이 패킹에 해당됨

프로텍트

  • 코드를 보호하는 가상화 기법
  • 리버싱을 막기위한 기법들이 많이 추가되어있음
  • VWP, 더미다

 

dbg

f7 은 다음꺼 확인

ctrl + f7 은 자동으로

컨트롤 + f2는 초기화

728x90
반응형