시스템/리눅스일반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 김주일