'시스템/리눅스일반'에 해당되는 글 5건

  1. 2013.03.08 리눅스 OS bit 확인
  2. 2009.11.12 리눅스 커널
  3. 2009.11.03 Linux Kernel Map
  4. 2009.10.07 Bindshell+Trinoo
  5. 2009.10.05 ftpusers 파일이 있는가? 있다면 권한 설정은 적절한가?
시스템/리눅스일반2013. 3. 8. 11:28

[search@search_1040 ~]$ getconf  LONG_BIT
64
[search@search_1040 ~]$ uname -m
x86_64

Posted by 김주일
시스템/리눅스일반2009. 11. 12. 13:25

작성자 : 권수호
제목 : Linux Kernel Internal & Embedded Linux 
 
저자의 말 
 
난  아마추어다.  난  아마추어이기에 기꺼이  이런 글을  쓸  수 있다. Linux는  그런  아마추어가  만든 것이며,
이젠  서서히  상업  시장으로의  발길을  재촉하고  있다.  어려운  용어들이  난무하고  디지털이  어쩌구  한다.
Linux는  어쩌면  이러한  어려운  용어들  속에서  쉽게  개발자와  친근해  질  수  있는  친구로서,  네트워크화
된  사회에서 나올 수 밖에  없는  필연적인  결과 물( 혹은 중간  결과  물 ) 일지도  모른다.
 
예전에  군대를  갔다가  복학했을  때가  생각난다.  숙제를 FTP를  이용해서  제출하라는  말에,  멍한  눈으로
교수를  응시했다가,  옆에  앉은  후배를  다그쳐서  그게  뭔지를  알게  되었을  때이다.  결국  난  숙제를  그냥
디스켓에  담아서  냈다.  인터넷은  그렇게  내게  별로  관대하지  못했다.  복학생이  뭘  알기에...  조금  더
후에  친구  녀석이 Linux라는  것을  디스켓으로 70여장에  가깝게  주었을  때,  이게  어떤  것인가를
고민하다가 X-Window까지  올리는데  무려 3개월이  걸렸다.  친구  녀석은  내게서 3개월간의  밤을  빼앗아
갔던 것이다.  요즘은 1시간도 안될  꺼리를... 그 좋은 CD-ROM을  두고서  말이다.
 
결국  난  지금에서야  인터넷의  도움으로  쇼핑도  하고,  책과  자료들도  찾고 ADSL로  집에서  상영되지
않은  영화도  열심히  다운  받아서  본다.  바로  이  편리함  속에서  그  방대한  양의  지식들이  불과  몇  초
사이에  지구를  몇  바퀴나  돌고  있는  것이다.  아직  인터넷의 “인”자가  참을 “인”자로  생각되는  곳에서도
많은  사람들이 Linux의  코드를  열심히  분석하고  있고,  더  나은  것을  만들려고  노력하고  있다.  난  그
중의  한  사람이며  그들  개발자들보다  더  많이  알지도  못한다.  다만  그들의  지적  노력의  산물을  내
나름대로  분석하고  내  나름대로  정의해서 보고  있을  뿐이다.
 
이  글을  읽는  사람이라면,  적어도  책의  첫  몇  페이지는  넘긴  사람일  것이다.  그런  사람들을  위해서  책의
내용이  어떤  것을  말하는  지를  알리고자  다음에  몇자  적어본다.  참고하기  바라지만  절대적인  기준은  못
된다. 
 
이런 사람이라면 이 글을  읽어볼 만 하다고  생각한다. 
 

  • 밤이 깊어도 잠이 오지  않아  이리저리 뒤척이는  사람.
  • 인터넷에  널린  문서들과  서점의  외국어  책  가판  대에  진열된  많은 Linux관련  도서를  다  읽기는
    싫고,  영어실력도  못  따라가는  사람.  그렇다고,  영어  공부도  할  수  없는  사람.  하지만,  기본적인
    영어는  아는 사람이며, 적어도 영한  사전을 책상  위에  하나쯤은 두고 사는  사람.
  • 적어도 Linux를  가지고  밥을  먹고자  하는  사람.(아마  나  자신일지도  모른다.  하지만  배가  고픈
    것도 사실이다. ^^;)
  • 인터넷  서점에서 Linux를  키워드로  책을  찾았지만, next라는  표시와  함께  한도  끝도  없이  많은
    책들로  어떤  책을  사야  할지를  고민하는  사람.  그리고,  그  많은  책들을  다  볼  시간도  없는
    사람.


하지만., 정작  책장을 넘기면  이런 사람들이 읽어야 할  것이다.  
 

  • Linux는  설치하고 ls와 cd를  칠  줄은 알지만,  더 많은 것을  알기를 원하는 사람.
  • 실제적인  개발에 조금이라도 도움을 원하는  사람.(정말 조금  밖에는 도움이 안될지  모르지만)
  • 디바이스  드라이버  입문  책은  다  보았지만,  정작  구현하려고  관련된  소스  코드를  찾았지만
    뭐가 뭔지  구분이 안 되는  사람. 


