보안관리체계2009. 10. 8. 17:24

링크 : http://www.ekca.org/html/methodology/ISP/ (한국경영컨설팅 협회)
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. 7. 16:39

// 리눅스 디바이스 디라이버 수업관련

System call

- 정의
 소프트웨어 인터럽트를 통해 만들어진 커널에 대한 명시적인 요청
즉, 프로그래밍 언어에서 지원하지 않는 기능에 대하여 운영체계의 루틴을 호출하여 이용하는 것을 말한다.
대개 모든 운영체계는 여러 가지 저급한 연산을 수행하기 위한 루틴들의 모음을 가지고 있다.
예를 들어 모든 운영체계는 디렉토리를 만드는 루틴이라든가,  특정한 디렉토리에 있는 파일들의 목록을 읽어내는 루틴 등을 가지고 있다.
만약 응용프로그램에서 운영체계에 있는 루틴을 실행시켜 어떠한 결과를 얻기 원한다면, 시스템 호출을 통해 이용해야한다.

사용자프로세스 -> 아규먼트 스택 -> 시스템 콜 번호 저장 -> 트랩발생 -> IDT에의해 트랩 시작 -> 핸들러 실행 -> 시스템콜 테이블 사용 -> 시스템 콜 핸들러

 

시스템 콜 만들기
http://kldp.org/KoreanDoc/html/EmbeddedKernel-KLDP/app2.html
시스템 콜 레퍼런스
http://www.joinc.co.kr/modules/moniwiki/wiki.php/man/2
시스템 콜 개요, 처리과정, 구현
http://sjlee.sch.ac.kr/lecture/Embedd/07-EmbedSW-9-SystemCall.pdf
http://kcms.daegu.ac.kr/user/esri/renewal/Data_Seminar/2003/%5B20031128_%EC%B5%9C%EC%9A%A9%EC%9A%B4%5DArithmetic%20Circuits.pdf
http://core.softonnet.com/wiki.php/SystemCall

Posted by 김주일