안티 탬퍼링 : 위변조 방지
인턴 생활하며 회사에서 보안 전공을 살려 안티 탬퍼링에 대해 정리해달라고 하셔서 정리 후 작성한 내용이다.
기본 개념
- 안티 템퍼링이라는 용어 자체가 메모리 레벨에서 조작을 방지하는 것을 말한다고 한다.
- 보안쪽에서 중요한 개념은 얼마나 보안 요구사항을 만족하느냐가 1순위이긴 하지만 계산의 효율성도 생각해야한다. 그 사례로 웹사이트 로그인시 아무리 보안이 단단해도 암호화한다고 로그인하는데 30초씩 걸린다면 사용자가 없을 것이기 때문임. 다만 국방쪽은 일반적인 경우보다 보안에 더 무게를 둬도 될 것이라 생각된다.
보호 대상
1. 운영체제에서 동작하는 SW
- 이 경우에는 동작하는 운영체제에 대한 이해가 굉장히 중요하다. 삼성 Knox의 경우에도 안드로이드라는 운영체제가 대중화되어 있고, 많이 분석되었기에 개발이 수월했던 것이다.(동일하기 리눅스 기반 운영체제를 사용한다고 우리도 이 이점을 누릴 수 있을 것)
- 예시 1) 삼성 Knox
- 운영체제에서 동작하는 SW를 개발하는 방식(아주대 포렌식(안티 템퍼링 공격기법으로 봐도 될듯합니다) 강의 발췌)
삼성 녹스 : https://www.samsung.com/sec/sustainability/popup/popup_doc/AYS8NaaKWPIAIyC3/
2. non-os(DSP)에서 동작하는 Firmware (운영체제 동작시키는 부트로더 까지도 확장 가능)
- 펌웨어 쪽은 동작방식을 몰라서 예상이 잘 안가긴 하지만 대부분의 무기체계들은 임베디드 단위로 만들어지는 것으로 알고 있다.
안티탬퍼링의 동향 및 발전 방향 연구 , 2023.09 논문 요약
안티탬퍼링의 동향 및 발전 방향 연구 - 한국산학기술학회 논문지 - 한국산학기술학회 : 논문 - DBpia
하드웨어 안티탬퍼링
신뢰 실행 환경을 지원하는 칩을 사용하거나, 부채널 공격에 강력한 칩을 사용하는 등 칩 레벨에서 제공하는 기능 외에는 봉인지 부착, 다양한 형상의 나사를 사용하거나, 센서를 활용하여 무단 개봉이 감지될 경우 저장장치를 파괴 혹은 초기화하는 방식이 있다.
소프트웨어 안티 탬퍼링(리버싱이라고도 불림 : 리버싱이 안티 탬퍼링 보다 큰 범위)
소프트웨어 역공학 분석으로 인한 위변조를 막는 방법
1. 예방 : 위변조 예방 (데이터 획득이 어렵도록)
- 암호화 및 난독화를 적용하여 데이터를 숨기거나 복잡도를 증가시켜 유효 데이터의 획득을 어렵게 만듬
- 무기체계 암호화의 경우 국가 표준이 있을 것임.
- 무기체계 안티탬퍼링을 위한 소프트웨어 소스코드 난독화 도구 구현 이라는19년도 LIG 논문이 있습니다. *https://www.dbpia.co.kr/journal/articleDetail?nodeId=NODE08140454 읽어보니 난독화 알고리즘을 구현한 것에 대해 설명하는 논문으로 보입니다.
- 데이터 변형 ,은닉 기술을 적용하여 데이터를 숨기거나 복잡도를 증가시킨다.
2. 탐지
- 인증, 접근 제어, 무결성 검사로 위변조 탐지
3. 대응
- 공격 탐지 후 로그 분석, 모니터링 강화, 복구, 취약점 패치, 저장장치 리셋과 같은 사후 보안 강화 기술
4. 억지 : 대부분의 소프트웨어 안티탬퍼링 기법
- 공격 시도 자체를 막는 방법으로 해시코드, 체크섬, 스템프 등으로 무결성을 검증하여 공격을 사전에 억지한다.
5. 브레인 스토밍(아무거나 생각나는 것)
- 메모리에 기록이 남는 것이 문제라면 Wipping이라는 기계으로 메모리 전체 데이터를 쓰레기 데이터로 덮어씌우는 것이 가능하다. - 다만 시간이 굉장히 오래 걸리며, 디스크를 재사용 가능하게 지우는 방식이기 때문에 굳이 소프트웨어적인 완전삭제가 필요할까라는 생각이 듭니다.
- 그래서 물리적으로 데이터를 날리는 것도 가능한데, 강한 자석을 사용하거나 강한 자기장을 보내 저장된 데이터 전체를 날리는 물리적인 방법도 있습니다. (디가우싱 기법) 이 경우는 저장매체 자체가 파괴되는 방식이기에 복구가 불가능합니다.
- 소프트웨어 접근 자체를 정해진 경로가 아닌 경로로 접근시 바로 위에서 말한 방법들로 데이터 전체를 삭제하는 방안은 어떤지..? 네트워크 포트로 접근을 제한하듯이 정해진 경로 및 순서로만 파일이 실행되도록 제한을 두는 방법
- 접근권한에 구멍을 만들어 데이터를 빼가는 백도어 기법이 무기체계 공격방식으로 사용되는 한 사례일 것으로 보이는데, 애초에 백도어를 만들기 위해 파일 변경이 필요하기 때문에 파일 전체의 변경 감지 혹은 접근을 위해 추가적으로 열어둔 포트, 프로세스 감지를 통해 탐지가 가능하다.
- 그렇기 때문에 정상 프로세스에서 벗어날 경우 강제 종료 후 소프트웨어 리셋하는 방법이나 파일변경 감지 후 동일하게 강제 종료, 소프트웨어 리셋하는 방법이 있다.