루트는 일반유저의 파일에 접근 할 수 있습니다. 이 접근을 어떻게 막을 수 있을까요? 그리고 커널에서 막고자 한다면....
task_struct 구조체 정보가 있는 헤더는 어디예요? ㅠㅠ
오늘도 좋은 하루 되세요 커널은 어려워 ㅠㅠ
예를들어 sys_write 등을 가로채서 이 부분을 자신이 원하는 일처리등을 하게 하면 어떠한 사용자든지 디스크 write 작업시 원하는 작업을 할 수있죠.
즉 루트건 일반사용자건 어떠한 것이건 간에 write 를 못하게 할 수도 있고 자신이 원하는 사용자만 write 하게 할 수도 있는 등의 처리가 가능하겠죠.
물론 어떠한 것을 하고자 하느냐에 따라 다르겠지만 자신이 원한는 작업이 마무리 되면 원래의 sys_write 를 하도록 해야할 필요도 있을 것 같습니다.
task_struct 는 sched.h 에 있고요...
커널소스를 수정해서 막을려면 fs/ 쪽에 permission() 계열 함수를 좀 고치면 파일 시스템관련 시스템콜에서 root 를 bypass 못하게 할 수 있고요..
커널 모듈 형태로 구현할려면 윗분 설명 처럼 주요 파일 시스템 콜을 후킹해서 정상 시스템콜로 넘겨주기 전에 root 검사 기능을 추가 하면 될 것 같네요...
from saibi
root는 일반 유저로 원하는 대로 변신(!) 가능합니다.
root에게 비밀을 보장받길 원한다면 암호화만이 답입니다.
root는 일반 유저로 원하는 대로 변신(!) 가능합니다. root에게 비밀을 보장받길 원한다면 암호화만이 답입니다.
------------------ P.S. -------------- 지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
시스템 콜 대체하면 가능하지 않을까요?
예를들어 sys_write 등을 가로채서 이 부분을 자신이 원하는 일처리등을 하게 하면 어떠한 사용자든지 디스크 write 작업시 원하는 작업을 할 수있죠.
즉 루트건 일반사용자건 어떠한 것이건 간에 write 를 못하게 할 수도 있고 자신이 원하는 사용자만 write 하게 할 수도 있는 등의 처리가 가능하겠죠.
물론 어떠한 것을 하고자 하느냐에 따라 다르겠지만 자신이 원한는 작업이 마무리 되면 원래의 sys_write 를 하도록 해야할 필요도 있을 것 같습니다.
task_struct 는 sched.h 에 있고요...커널소스를
task_struct 는 sched.h 에 있고요...
커널소스를 수정해서 막을려면
fs/ 쪽에 permission() 계열 함수를 좀 고치면
파일 시스템관련 시스템콜에서 root 를 bypass 못하게 할 수 있고요..
커널 모듈 형태로 구현할려면 윗분 설명 처럼
주요 파일 시스템 콜을 후킹해서
정상 시스템콜로 넘겨주기 전에
root 검사 기능을 추가 하면 될 것 같네요...
from saibi
root는 일반 유저로 원하는 대로 변신(!) 가능합니다.root
root는 일반 유저로 원하는 대로 변신(!) 가능합니다.
root에게 비밀을 보장받길 원한다면 암호화만이 답입니다.
[quote="cdpark"]root는 일반 유저로 원하는 대로 변신(!
옳소~
그래서 유닉스는 보안운영체제로서의 등급을 받을 수 없었던 것입니다.
해당 사용자로 변신해서 파일을 열어보더라도 암호를 모르면, 내용을
볼 수 없다. 이게 최선입니다.
------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.
댓글 달기