하지만,  이런  사람에게는 다른 책을  권하고 싶다. 
 

  • Linux를  이용하지만,  커널이나 기타  구조에 대해서는  관심이  없는  사람.
  • Linux  명령어를  배우려고 공부하는  사람.
  • C  언어는  알지만 Hello world이외의  프로그램을  해본  경험이  없거나, Assembly어는  노가다를
    좋아하는  사람만 한다고 생각하는  사람.
  • 운영체제를 자세히  알거나, 운영체제의  이론을  처음으로  배우려고 하는  사람.
  • 기타등등의 앞에서  나열한  사람들에 속하지  않는 사람들. 


어쨌든  어떤  사람들에게는  유용한  자료가  될  것이지만,  다른  사람들에게는  치명적인  자료가  될지도
모른다.  헛된  시간을  낭비하지  않기를  바란다.  이제  이  책은  내  책상  위의  컴퓨터  속에  한  폴더를
벗어나  세상으로  나가려고  한다.  내  목소리를  흉내내지만  내가  아니며,  나의  글  쓰는  스타일을  틀어쥐고
있지만  나의  밥  먹는  스타일은  아니다.  잘못된  지식을  전파하는  것은  나쁜  일이기에  섣불리  꺼내
놓기가  두려운  것도  사실이다.  그럼에도  불구하고  이  글을  출판하는  것은...  역시  나는  아마추어이기
때문이다. 용서  하기 바란다. 더 좋은 글을 쓸 수 있도록  노력하길 빌어주었으면  한다.
 
2002년  월드컵의 해에  드립니다.
 
권  수  호.

Posted by 김주일
시스템/리눅스일반2009. 11. 3. 14:05
Posted by 김주일
시스템/리눅스일반2009. 10. 7. 16:43

// 예전에 인력착취를 통해서 습득한 정보 (2008년 여름쯤)

-bindshell, trinoo daemon
execve() - execve  (const  char  *filename,  char *const argv [], char *const envp[]);
 filename이 가리키는 파일을 실행한다.
uname() - 시스템 정보 를 얻어온다(커널에 대한 이름과 버젼정보등을 얻어온다)
brk() - 데이터 세그먼트 사이즈 변경
old_mmap() - mmap(void * addr, size_t len, int prot, int flags, int fd, off_t offset);
 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40016000
  메모리 블럭을 할당하고  0x40016000으로 반환
open() - 파일을 열거나 생성 할때 사용한다 에러가 발생시 -1을 반환한다
 open("/etc/ld.so.preload", O_RDONLY)    = -1 ENOENT (No such file or directory)
 ENOENT : 경로명의 디렉토리가 없거나, 심볼릭 링크가 깨져있을때.
stat() - 파일의 상태를 알아올수 있다 성공할경우 0을 실패했을경우에는 -1을 반환
close() - close 는 열린 파일 지정번호를 닫는다.
read() - open으로 열린 파일에서 원하는 데이터를 읽어 들인다.
mmap() - fd로 지정된 파일(혹은 다른 객체)에서 offset을 시작으로 length바이트 만큼을 start주소로 대응시키도록 한다
socket()- socket(int domain, int type, int protocol); - 통신의 종점를 생성하고 성공시 통신종점으로 사용될 파일지시자를 반환
bind() - bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen);sockfd 는 socket함수를 통해서 만들어진 소켓지정번호이다.
            bind 는 이 sockfd 에 my_addr 로 대변되는 특성을 부여한다.
            my_addr 에는 sockfd 가 통신을 하기 위해서 필요한 정보인 "port", "인터넷주소", "소켓 흐름종류" 등을 포함하고 있다.
exit_group() - exit_group() 이 시스템 호출은 전체 프로세스와 쓰레드를 종료한다.
sendto() - 지정된 주소로 데이터를 전송하는 함수이다.
clone() -  새로운 프로세스를 생성한다. fork 와 달리 자식프로세스가 메모리, 테이블, 시그널핸들러 테이블과 같이 부모 프로세스와
  실행 문맥 부분들을 공유한다.
setpgid() - setpgid(pid_t pid, pid_t pgid); pid로 설정된 프로세스의 프로세스 그룹 ID를  pgid로  설정한다.


소스분석 bindshell
http://ttongfly.net/zbxe/?mid=hacktips&page=4&document_srl=42702

man page
http://man.cx/
http://www.joinc.co.kr/modules/moniwiki/wiki.php/man/2#E

===============================================================================

Posted by 김주일
시스템/리눅스일반2009. 10. 5. 15:52
1. ftp 접근제어와 관련된 파일(/etc/ftpd/ftpusers)이 있는가?


있다면 2로 이동, 없다면 3으로 이동
if [-f /etc/ftpd/ftpusers]
then

2. other에서 쓰기 권한이 있는가?(파일 검색 후 문자열에서 w 권한여부를 점검 후 라인 수를 체크)


if [ `ls -alL /etc/ftpd/ftpusers | awk '{print $1}' | grep '........-.' | wc -l` -eq 0 ]
              then
                echo "결과 : 취약" >> ftpusers.txt
              else
                echo "결과 : 양호" >> ftpusers.txt
fi

3. "no-file" 이라는 내용으로 ftpusers.txt 기입


else
  echo "no-file"  >> ftpusers.txt
fi


if [ `cat /etc/profile | grep -i "umask" | awk -F "0" '$2 >= "22"' | wc -l` -eq 1 ]
     then
       echo "양호" >> result.txt
     else
       echo "취약" >> result.txt
fi
Posted by 김주일