- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- wargame
- 코인
- compound
- blockchain
- Linux
- lending
- shellcode
- Ethereum
- Crypto
- 해시
- overthewire
- bitcoin
- V2
- 리눅스
- hacking
- solidity
- pow
- web3
- 이더리움
- 비트코인
- pwnable
- security
- DreamHack
- 반딧
- 블록체인
- Leak
- BANDiT
- 해킹
- defi
- PWN
Nullorm
Reversing 기초 | DreamHack | Background: Static Analysis vs. Dynamic Analysis 본문
Reversing 기초 | DreamHack | Background: Static Analysis vs. Dynamic Analysis
Null0rm 2022. 6. 4. 20:491. 정적분석 vs 동적분석
정적분석(Static Analysis)는 외적인 관찰만을 통해 정보를 알아내는 것을 의미하고,
동적분석(Dynamic Analysis)은 실행을 통해 동작을 분석하는 것을 의미함.
둘 중 어느 방법이 더 좋다고 할 수 있는지 말하기 힘들며, 두 방법을 모두 적절히 혼용하여야 대상을 효과적으로 분석할 수 있음. 동적인 방법만을 고수하면 큰 구조를 놓칠 수 있고, 반대로 정적인 방법만을 고수하면 실행을 통해 직관적으로 알 수 있는 부분을 분석하느라 시간을 허비할 수 있음.
2. 정적분석
2-1. 정적분석의 장점
정적분석을 사용하면 프로그램의 전체적인 구조를 파악하기 쉬움.
정적 분석 도구들은 프로그램이 어떤 함수로 구성되어있는지, 어떤 함수로 구성되었는지, 서로 어떤 호출 관계를 가지고 있는지 등을 종합적으로 살펴볼 수 있음.
또한 분석 환경의 제약에서도 비교적 자유로움. 실행을 전제로 하는 동적분석은 운영체제와 같은 환경의 영향을 많이 받지만 정적분석은 도구만 잘 갖추면 그러한 환경의 제약을 거의 받지 않는다고 할 수 있음.
마지막으로, 바이러스와 같은 악성프로그램의 위협으로부터 안전함. 실제로 실행을 하는 것이 아닌, 구조를 살피는 것이기 때문.
2-2. 정적분석의 단점
정적분석의 대상이 되는 프로그램에 만약 난독화(Obfuscation)이 적용되면 분석이 매우 어려워짐. 난독화가 적용되면 프로그램의 코드가 심하게 변형되어서 이를 읽고 흐름을 파악하는 과정이 매우 힘들어짐.
2-3. 정적 분석의 예
IDA를 이용하여 프로그램을 구성하는 코드를 살펴볼 수 있음. 디스어셈블된 코드와 디컴파일되어있는 코드를 모두 살펴볼 수 있음. 이들은 기계어를 사람이 이해하기 쉬운 언어로 나타내어 분석을 더욱 쉽게 해줌.
또한 상호 참조기능이나 함수의 실행 흐름을 보기 쉽게 해주는 제어흐름 그래프 등을 통해 분석가가 프로그램을 쉽게 이해할 수 있도록 도움.
3. 동적분석
3-1. 동적분석의 장점
동적분석을 활용하면 코드를 자세히 분석해보지 않고도 프로그램의 개략적인 동작을 파악할 수 있음.
프로그램은 다양한 함수가 복잡하게 영향을 주고받고있기 때문에 프로그램을 정적분석만으로 완벽히 이해하기는 매우 어려움. But 동적분석은 어떤 입력에 대한 개별 함수 또는 프로그램의 출력을 빠르게 확인할 수 있으므로 출력값들을 기반으로 동작을 추론해볼 수 있음.
3-2. 동적분석의 단점
분석환경을 구축하기가 매우 어려움, 일단 실행 하는 것을 전제로 하기 때문에 실행 환경을 구축하지 못하면 동적 분석을 진행할 수 없음. 이 과정이 매우 번거롭고 어렵기도 함.
또한 정적분석에서의 '난독화'처럼 동적 분석에 대해서도 '안티 디버깅'과 같은 방해 기술이 존재함.
안티디버깅을 사용하면 자신이 디버깅 당하고 있는지 검사하고, 디버깅중이면 프로그램을 강제로 종료시킬 수 있음.
3-3. 동적분석의 예
윈도우의 대표적인 동적분석 도구로 디버거 중 하나인 x64dbg가 있음. 디버거란 프로그램의 버그를 찾아내고 제거하기 위해 사용되는 도구인데, 이를 이용하영실행중인 어셈블리코드, 레지스터 상태, 메모리와 스택의 값을 확인하며 분석을 진행할 수 있음.
'study_SECURITY > Reversing' 카테고리의 다른 글
Reversing 기초 | DreamHack | Background: Binary (0) | 2022.06.01 |
---|