2022 CodeEngn Conference

2022. 7. 9. 21:1822-여름방학/기타

1. Android static taint analysis

https://www.youtube.com/watch?v=tSmgW62lYb4 

 

애플리케이션의 수가 많아지면서 분석해야 할 애플리케이션의 수 역시 점차 증가하고 있다. 그리고 다른 애플리케이션에서 코드의 일부만을 바꾸는 악성 애플리케이션 역시 증가하고 있다. 따라서 악성 애플리케이션을 탐지하는 기법인 자동화 탐지가 필요하다.

Static taint analysis 기법은 이런 악성 애플리케이션을 자동으로 탐지하는 기법이다. 그러나 애플리케이션과 자바 언어의 특성 상에 차이점이 있기 때문에 이 기법을 Android application에 적용하기가 어렵다. 그래서 만든 기법이 Flowdroid 기법이다. 이 기법을 사용하면, 1 개의 애플리케이션을 탐지하는 데 10분 내외의 시간 밖에 소요되지 않는다. 이 기법으로 짧은 시간 안에 사용자의 개인 정보를 유출하거나 해킹을 시도하는지를 파악할 수 있다.

 

Taint analysis : 신뢰할 수 없는 데이터의 프로그램 내부 흐름을 분석하는 기법이다.

Dynamic 기법은 코드 실행 환경 구축이 까다롭고, 시간이 오래 걸리기 때문에 dynamic 기법보다 static 기법을 많이 사용한다. static 기법은 코드 커버리지가 높다는 장점이 있다.

따라서 android application에서 상대적으로 static analysis기법이 많이 사용되었으나 main entrypoint가 없기 때문에 적용에 어려움이 있다.

 

Flowdroid 기법을 통해 알아보는 static taint analysis

Considerations 1 -  Android specific features

  • Android framework modeling
  • Component lifecycle
  • Inter-component communication(ICC)
  • Native code

Considerations 2 - Sesitivities

  • Flow sensitivity
  • Object sensitivity

Other Considerations

  • Implicit flows
  • Java-specific features

Flowdroid 기법은 2014년에 발표된 android application static taint analysis 도구이다.

이 기법은 업계와 학회에서 여전히 사용되고 있고, 현재까지 업데이트 되고 있는 유일한 도구이다.

Flowdroid는 soot를 이용해서 java bytecode에서 jimple로 변환하고, callgraph 생성을 지원한다.

Flowdroid는 component lifecycle을 고려한 모델링 기법으로 컴포넌트들은 androidmanifest.xml에 등록되어 있다.

Taint propagation rules에는 taint 전달 규칙과, normal flow, call flow, return flow, call-to-return flow가 있다.

 

2018년까지 연구 발전의 climax로 대표적인 도구들의 성능을 비교하려는 연구들이 등장하고, static analysis의 challenge들을 해결하려는 연구들이 등장했다.

2019년부터는 Energy Leak, 머신러닝 등의 다양한 분야로 발전하기 시작했다.

 

static taint analysis의 한계에는 native 라이브러리의 비중 증가와 정확도 및 시간에서의 문제점 등이 있다.

 

 


2. IP카메라, 환경 구축부터 취약점 분석까지

https://www.youtube.com/watch?v=LUAA87lcB14 

IP 카메라 : Internet Protocol의 약자로, 내부적으로만 영상을 볼 수 있는 cctv와는 달리 인터넷만 연결되어 있으면 카메라로 영상을 볼 수 있다는 장점이 있다.

IP 카메라는 보안의 목적으로 이유로 다른 서버를 거치는 폐쇄성의 특징을 갖고 있다. 특히, 폼웨어가 노출되는 것을 더 신경쓴다. 내부적으로 서버에서 폼웨어를 받아 업데이트하는 기능을 넣어서 모든 기기들이 업데이트되고 폼웨어는 노출되지 않는 방법을 사용한다. 또한 공격을 당했을 때 사생활이 노출될 수 있어 위험도가 높다.

 

-IP 카메라 보드 구조

  • 앞면 : 렌즈, SD카드 소켓, 플래시 메모리
  • 뒷면 : SOC

 

-IP 카메라 서비스 구조

 

-IP 카메라 분석환경 구축

  • Static Analysis : 펌웨어 추출 (라즈베리 파이와 flash 칩 연결, flashrom을 통해 flash 데이터 읽기, binwalk를 통해 파일시스템 추출)
  • Dynamic Analysis : IP 카메라 내부 쉘 접근 (파일시스템 내에 telnetd 바이너리 삽입, rcS스크립트와 shadow 파일 수정, 수정한 펌웨어 flash에 쓰기), gdbserver (파일시스템 내에 gdbserver 바이너리 삽입, 수정한 펌웨어 flash에 쓰기, gdb-multiarch로 디버깅)

 

-IP 카메라 취약점 분석  

1번째 구조 : IP카메라의 열려있는 포트를 대상으로 사용자인 척하면서 접근하기

2번째 구조 : IP카메라와 서버가 통신하는 부분을 대상으로 서버인 척하면서 접근하기

 

-분석 프로세스

  • /etc/inittab : 시스템 init 및 shutdown에 실행되는 명령어가 담긴 스크립트
  • /etc/init.d/rcS : 시스템 init에서 inittab에 의해 실행되는 쉘 스크립트
  • init 스크립트 확인 : inittab -> rcS -> 서비스 바이너리
  • 서비스 바이너리 보호기법 확인
  • TCP 소켓 통신
  • 통신 함수 분석