20161004

1. 시스템 보안 개론
* ROPGuard는 heuristic에 기반하여 ROP를 방어하는 방법. stack pointer가 올바른 범위 안에 있는지, critical function의 주소가 stack에 나타나는지, return address가 call 이후 주소인지 등을 확인한다. ROPGuard는 대표적인 coarse-grained CFI 기법이다. stack pivoting은 stack을 덮어쓰지 않고, esp를 덮어쓸 수 있는 영역을 가리키도록 하는 것.
* kBouncer는 last branch record(LBR)를 활용해 ROP를 방어하는 기법. jmp, return 등이 발생하면 LBR stack에 해당 주소가 쌓인다. return 명령어에 의해 실행되는 곳의 명령이 call 이후에 발생하는 명령이 아니라면 악의적이라고 판단할 수 있다. 또는 gadget의 길이가 짧은 것이 계속된다면 ROP라고 판단할 수 있다. kernel 영역에 넘어가는 순간 지난 branch를 LBR에서 확인하고, ROP 공격인지 아닌지 파악한다. 조금 더 구체적으로는 user library를 호출하는 시점에 LBR을 확인하고, user library에서 kernel space로 넘어가는 시점에서 user library가 kernel 함수를 호출하는지 확인한다.
* Compiler를 사용해 binary rewriting을 수행함으로써 coarse-grained CFI를 수행할 수도 있다. 하지만 재컴파일할 수 없는 경우에는 방어할 수 없다는 문제가 있다. 재컴파일할 수 없는 경우에도 실행 코드를 후킹하여 패치할 수도 있지만, 실행 코드에 여유 공간이 없다면 패치 불가능하다. Binary instrumentation을 할 수도 있지만, 오버헤드가 크다. 따라서 LBR stack을 보는 것이 성능 향상 및 보안성 향상에 유리하다. Binary rewriting을 할 수 없을 때 쓸 수 있는 방법? (문제). Binary instrumentation과 LBR stack investigation의 비교? (문제).
* Illegal return (call preceded 되지 않는 곳으로 리턴), short gadget detection으로 방어함. 이를 우회하기 위해서는 gadget을 길게 하거나, legal return을 강제로 만들어주면 된다. long gadget을 방어하기 위해서는 gadget의 entropy를 보는 방법을 사용할 수 있다. gadget chaining을 깰 수 있는 방법을 서술하시오 (문제). long gadget. long gadget의 문제점?(문제). # of register state change가 적다. 이러한 것을 깰 수 있는 방법? (문제). entropy가 큰지 작은지 본다.
* ROPecker는 ROP 확인을 매번 하는 것이 아니라, sliding window를 둔다. ROP gadget은 locality가 떨어진다는 특징을 갖는다. 공격자가 원하는 gadget들은 locality가 떨어진다는 특징을 갖기 때문이다. 따라서 sliding window를 두고, 해당 window가 변경될 때에만 ROP를 검증한다.
* XnR 방어에서도 ROPecker의 locality 특성을 살릴 수도 있다. 특정 범위 내에서 실행될 때에는 해당 페이지를 readable하게 설정해주고, 다시 다른 범위로 flow가 이동한다면 not valid하게 만들면 된다.
* 아래의 binary rewriting 기법에 대해 이해하기 (시험). Control-Flow Integrity: Principles, Implementations, and Applications 논문 참고 바람.

control flow integrity binary rewriting.PNG

* ret 10h: 스택 16바이트 지우고 리턴한다.


2. X11 forwarding
수업을 다녀오니 리눅스 데스크탑의 그래픽이 맛이 가 있었고, 아무리 봐도 원인을 파악하기 힘들었다. 강욱이 형이 X11 forwarding을 사용해보라 하셔서 사용했는데, 무지 마음에 들었다. 이 블로그를 참고해서 설정했고, Xshell에서의 설정은 이 페이지를 참고했다. Xmanager가 아닌 Xdisplay로 설정해야 함.

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

누적 방문자 수
  • 98,779 hits
%d bloggers like this: