bufferoverflow 공부중인데 질문이요....

kirina70의 이미지

리눅스 메거진 몇년도인지 모르겠지만 10월호 책이 나와서 이렇게 보고 있는데 질문이 있습니다.

아이뒤가 여러가지로 나뉘드라고요 용도에 따라

real user ID
real group ID
effective user ID
effective group ID
saved set-user ID
saved set-group ID

이렇게 나뉜다고 한거 같은데

effective는 파일과 관련해서 있다고 써 있드라고요 즉, setUIDbit가 되어 있으면 파일소유자가 아니더라도

볼수 있다고

1. 그러면 우리가 로그인 할 때 ID가 두개 오는 것입니까?

real user ID하고 effective user ID 하고

2. 그리고 파일의 소유주이고 setUIDbit가 되어있지 않다면 어떤 방식으로 구분을 하나요

파일 소유주 == real user ID 이래야지 들어갈 수 있는 건가요?

3. 윈도우는 보통 root 개념이 없잖아요.

윈도우 업데이트 할 때 비밀번호 치라는 것도 없고

그렇다면 bufferoverflow공격은 윈도우에서는 무의미 한 것인가요?

즉 그런 파일이 있다 그래도 root가 없기 때문에 전혀 무의미한 파일로 인식 하는 건가요?

4. 10월호에서 소개한 방식은 리턴 어드레스를 다른 값으로 유인해서 바꾸는 방식인데

우분투 페이스트 폰에서 해보니까 안 먹히네요..

한 2초 정도 있다가 그냥 나오네요...

요증 배포판에는 미리 그런 장치를 해놨나요.. 버퍼오버플로우 공격 못하도록 ?

5. 그랬다면 어떤 방식으로 버퍼오버플로우 공격을 못하도록 막아놨나요?

6. 만약 누가 내껄 그렇게 공격을 했다면 성공했는지 실패했는지 알 수 있는 방법은 없나요??

질문이 쫌 난잡한데 대답을 해주시면 감사하겠습니다.

Forums: 
lovian의 이미지

3.
2000이상부터 root개념은 있습니다.
Administrator 권한을 가진 계정에 해당하구요
보통 그런 권한을 가진 계정으로 모든 일을 처리하기 때문에 굳이 root 권한을 요청하지 않아도 이미 root인 겁니다.
때문에 오히려 더 위험한 환경이라고 볼 수도 있죠.

그러나 일반 사용자 계정으로 공격을 시도한다면 bof공격이 의미 있지 않나 생각됩니다.
(윈도우즈에서 setuid비슷한 기능이 있는지는 잘 모르겠습니다.)

4.
어느정도 이상의 배포판부터는 스택가드 같은 기법을 사용한다고 하네요.

5. 그랬다면 어떤 방식으로 버퍼오버플로우 공격을 못하도록 막아놨나요?
bof공격은 대상 프로그램의 스택구조를 예상하고 return address를 변조합니다.
이러한 예상을 쉽게 하지 못하도록 kernel단에서(확실하지않음) stack생성시에 중간중간에 특정데이터(쓰레기값)을 삽입합니다.
꼭 이러한 방법만이 있는 것은 아니구요. 한 예입니다.

6.
대상 application이 logging을 하고 있다면, 어느정도 유추해볼 수도 있을 수 있겠네요. 또는 core 덤프가 발생할 수도 있으니까 core덤프 발생위치를 아무나 건드리지 못하는 곳으로 바꿔도 괜찮을거 같네요.

-----------------
한글을 사랑합니다.

-----------------
한글을 사랑합니다.

neoprog의 이미지

1. 기본적으로 real id와 effective id 는 동일 합니다.
시스템콜이나 관련 명령어로 설정을 바꿀수 있지요.
(시스템콜이나 명령어는 까먹었슴다..T_T)

2. 구분은 ls -al 명령어로 확인이 가능합니다.

/etc/passwd 의 파일이 좋은 예입니다.
(파일은 root 소유이지만, root가 아닌 유저가 파일에 접근이 가능하지요.)

monovision의 이미지

윈도우에서는 setuid 란 개념은 없지만 오버플로우가 전혀 소용이 없는 것은 아닙니다.
일례로 일전에 일어난 그래픽 포맷 관련, 엑셀 및 오피스류, 곰 플레이어 관련 제로데이 어택도 일종의 오버플로우라고 볼 수 있습니다.
즉, 포맷과 일치하지 않는 파일이면 처리를 하지않고 정상 종료를 하여야하지만 제대로 인식을 못해 블루스크린과 시스템의 비정상 종료, 프로세스의 비정상 종료가 있었고 제로데이 패치후에는 실제 공격코드가 공개되었습니다. 이 공격코드에는 특정 서버로 데이터 전송이나 파일 삭제와 같은 것들이 있었구요.
요즘 뜨고 있는 퍼징을 한 번 찾아보시면 좋으실 것 같습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.