ps 에 안나오게 하려면?

무혼인형의 이미지

실행 된 프로그램이 ps x를 했을때 안보이게 하는 방법이 있나요?

mach의 이미지

허접한 답변인데요. 해킹하면 되겠지요.
1) ps를 새로 짠다. 이 프로그램에서는 특정 프로세스가 목록에 나오지 않도록한다.
2) 원본 ps는 적절히 백업한다.
3) 새로만든 ps프로그램을 적절한 위치에 설치한다(backdoor?)

------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.

yavis의 이미지

sys_execve() 시스템 콜 서비스 루틴을 후킹하는 겁니다.

ps 역시 위의 시스템 콜 서비스 루틴을 수행할테니까,

후킹함수에서 특정 프로세스에 대한 처리를 삽입해주어서,

/proc 디렉토리에서 정보를 찾지 못하게 하는 것쯤은 껌이겠지요..

시스템 콜 후킹 방법은 다른 여러 문서들에 나와있지요? ^^

그런데, 자신이 가지고 있는 리눅스 머신이 sys_call_table이라는 symbol을

export하고 있지 않는다면 그건 그렇게 쉬운 문제가 아니지요.

시스템 콜 후킹이 어려우니까요..(뭐 강제로 export해서 커널을 다시 컴파일

하는 방법이 있긴하지만 시간도 오래걸리고,..하니)

사용하고 계신 리눅스 머신의 커널이 2.5.x 커널이라면 혹시 LSM hook을

권해드리고 싶습니다만(sys_call_table이 export되어있지 않아도 시스템콜

서비스 루틴 내에 hook을 끼워 넣을수 있게 하는 새로운 2.6 커널의 특징이지

요. 2.4.x 커널에서도 패치형식으로 제공한다는 말도 들었습니다.)

위에 말씀하신 것처럼 아예 ps를 새로이 짜는 것도 방법이겠네요.. ^^

그럼..

Follow the way of your heart
And whatever your eyes see,..

무혼인형의 이미지

답변 감사 합니다 :)

후킹.. 까지 할 필요는 없겠다 싶어서..

ps는 다른데다 숨겨 놓고 awk를 이용해서 쉘로 새로 만들었네요..

보안과 해킹은 종이 한장 차이 라는 말이 생각나네요.. :o

cdpark의 이미지

무혼인형 wrote:
답변 감사 합니다 :)

후킹.. 까지 할 필요는 없겠다 싶어서..

ps는 다른데다 숨겨 놓고 awk를 이용해서 쉘로 새로 만들었네요..

보안과 해킹은 종이 한장 차이 라는 말이 생각나네요.. :o

누군가 ps 바이너리만 가져오면 원래의 정보를 볼 수 있을텐데요?
그리고 ps 말고도 top 등에서도 안 보이게 해야 할테고요.

차라리 프로세스 이름을 뻔한 것(!)으로 바꾸는 건 어떨까요? ps에서 apache라고 보이면 웹 서버라고 생각하겠죠? :P

무혼인형의 이미지

cdpark wrote:
누군가 ps 바이너리만 가져오면 원래의 정보를 볼 수 있을텐데요?
그리고 ps 말고도 top 등에서도 안 보이게 해야 할테고요.

차라리 프로세스 이름을 뻔한 것(!)으로 바꾸는 건 어떨까요? ps에서 apache라고 보이면 웹 서버라고 생각하겠죠? :P


용도가 조금 특별 하거든요 8)
플레시롬에 "나름대로 임베디드" 리눅스를 넣어서 네트웍 장비를 만드는데요.
임대 할때는 문제가 없지만, 판매가 될때는 노출되는 정보가 많아서요..
핵심이 되는 프로그램만 간단히 숨길려고 하는거죠. :?
xfmulder의 이미지

ps 를 awk 로 짜서 /bin/ps 에 넣어 둔다 해도
누군가 file /bin/ps 하면
..텍스트.. 라고 나오지 않을까요?

awk보다는 차라리 c 로 숨겨둔 ps 를 부르고 특정 프로세스명은 숨기도록 하는게 어떨지 ...

내 자식들도 나처럼 !!

advanced의 이미지

루트킷들 중에는 자신을 숨기기 위해 ls 나 ps 등등을 변조된것으로 교체해서

자신의 프로세스나 디렉토리 파일을 숨긴다고 봤었는데 혹시 그런용도로? -_-;

농담입니다 :P

한번 읽어보시면 숨기는데 도움이 되실 수도 있겠네요

http://www.certcc.or.kr/tools/Chkrootkit.html
http://www.certcc.or.kr/paper/incident_note/in2000004.html

- Advanced -

무혼인형의 이미지

악의적인 크래킹 까지는 막지 못하겠지요. :( 장비 자체가 그사람에게 '판매' 되었으므로 root권한을 준거나 다름 없지요.

제 의도는.. 쉽게 포기하도록 하는데 있는 거거든요오~ (차범근스타일로)

charsyam의 이미지

yavis wrote:
sys_execve() 시스템 콜 서비스 루틴을 후킹하는 겁니다.

ps 역시 위의 시스템 콜 서비스 루틴을 수행할테니까,

후킹함수에서 특정 프로세스에 대한 처리를 삽입해주어서,

/proc 디렉토리에서 정보를 찾지 못하게 하는 것쯤은 껌이겠지요..

시스템 콜 후킹 방법은 다른 여러 문서들에 나와있지요? ^^

그런데, 자신이 가지고 있는 리눅스 머신이 sys_call_table이라는 symbol을

export하고 있지 않는다면 그건 그렇게 쉬운 문제가 아니지요.

시스템 콜 후킹이 어려우니까요..(뭐 강제로 export해서 커널을 다시 컴파일

하는 방법이 있긴하지만 시간도 오래걸리고,..하니)

사용하고 계신 리눅스 머신의 커널이 2.5.x 커널이라면 혹시 LSM hook을

권해드리고 싶습니다만(sys_call_table이 export되어있지 않아도 시스템콜

서비스 루틴 내에 hook을 끼워 넣을수 있게 하는 새로운 2.6 커널의 특징이지

요. 2.4.x 커널에서도 패치형식으로 제공한다는 말도 들었습니다.)

위에 말씀하신 것처럼 아예 ps를 새로이 짜는 것도 방법이겠네요.. ^^

그럼..

export 되 있지 않더라도 /proc/syms (맞나?) 여기서 메모리 주소를 찾아서

훅할 수 있습니다. ^^ 고운 하루되시길...

=========================
CharSyam ^^ --- 고운 하루
=========================

yavis의 이미지

음..과연 2.4.x 커널에서 /proc/ksyms를 보면 sys_call_table의 주소를 찾을수 있네요. 그치만 그 주소를 가지고 어떻게 훅을 끼워넣을수 있는지,

좀더 자세히 설명해주시거나, 자료를 얻을 수있는 곳에대한 정보를 얻을수 있을

까요?? 부탁드립니다. ^^ 개인적으로 관심이 많거든요.

참.

그리고 2.6.x 커널에서는 그 방법도 소용이 없을 듯하네요.

/proc/ksyms 자체가 사라져 버리니까요.. ^^

아마 토발즈는 백도어나, 트로얀 , 루트킷들에 대한 원천봉쇄를 원한게 아닌가

싶네요. immunix의 LSM 도 그래서 채택된듯 싶구요.. (오로지 제생각입니다.)

Follow the way of your heart
And whatever your eyes see,..

arbell의 이미지

yavis wrote:
음..과연 2.4.x 커널에서 /proc/ksyms를 보면 sys_call_table의 주소를 찾을수 있네요. 그치만 그 주소를 가지고 어떻게 훅을 끼워넣을수 있는지,

좀더 자세히 설명해주시거나, 자료를 얻을 수있는 곳에대한 정보를 얻을수 있을

까요?? 부탁드립니다. ^^ 개인적으로 관심이 많거든요.

제가 예전에 다른 게시판에 적었던 글을 인용해 봅니다.

Quote:
RedHat 배포판에서는 커널 2.4.18 부터 sys_call_table 변수를 export 시키지 않는다.
따라서 모듈 프로그래밍시 이 변수에 대한 심볼 테이블이 없기 때문에 사용하는데 제한이 있다.

sys_call_table 변수를 사용하는 방법에는 커널 재컴파일이라든지 여러가지가 있지만,
가장 빠른(?) 방법을 소개한다.

커널 변수의 주소를 직접 이용하는 방법이다.

먼저 사용하고자하는 변수가 심볼테이블에 정의 되어 있는지 확인한다.
# cat /proc/ksyms | grep sys_call_table

정의가 되어 있지 않다면 아무런 결과도 나오지 않는다.

objdump 를 이용하여 커널 이미지를 덤프한다.
# objdump -x vmlinux-2.4.20-8 | grep sys_call_table

이렇게 하면 결과값으로 메모리 위치가 나타나게 된다.
그 메모리 위치를 프로그램 내에서 사용하면 된다.
void **sys_call_table = (void **) 0xXXXXXXXX;

이상 ~^_^
모듈 프로그래밍하다가 export 안된 변수의 사용에 대해서 적어 보았습니다.

아름다움이란... 열정

dubhe의 이미지

1. 프로세스이름을 딴걸로 바꾼다.

argv[0]을 crond 뭐 이런걸로 바꿔서 헤깔리게 만드는 방법....

2. ps프로그램을 조작
전형적인 백도어가 이런방법을 사용합니다.

3. 커널함수 조작
근데 Linux의 ps프로그램은 특이하게../proc밑에 를 사용해서 정보를 가져오네요...

strace로 보면 그냥 /proc/<PID>/cmdline 같은 정보를 open()해서 보여주네요..
SYS_open()을 후킹해서 /proc밑에 특정 부분을 접근했을때 튕기게 해주면 될것 같습니다.

sys_call_table을 후킹해서 쓰는건...LKM백도어 만드는 문서들 참조하시면 쉽게 하실수 있으실 겁니다.

LKM으로 올리면 lsmod하면 나오는데..뭐 이것도...숨기는 방법도 역시 존재하니...그렇게 쓰시면 됩니다~

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.