리버스 엔지니어링
기본 개념
리버스 엔지니어링(Reverse Engineering)은 흔히 역공학이라 번역되며, 장치나 시스템의 구조를 분석하여 원리를 발견하는 과정을 말함
원래 상업적이나 군사적으로 하드웨어를 분석하는 것에서 시작되었으나, 소프트웨어 보안 분석에서도 자주 사용됨
리버스 엔지니어링의 목적은 어떤 대상을 생산하기 위한 지식이나 절차가 거의 없는 상태에서, 최종 제품을 통해 설계하는 과정을 역추론하는 데 있음
리버스 엔지니어링 공격
공격자는 리버스 엔지니어링을 통해 공격 대상 시스템 또는 응용 프로그램에 대한 분석을 수행할 수 있음
이를 통해 해당 시스템이나 응용 프로그램이 갖고 있는 취약점을 찾아내고, 이를 악용할 수 있는 익스플로잇(Exploit) 코드를 생성할 수 있음.
리버스 엔지니어링을 통해 악성코드를 분석하거나, 시스템의 보안 메커니즘을 우회할 방법을 발견할 수 있음.
리버스 엔지니어링에 대한 대응책
프로그램 코드를 읽기 어렵게 만드는 기술로 난독화의 대상에 따라 소스코드 난독화와 바이너리 난독화로 구분함
소스코드 난독화는 C/C++/JAVA 등의 프로그램 소스코드를 알아보기 힘들게 만드는 기술이며, 바이너리 난독화는 컴파일 후 생성된 바이너리를 분석하기 어렵게 변조하는 기술을 말함
코드 난독화는 공격자가 코드의 가독성을 낮춰 분석을 어렵게 하거나, 패턴/시그니처 기반 보안 장비의 탐지를 우회할 목적으로 사용됨. 패턴/시그니처 기반 보안 장비란 악성 코드나 공격을 특정 패턴을 기반으로 탐지하는 보안 장비를 의미하며, 난독화된 코드는 이 장비들의 탐지를 피할 수 있음
루트킷(Rootkit)
개요
루트킷은 시스템에 설치되어 그 존재의 흔적을 최대한도로 숨기면서 공격자가 언제든지 시스템에 관리자 권한으로 접근할 수 있도록 비밀 통로를 지속적으로 유지해 주는 일련의 프로그램 집합을 말함
이로써 공격자는 운영체제의 모든 기능과 서비스를 제어할 수 있게 됨. 루트킷은 시스템 콜을 가로채거나 파일 시스템을 변조하여 공격자가 숨겨놓은 악성 코드를 은폐할 수 있음
자신의 존재를 숨기기 위해서 시스템을 많이 변경하게 되며, 사용자가 자신의 시스템에 루트킷이 들어와 있는지 혹은 루트킷이 어떤 변경을 했는지를 알기 매우 어렵게 만듦
루트킷의 확인
공격자는 자신의 행동을 숨기기 위해 정상적인 프로그램을 대신하도록 바이너리 파일을 변조시키는 경우가 많음. 예를 들어 ls를 바꿔치기해서 ls를 실행시켜도 공격자가 만든 파일이 보이지 않도록 함. 주로 많이 변조되며 루트킷이 포함된 프로그램은 ls, ps, netstat, login, top, dir, du, ifconfig, gind, tcpd 등이 있음
루트킷을 찾기 위해서는 시스템 프로그램의 파일 크기, 생성 시간, 변경 시간 등을 확인하는 방법이 있음. 예를 들어, /bin 또는 /usr/bin에서 #ls -alct|more 명령어로 확인했을 때, 기본적으로 설치된 시간과 다르게 변경된 파일이 있는지 확인함. 또 다른 방법은 파일의 해시값을 비교하여 변조 여부를 확인하는 방법도 있음
트로이목마로 자주 변조되는 ls, ps, netstat 등의 파일은 똑같은 OS 버전의 다른 시스템 파일 크기를 비교하여 변조 여부를 확인함
논리폭탄(Logic Bomb)
논리폭탄은 특정한 사건이 발생할 때 프로그램이나 일련의 코드를 실행하는 악성 코드로, 보통 사용자가 특정한 행위를 수행할 때 이를 트리거(Trigger)로 하여 실행됨. 예를 들어, 네트워크 관리자가 해고될 때 기업의 전체 데이터베이스를 삭제하는 프로그램이 설치될 수 있음
논리폭탄은 다양한 트리거 조건을 가질 수 있음. 예를 들어, 특정 시간에 실행되거나, 특정 파일이 삭제될 때 실행되도록 설정할 수 있음. 또한, 시스템의 포렌식(Forensics) 활동이 시작될 때 모든 디지털 증거를 삭제하도록 설정할 수도 있음. 이는 공격자의 신원과 방식을 숨기고, 수사를 방해하려는 의도를 가지고 있음
'정보보안 > 시스템보안' 카테고리의 다른 글
시스템 보안위협 시스템 자원고갈 공격 (0) | 2025.02.25 |
---|---|
시스템 보안위협 백도어 (0) | 2025.02.24 |
시스템 보안위협 레이스 컨디션 공격 (0) | 2025.02.23 |
시스템 보안위협 포맷 스트링 공격 (0) | 2025.02.22 |
시스템 보안위협 버퍼 오버플로 공격 (0) | 2025.02.21 |