다음 소스코드와 연관된 아래의 문제에 답하시오.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/types.h>
void main(int argc, char **argv){
int fd;
char write_text[] = "# Top Secret Information !!! #\n";
char *tmp = "/tmp/race.tmp";
fd = open(tmp, O_CREATE | O_TRUNC);
write(fd, write_text, strlen(write_text));
close(fd);
remove(tmp);
}
어떤 명령인지 간단히 서술하시오.
[root@localhost tmp]# touch hack.txt [root@localhost tmp]# ls -al /tmp/hack.txt -rw-r--r-- l root root 0 2016-03-15 10:34 /tmp/hack.txt [root@localhost tmp]#
touch
명령으로 크기가 0인 hack.txt
파일을 생성하고 ls
명령으로 파일 생성을 확인하고있다.위의 소스코드를 공격하기 위한 프로그램이다. 동작방식을 간단히 설명하시오.
#include <stdio.h> #include <unistd.h> void main(int argc, char **argv){ int i = 0; for(i = 0; i < 10; i++){ printf("run : %d \n",i+1); system("ln -s /tmp/hack.txt /tmp/race.tmp"); } }
피해 프로그램과 공격 프로그램을 동시에 여러 번 실행한 결과 hack.txt 파일에 아래와 같은 내용이 기록된 것을 확인할 수 있었다. 소스코드와 공격과정을 참고하여 (1) 공격 명칭과 (2) 대응 방안에 관해 서술하시오.
[root@localhost LEC_RACE_COND2]# cat /tmp/hack.txt # Top Secret Information !!! # [root@localhost LEC_RACE_COND2]#
쇼핑몰 운영 서버 취약점점검 결과 사용자 계정의 패스워드 최소길이가 부적절한 문제점이 발견되었다. 패스워드 최소 길이를 8자리 이상으로 설정하려고 할 때 SunOS, Linux, AIX, HP-UX 운영 체제 별로 설정 방법을 설명하시오.
PASSLENGTH=8
로 설정PASS_MIN_LEN 8
로 설정minlen=8
로 설정MIN_PASSWORD_LENGTH=8
로 설정유닉스/리눅스 시스템 관리자는 보안 취약점 점검 과정에서 root 계정의 PATH 환경변수 설정이 아래와 같이 되어있는 것을 확인하였다. PATH 설정의 취약점 및 조치 방안에 관해 서술하시오.
#vi /etc/profile PATH=.:$PATH:/usr/lib/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib/ccache:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin
.
현재 디렉터리 지정 설정이 맨앞 또는 중간에 있으면 root 계정으로 접속한 관리자가 현재 디렉터리에 불법적으로 위치한 실행파일에 의해 의도하지 않은 명령이 실행 될 수 있음.
설정을 맨 뒤로 이동시키거나 불필요한 경우 삭제함다음은 리눅스 시스템에서
/etc/shadow
파일에 저장된 test01 계정의 패스워드 정보이다. 다음 각 질문에 답하시오| A | B | C | test01:$6$gAWyPqwb$kmjg2WA4E7S2MT/1h ~ 생략 : 18290:1:90:7:::
- test01 계정의 두 번째 필드 A, B, C 각 항목의 의미를 쓰시오.
- 두 번째 필드의 B 항목을 통해 레인보우 테이블(rainbow table) 공격에 효과적으로 대응할 수 있다. 그 원리가 무엇인지 쓰시오.
- 위 파일과 관련하여 pwunconv 명령어의 용도를 쓰시오.
서버 담당자가 서버 점검 중 /etc/apache/conf 내의 파일이 수정된 것을 발견했다. 담당자가 10일 이내에 파일을 수정한 적이 없을 때 무결성을 확인할 수 있는 find 명령어를 한줄로 작성하시오.
find /etc/apache/conf -mtime -10
시스템 전체에서 SUID와 SGID가 설정된 파일을 찾기 위한 방법을 find 유틸리티를 이용하여 검색하는 방법을 서술하시오.
( A ) 전체 디렉터리에서 정규(regular) 파일중 SUID가 설정된 파일을 모두 찾아내시오.
( B ) 전체 디렉터리에서 정규(regular) 파일중 SGID가 설절된 파일을 모두 찾아내시오.
find / -type f -perm -4000
find / -type f -perm -2000
-perm [-]mode
: -가 없으면 정확히 일치하는 파일, -가 있으면 포함하는 파일