본문 바로가기

정보보안

어셈블리어 도전기

우선 도전 계기를 설명하기에 앞서서 정보보안 적용 분야를 3가지로 분류해 보았다.

 

1. 웹

2. 리버싱

3. 시스템해킹

 

정보보안에 관심을 가지기 시작했을 때 어느 부분부터 알아볼까 고민을 많이 했었다.

물론 3가지 분야 모두 제대로 다루기에 나에게는 아직 사전 지식이 많이 부족한 것을 잘 알고 있다.

우선 내가 정확히 무엇을 모르는지를 정리하는 것이 시작점을 결정하는데 도움이 많이 될 것 같아 글로 한번 정리해 보았다.

 

1. 웹 분야

 

사실 웹에 대해서는 아는 것이 거의 없다시피 하다. 가장 기본적인 HTML부터 PHP, ASP, Javascript 등 웹 프로그래밍에 대해서는 프로그래밍 경험이 전무하다. 웹서버를 마련하는 등 웹 프로그래밍을 제대로 사용하기 위해 준비해야 하는 것들이 너무 많다고 판단해서 유용성이 떨어진다고 판단해서 우선순위에서 크게 미룬 것이 가장 큰 이유였던 것 같다. (왜 집에서 남아도는 컴퓨터를 웹서버로 활용하는 아이디어는 왜 진작 생각을 하지 못했을까) 그리고 웹은 통신이 주류라 네트워크 지식도 많이 필요한데, 네트워크에 대해서도 깊게 배워본 적은 사실상 없는 것 같다. 하지만 다행히도 여러 이슈 덕분에 단순 호기심을 바탕으로 통신에 대해 알아본 적은 있었다. 예를 들어 "비밀번호 없는 와이파이는 가급적 사용하지 말라"는 문구를 보고 진짜 같은 공유기에 연결만 하면 상대방의 개인정보를 빼돌릴 수 있을지 궁금해서 가상 환경을 만들어놓고 실험해 본 적도 있었고, 2019년 https 차단 논란이 있었을 당시 '어떤 이유에서 사생활 침해 논란이 발생하는 걸까?', '기존 http 방식에서는 왜 검열 논란이 일어나지 않았을까?', '차단을 위해 사용되는 방법이 과연 최선의 방법일까? 우회 통로는 존재하지 않는 걸까?'라는 궁금증이 생겨서 http(s)의 통신 과정에 대해서도 알아보고 그동안 알아본 것에 대해 보고서를 작성하기도 했었다. 

php 같은 언어로 이루어진 코드를 보면 대충 흐름은 알 수 있긴 하지만, 제대로 공부해본 적은 없으니 많은 제약이 따르는 것은 당연하다. 따라서 네트워크 & 웹 프로그래밍 과목을 제대로 배운 뒤 웹 분야에 도전하기로 마음을 먹었다.

 

2. 리버싱 & 시스템 해킹

 

시스템 해킹과 리버싱이 어떤 과정으로 이루어져 있는지 살펴본 결과 지금까지 관찰한 것만으로는 리버싱은 시스템 해킹의 필요조건이라는 느낌을 받았다. 메모리 구조를 포함한 컴퓨터 구조를 알아야 하고, 무엇보다도 역분석을 위해 어셈블리어가 매우 매우 중요하기 때문이다. 2022년 현재 기준으로 프로그래밍 언어 사용 빈도는 파이썬 1위, C 2위, 자바 3위를 달리고 있다. C언어가 파이썬과 자바보다는 사람 언어와 거리가 멀지만, 실행 속도가 이들에 비해 압도적으로 빠르기 때문에 C언어는 아직도 많이 쓰이고 있다. 실행 파일로 만들어진 프로그램이 있을 때 이 실행 파일을 소스코드로 다시 되돌리는 작업을 디컴파일이라고 하는데 자바와 파이썬은(exe 파일로 만드는 모듈을 통해서 만들었을 때) 사람이 알아볼 수 있는 소스코드로 되돌리는 것이 가능하다. 하지만 C언어는 불가능하다.. 물론 자바랑 파이썬도 손실되는 정보는 있긴 하지만 C언어는 컴파일될 때 소스코드에서 손실되는 정보가 매우 많다. 따라서 원래의 소스코드로 보는 것은 어렵고, 어셈블리어로의 변환을 통해 프로그램의 흐름을 분석해야 한다

 

 

결국 웹 언어나 어셈블리어나 새로 배워야 하는 거는 똑같다. 하지만 어셈블리어는 C언어와의 대조를 많이 해야 하니 그동안 배웠던 C언어를 복습할 수 있다는 큰 장점이 있다. 그리고 메모리 구조에 대해서는 C언어 수업시간에 대해 들은 것도 꽤 있으니 어셈블리어 분석에 많은 도움이 될 것 같다

 

 

index | TIOBE - The Software Quality Company