20160920

시스템 보안 개론
* 오늘은 kernel exploit and rooting에 대해 수업할 것. 커널은 어플리케이션에게 하드웨어를 사용할 수 있도록 드라이버를 지원한다. 이 과정에서 커널에 원하는 코드를 삽입할 수 있다.
* 커널은 프로세서(실행 사이클)와 메모리(주소 공간), 그 외 입출력을 관리한다.
* 사용자 어플리케이션은 시스템 콜을 사용해 커널 서비스를 받음. 시스템 콜은 사용자와 커널을 분리하여, 권한을 분리할 수 있다는 장점이 있다. 시스템 콜을 호출할 때 trap 발생함.
* 시스템 콜 테이블을 변조한다면 임의의 주소의 명령어를 실행하도록 만들 수 있다. 시스템 콜 테이블이 보호되고 있다면, 시스템 콜 함수의 앞 부분을 다른 쪽을 실행하도록 변조하면 된다.
* 커널 특권과 루트 특권은 다르다. 커널 특권은 CPU 모드에 의해 결정되며, 루트 특권은 프로세스의 권한이다. 커널 특권이 있다면 루트 특권은 쉽게 얻을 수 있다.

* 잘 알려진 커널 공격
(1) Return to User: 커널이 사용자 메모리 공간을 실행하도록 하는 것. Supervisor Mode Execution Prevention(SMEP)에 의해 방어됨. SMEP는 사용자 메모리 위치를 인지하여, 사용자 메모리 공간을 커널 모드로 실행하지 못하도록 함.
(2) Bypassing SMEP: 커널 코드를 재사용하면 SMEP를 우회할 수 있다. 바로 루트 권한을 얻도록 cred->uid를 0으로 세팅해도 된다.
(3) Race condition: 커널은 공유되기 때문에, 경쟁 조건을 활용한다면 공격 가능하다.

Advertisements
Tagged with: , , , , ,
Posted in 1) Memo

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

누적 방문자 수
  • 91,344 hits
%d bloggers like this: