Home [Certificate] 인터넷보안전문가 2급 실기 기출문제 정리 및 복기
Post
Cancel

[Certificate] 인터넷보안전문가 2급 실기 기출문제 정리 및 복기

#Intro


지난 2022년 10월 30일에 응시한 정기 2022-04 인터넷보안전문가2급 필기 시험에 합격하고 바로 다음 실기 시험이 학교 시험 기간과 겹쳐 응시하지 못했고, 실기 응시 기간 2년이 지나기 전에 군복무 중 한 달 정도 준비하여 2024년 제01회 실기 시험을 응시하였다. 결과는 95점으로 좋은 성적으로 합격하였다.


필기 시험을 준비할 때에는 기출 문제를 인터넷에서 쉽게 구할 수 있었지만 실기 시험을 준비할 때에는 자료가 많지 않았고 최근 자료는 더더욱 찾기 힘들었다. 그래서 앞으로 이 시험을 준비하는 사람들을 위해 최신의 자료를 남겨놓기 위해 블로그 글을 남기게 되었다.


image


🔗인터넷보안전문가 2급 필기 시험 기출 문제 정리



#기존기출자료


우선 시험을 준비할 때 여러 블로그와 유튜브 등에서 찾은 자료들을 정리하였었다. 문제와 답 뿐 아니라 해당 문제와 관련된 개념을 정리하였다. 각 블로그와 유튜브마다 조금씩 문제에 대한 답이 다르기도 하였는데 직접 공부하며 최대한 정답에 가깝다고 생각한 답으로 정리하였다.


출처
https://m.blog.naver.com/sungwhan4854/222367233052
https://m.blog.naver.com/errorsoft666/221650057674
https://sasca37.tistory.com/281
https://www.youtube.com/watch?v=d9sZojblMMo&t=1418s
https://www.youtube.com/watch?v=lW7N_GeODAk&t=10s


주어진 Linux 시스템에서 비정상 트래픽이 유발되었다는 신고가 접수되었다. 시스템을 분석하여 root의 권한을 획득한 일반계정명 및 분석과정을 답안란에 기술하시오.

cat /etc/passwd 명령어를 통해 /etc/passwd 파일을 확인한다.


/etc/passwd 파일 구조
root : x : 0 : 0 : root : /root : /bin/bash
(1) (2) (3) (4) (5) (6) (7)

(1) : 사용자 계정
(2) : 사용자 암호가 들어갈 자리. x로 되어 있으면 /etc/shadow 파일에 저장
(3) : 사용자 ID(UID)를 의미. (0 : root 그룹)
(4) : 사용자가 속한 Group id(GID)를 의미. (0 : root 그룹)
(5) : 사용자의 코멘트 정보
(6) : 사용자의 홈 디렉터리 정보
(7) : 사용자가 기본으로 사용하는 shell 정보

root의 경우 UID와 GID가 모두 0인 것을 확인할 수 있는데 이처럼 UID가 0인 계정을 찾거나 없다면 GID가 0인 일반 계정을 찾으면 된다. GID bit가 0이라는 것은 root 그룹에 속해 있다는 의미이다.



주어진 Linux 시스템에 누군가 허가 없이 4000~5000번 사이의 TCP 포트번호를 열어 LISTEN 하고 있다. 해당 포트 번호를 찾고 분석과정을 답안란에 기술하시오.

netstat -nat | grep LISTEN 명령어 수행

netstat -nat 명령어의 결과를 grep LISTEN 명령어의 입력으로 전달

netstat [옵션]
:네트워크 연결 상태, 라우팅 테이블, 인터페이스 상태 등을 보여주는 명령어

<옵션>
-n : IP, Port 번호 조회
-a : 모든 네트워크 상태
-t : TCP 프로토콜
-p : 프로그램 이름/PID


grep [옵션] [패턴] [파일명]
:특정 파일에서 지정한 문자열이나 정규표현식을 포함한 행을 출력해주는 명령어


image


4000~5000번 사이의 포트를 사용하고 있다고 하기 때문에 4444번 포트가 LISTEN 중인 것을 확인 할 수 있다.



주어진 Linux 시스템의 로그 확인 결과 아파치(Apache) 환경 파일이 변경되었음을 알게 되었다. “/etc/httpd.conf”와 “/etc/httpd.conf.old”를 비교하여 변경된 줄 번호 및 분석 과정을 답안란에 기술하시오.

diff /etc/httpd.conf /etc/httpd.conf.old 혹은 cmp /etc/httpd.conf /etc/httpd.conf.old 명령어를 사용한다.


diff [옵션] [비교파일1] [비교파일2]
:differences의 약자로 두 파일 사이의 내용을 비교하는 명령어

[출력 값]
<0a1, 2d2, 3c3와 같은 변경 명령>

  1. 첫 번째 숫자: 첫 번째 파일의 줄 번호 또는 줄 범위
  2. 특수 변경 문자: a=줄 추가, c=라인을 변경, d=줄을 삭제
  3. 두 번째 숫자: 두 번째 파일의 줄 번호 또는 줄 범위

< <, > 와 같은 문자>

  1. < : 제거
  2. > : 추가

ex)
0a1 - file1의 시작 부분에 (0줄 뒤에) file2의 1줄을 추가
2d2 - file1에서 줄 2를 삭제. d 기호 뒤의 2는 선이 삭제되지 않으면 file2의 라인 2에 나타납니다.
4c4,5 - file1의 5줄을 file2의 4-5줄로 교체(변경)합니다.

[옵션]
-u : 통일된 형식으로 출력


cmp [옵션] [비교파일1] [비교파일2]
:compare의 약자로 두 파일 사이의 내용을 비교하는 명령어. diff와는 다르게 두 개의 파일을 단순히 같은가 다른가를 확인할 수 있다.



주어진 시스템을 분석하여 해킹에 사용된 파일들이 어디에 위치하는지 경로명을 정답란에 기술하시오.

find / -user nobody 2> /dev/null


find / -user [찾을 소유자] -print

  • 특정 사용자의 파일을 찾을 때 사용하는 명령어
  • -print : 파일의 절대 경로 표시


2> /dev/null

2> : 표준 에러 재지정



주어진 시스템을 분석하여 침입자가 권한 상승을 위해 사용한 파일을 찾아 경로명을 기술하시오.

침입자가 사용한 파일 중에서

1
2
3
4
int main() {
	setreuid(geteuid(), geteuid());
	execl("/bin/bash", "sh", 0);
}

를 가진 파일과 이것의 실행 파일을 찾아낸다.


int setreuid(uid_t ruid, uid_t euid);

  • UID(User Identification, Real UID) : 내가 어떤 사용자로 로그인 했는가
  • EUID(Effective UID) : 현재 내가 누구인가



주어진 Linux 시스템의 FTP 서버 접근 실패 시 접근을 차단시키려고 한다. “/etc/ftpaccess” 파일을 이용하여, ‘3’회 접근 실패 시 차단시키는 “설정과정”을 답안란에 기술하시오.

vi /etc/ftpaccess 명령어를 통해 해당 파일을 편집한다.

loginfails 5 필드의 5를 3으로 바꾼다.


FTP 제어파일 /etc/ftpaccess
:ftpd의 핵심 설정 파일로 지시문을 통해서 ftpd의 동작 방법을 제어한다.



주어진 Linux 시스템의 root 계정에 대한 자동 로그아웃 시간을 “50초”로 설정하려고 한다. “설정과정”을 답안란에 기술하시오.

root 계정을 포함한 전체 사용자에 대한 설정 파일은 /etc/profile 파일에서 설정할 수 있다. 전체 사용자가 아닌 개별 사용자는 각 사용자의 홈 디렉터리 내에 있는 profile 파일에서 설정할 수 있다.

vi /etc/profile vi 편집기를 통해 파일을 수정한다.

TMOUT 필드를 찾는데 만약 없다면 새로운 줄에 필드를 만든다.

TMOUT=50 으로 입력하여 자동 로그아웃 시간을 50초로 설정한다.



TCP Wrapper는 Localhost로 들어오는 인터넷 서비스에 대한 요청(Request)을 관찰하고 필터링 할 수 있다. 주어진 Linux 시스템을 이용하여 SSH 데몬(sshd)으로 접근하는 모든 호스트(Host)에 대해서만 요청을 허락하도록 “/etc/hosts.allow”와 “/etc/hosts.deny” 설정과정을 답안란에 기술하시오.

hosts.allow / hosts.deny
특정한 클라이언트에게만 서비스를 허용(allow) 또는 차단(deny)하는 역할을 한다.

  • /etc/hosts.allow : 서비스 허용 설정 파일
  • /etc/hosts.deny : 서비스 차단 설정 파일


  • /etc/hosts.allow 설정

    vi /etc/hosts.allow 명령어를 통해 파일을 편집한다.


sshd에 대한 요청을 허락하기 위해 in.sshd:ALL 값을 작성하고 저장한다.


  • /etc/hosts.deny 설정

    vi /etc/hosts.deny 명령어를 통해 파일을 편집한다.

    sshd에 대한 요청을 제외한 모든 요청은 차단해야 하기 때문에 ALL:ALL 값을 작성하고 저장한다. hosts.deny 파일에서 모든 요청을 차단해도 hosts.allow에서 설정한 서비스는 요청이 허용된다.



외부로부터의 ICMP 프로토콜을 사용한 악의적인 공격으로부터 현재의 시스템을 보호하고자 한다. iptables를 사용하여 INPUT 패킷에 대한 모든 ICMP 패킷을 차단하는 설정과정을 답안란에 쓰시오.

인터넷 제어 메시지 프로토콜(Internet Control Message Protocol, ICMP)
:네트워크 내 장치가 데이터 전송과 관련된 문제를 전달하기 위해 사용하는 프로토콜


iptables
:리눅스 패킷 필터링 도구로서 방화벽 구성이나 NAT에 사용된다. 특정 조건을 가지고 있는 패킷에 대해서 허용(ACCEPT)과 차단(DROP) 등을 지정할 수 있으며, 특정 조건 등을 통해 다양한 방식의 패킷 필터링과 처리 방식을 지원한다.

<옵션>
-L (—list) : 적용 되어 있는 정책 목록 출력
-A (—apend) : 새로운 정책 추가
-p (—protocol) : 프로토콜
-j (—jump) : 패킷 상태 제어


iptables -A INPUT -p icmp -j DROP

:들어오고 있는 모든 패킷 중 icmp 프로토콜로 들어오는 패킷이 있다면 drop해라


iptables -L 으로 적용된 정책 목록 확인하여 정상적으로 설정되었는지 확인



주어진 시스템에는 인가되지 않은 리모트 백도어 서비스가 존재한다. 이를 찾아 정답란에 기술하시오.

cd /etc/xinetd.d 명령어로 해당 디렉터리에 있는 특정 서비스들을 살펴보고 일반적으로 쓰이지 않는 서비스가 있는 것을 확인할 수 있다.


xinetd
:슈퍼데몬(데몬을 관리하는 데몬)

/etc/xinetd : 메인 설정 파일
/etc/xintd.d : 슈퍼 데몬에 의해 제어되는 서비스 파일이 위치하는 디렉터리



주어진 시스템을 분석하여 인가되지 않은 백도어 포트를 찾아 넘버를 정답란에 기술하시오.

netstat -nat 명령어로 포트 상태를 확인해서 인가되지 않은 포트를 알아볼 수 있다.

혹은 lsof | grep LISTEN 으로 열려 있는 파일 정보를 확인하여 열려 있는 포트를 확인할 수 있다.

혹은 .bash_history 파일에서 telnet localhost {port} 명령어를 찾아 포트를 찾는다.


netstat [옵션]
:네트워크 연결 상태, 라우팅 테이블, 인터페이스 상태 등을 보여주는 명령어

<옵션>

-n : IP, Port 번호 조회
-a : 모든 네트워크 상태
-t : TCP 프로토콜


lsof
:list open files의 약자로 시스템에서 열려있는 파일에 대한 정보를 출력하는 명령어


telnet [IP 또는 도메인] [포트]
:원격 호스트와 텍스트 기반으로 통신하기 위한 프로토콜과 도구



주어진 Linux 시스템의 계정에 대한 확인 결과, 암호화 강도가 낮아서 내부 사용자들에게 패스워드를 변경하도록 하였으나, 제대로 이행되지 않고 있어 강제적으로 패스워드를 변경하려고 한다. 아래 제시된 계정 패스워드의 정책 설정 과정을 답안란에 기술하시오. 1.패스워드가 변경 된지 30일이 지나면 무조건 새 패스워드로 바꿔야 함 2.패스워드는 최소한 8자 이상 사용하여야 함

vi /etc/login.defs 명령어로 파일을 편집한다.

PASS_MAX_DAYS 필드 값이 99999 값인 경우는 99999일 동안 패스워드를 변경하지 않아도 된다는 설정이다. 이를 30으로 설정한다.

PASS_MIN_LEN 필드 값을 8로 설정하여 8자 이상 패스워드를 사용하도록 설정한다.


/etc/login.defs
:리눅스 시스템에서 로그인 관련한 기본 설정을 포함하는 파일. 시스템 전역적으로 로그인과 관련된 동작을 제어하며, 사용자 계정 생성부터 비밀번호 정책까지 다양한 측면에서 영향을 미치는 설정을 포함하고 있다.

<주요 설정 항목>
PASS_MAX_DAYS : 비밀번호 변경 주기의 최대 일 수를 지정합니다.
PASS_MIN_DAYS : 비밀번호 변경 주기의 최소 일 수를 지정합니다.
PASS_WARN_AGE : 비밀번호 만료 경고가 나타나는 일 수를 지정합니다.


기존 사용자의 경우에는 /etc/shadow 파일에서 직접 수정하거나 chage -M30 <계정명>, passwd -x30 <계정명>을 사용하면 된다.


passwd -x30 : 패스워드 암호를 변경하지 않아도 되는 최대 유효기간(MAX_DAYS)을 지정



아파치 서버를 운영하는 웹 서버가 해킹을 당해 관리자로부터 아래 <웹 로그>를 받았다. <웹 로그>를 분석하여 어떤 공격인지 답안란에 기술하시오.

image

공격자는 80번 포트를 통해 GET 요청을 보냈고 이때 요청한 주소의 매개변수 값에 SQL 쿼리문을 포함시켜 SQL Injection 공격을 수행한 것을 알아낼 수 있다.



아래 <설명>을 보고 <네트워크 구성도>의 ‘A’에 해당하는 보안 솔루션(장비)의 명칭을 답안란에 입력하시오.

image

<설명>에서 2번째 줄(이미 알려진 공격에 대한 방어를 의미)과 3번째 줄에서 설명하는 방식으로 차단할 수 있는 장비는 IPS이다. IDS는 2번째 줄의 방식으로 공격을 차단할 수 있다.


IPS(Instrusion Protection System, 침입 방지 시스템)
:홈페이지 및 애플리케이션 서비스에 대한 침입을 실시간으로 탐지 및 대응하는 서비스.

IDS는 네트워크를 모니터링하고 네트워크 관리자에게 잠재적 위협에 대한 경고를 보내는 반면, IPS는 보다 실질적인 조치를 취해 네트워크에 대한 액세스를 제어하고 침입 데이터를 모니터링하며 공격이 발생하는 것을 방지한다.



아래 <내용>이 설명하고 있는 암호화 알고리즘을 답안란에 입력하시오.

image

RSA 알고리즘



아래 <내용>이 설명하고 있는 침입탐지기법을 답안란에 입력하시오.

image

정상적인 시스템을 구성한 상태에서 시스템에 대한 취약점을 분석하기 위해 보안 관계자들이 현재 시스템과 동일한 복제 시스템을 구성하고, 복제 시스템을 취약하게 만들어 놓아 외부에서 해킹 시도 시에 해킹 기법 등을 알아낼 수 있는 모의해킹을 구현할 수 있다. 이를 허니팟(Honey pot)이라고 한다.



Null session의 취약점을 한 가지만 나열하고 그 취약점에 대한 해결방안을 정답란에 기술하시오.

취약점: 널 세션은 임의의 사용자가 네트워크를 통해 별도의 인증 없이 사용자 이름이나 공유 정보 등을 수집할 수 있는 메커니즘으로, 윈도우 탐색기가 원격 서버에 있는 공유 자원들을 열거할 때와 같이 응용프로그램에 의해 사용된다. 문제는 공격자 역시 이러한 널 세션을 통해 로그인할 수 있다는 것이다. 이를 예방하려면 도메인 환경에서 작업할 경우 레지스트리를 변경하고, 만약 파일이나 프린터 공유가 필요하다면 넷 바이오스를 TCP/IP와 분리해야 한다.

해결방안: 레지스트리에서 Null session 공유에 대한 허용을 하지 않도록 변경한다.


Null Session
:윈도우 서버에서 IPC$라고 불리는 자유롭게 접근 가능한 네트워크 공유에 대한 익명 접속.



윈도우 스크립팅 호스트(WSH)로 인하여 발생할 수 있는 문제점을 한 가지만 나열하고 그 대응 방안을 정답란에 기술하시오.

2000년 봄에 러브 버그와 비주얼 베이직 스트립트 웜이 수백만 달러의 피해를 입힌 적이 있다. 이 웜은 ‘.vbs’ 확장자를 가진 모든 텍스트 파일을 비주얼 베이직 스크립트로 간주해 실행시키는 WSH를 이용했다.

웜의 전염을 막기 위해서는 윈도우 스크립팅 호스트를 무력화해야 한다. 특히 WSH는 인터넷 익스플로러나 다른 소프트웨어 제품들이 설치되거나 업그레이드될 때 함께 재설치 되는 경우가 많으므로 그럴 때마다 무력화시켜야 한다.


윈도우 스크립트 호스트(Windows Script Host, WSH)
:윈도우 운영 체제의 가상화 기술이며 배치 파일에 견줄만하지만 더 다양한 기능을 지원하는 스크립팅 기능을 제공한다.



/etc/service 파일에 계정에 대한 권한을 설정하려고 한다. 현 사용자에는 읽기와 쓰기 권한을, 현 사용자와 동일한 그룹 사용자에게는 쓰기 권한, 그 외의 사용자에게 쓰기 권한을 부여해라.

chmod 622 /etc/service

rw- -w- -w-

6 2 2


chmod
:change mode 파일이나 디렉토리의 권한을 변경하는 명령어

<8진수 모드>
chmod [옵션] [소유자권한][그룹권한][그외사용자권한] [파일 또는 디렉토리]

<문자열 모드>
chmod [옵션] [레퍼런스][연산자][권한] [파일 또는 디렉토리]

  • 레퍼런스 종류
    • u - 소유자 : 파일 또는 디렉토리의 소유자
    • g - 그룹 : 파일 또는 디렉토리의 그룹에 포함된 사용자
    • o - 그 외 사용자 : 소유자도 아니고 그룹에 포함되지도 않은 사용자
    • a - 모든 사용자 : 모든 사용자를 뜻하며, ugo와 동일
  • 연산자
    • + : 기존 권한에 권한 추가
    • - : 기존 권한에서 권한 제거
    • = : 지정한 권한으로 변경

<옵션>
-R : 권한을 디렉토리의 하위 경로에도 모두 적용



웹 상에서 스크립트(<, &, $, >)를 부적절하게 사용하여 악의적인 행동을 발생시키는 취약점에 대해 작성하시오.

XSS 취약점



해당 바이러스는 바이러스 발생 시 바이러스 이름에 대한 내용 혹은 파일이 많이 생기며, USB, 네트워크 파일, 공유 파일 등으로 인해 감염되는 바이러스이다. 해당 바이러스의 이름을 작성하시오.

웜바이러스? 스턱스넷?



/proc/sys 시스템에서 포트 포워딩을 설정하지 않게 하기 위해서는 “echo “값” > /proc/sys/파일-1/파일-2”와 같은 명령어를 사용하게 된다. 여기서 “값”에 들어가는 적절한 내용을 작성하시오.

0


/proc 파일시스템
리눅스 커널이 메모리에서 사용하고 있는 모든 자원들에 대한 정보들을 보관하고 있는 파일들로 구성되어져있다. 현재 실행중인 프로세스들의 정보를 PID 숫자로 된 디렉토리로 구성 프로세스가 종료되면 PID로 생성된 파일 또는 디렉토리 모두가 삭제된다.



주어진 시스템에 누군가가 ICMP 프로토콜을 사용하여 공격을 시도하고 있는데, ICMP 프로토콜은 DoS, 포트스캔, Ping of Death 등 많은 해킹에 이용된다. 모든 ICMP 패킷에 대한 Echo를 무시하도록 하는 과정을 기술하라.

sysctl -A | grep icmp 명령어로 echo_ignore_all 에 관한 부분을 찾는다.

vi /proc/sys/net/ipv4/icmp_echo_ignore_all 로 들어가서 0을 1로 바꿔준다.

혹은

sysctl -w net.ipv4.icmp_echo_ignore_all=1 을 통해 임시적으로 설정 가능하다.


sysctl
:버전 번호나 보안 설정 같은 시스템 커널의 속성들을 읽고 수정하는 몇몇 유닉스 계열 운영체제의 기능. 컴파일된 프로그램에서 시스템 호출로서 그리고 스크립트로도 사용될 수 있는 관리 명령어로서도 사용 가능하다. 해당 명령어를 사용하여 커널 매개변수를 영구적으로 설정할 수 있다.

런타임(Runtime) 중에 /proc/sys 하위 디렉토리에 대한 커널 매개변수 값을 변경할 때 사용하는 명령어. 리눅스 커널에 대한 설정값 변경 및 조회가 가능하며 커널 튜닝을 위한 명령어로 생각하면 된다. 시스템 관리자라면 sysctl 명령어를 알아둬야 하며 DDoS 방어를 위해서 네트워크 트래픽 관련된 커널 매개변수들은 필수로 숙지해야 한다. /proc/sys 하위 디렉토리에 존재하는 디렉토리를 구분하는 ‘/’ 는 sysctl 명령어 이용시 ‘.’ 으로 대체한다.

-a : display all variables



(로그파일을 보여주며) 아파치 서버에서 발생한 로그이다. 검색 봇에 해당하는 IP 주소를 작성하라. 없으면 없다라고 작성하고 여러개면 콤마로 구분하라.

robot.txt에 접근하는 IP가 3개 있었는데 그것들이다.



서버가 이상하게 느려져서 검토해본결과 본 서버가 스니핑에 사용되고 있다는 판단을 하게 되었다. 판단 근거를 찾아서 기술하고, 해결방법을 서술하시오.

cd /var/log 로 들어가보니 message 파일과 secure 파일이 있었다. cat 명령어로 .message 파일을 확인해본 결과 특정 시점에 root 계정을 이용해서 짧은 시간내에 여러차례 특정 ip에 여러포트로 접근했다가 실패한 흔적이 있었고, secure 파일에도 동일한 흔적이 있었다. 해당 로그를 판단 근거로 서술하고, 해결법으로는 root 계정이 털린것 같으니 root 계정의 비밀번호를 변경하고 lastlog로 root 계정에 접근한 ip를 확인해서 차단시킨다. 라는 내용을 서술했다.

/var/log/messages
:시스템의 표준 메시지 기록. 날짜 및 시간, 메시지가 발생한 호스트명, 메시지를 발생한 내부 시스템이나 응용프로그램의 이름, 발생된 메시지가 ‘:’로 구분되어 기록된다.

/var/log/secure
:인증 기반 접속 관련 기록. 인증과 관련된 로그가 기록된다. 주로 로그인, tcp_wrappers, xinetd 관련 로그가 쌓인다.

/var/log/lastlog
:사용자의 접속 기록. telnet이나 ssh를 통해 들어오는 사용자의 마지막 정보가 기록된다. 바이너리 파일로 기록되어 있어 바로 열람할 수 없다. lastlog 명령어로 확인 가능.



주어진 Linux 시스템이 다운되어 재부팅한 후 “/var/log/secure” 로그 확인 결과, 공격당한 것을 확인하였다. 로그를 확인하여, “공격 IP Address” 및 “분석과정”을 답안란에 기술하시오.

cat /var/log/secure 확인하여 분석



주어진 Linux 시스템의 FTP 서비스가 Anonymous 접근을 허용하고 있어, 불법적인 파일 업로드나 주요 정보 유출 등의 예상치 못한 불법적인 접근으로 인하여 시스템 침해의 위험이 존재한다. FTP 서비스에 Anonymous 접근 제한하는 과정을 답안란에 기술하시오.

vi /etc/vsftpd/vsftpd.conf 명령어로 설정 파일을 열어 anonymous_enable=YES 필드를 NO로 변경하고 저장한다.


vsftpd
:Very Secure FTP Daemon의 약자로 FTP 서버이다. 설정 파일은 /etc/vsftpd/vsftpd.conf 경로에 있다.



주어진 Linux 시스템의 sshd에 대한 보안설정을 하려고 한다. 파일(/etc/ssh/sshd_config)을 이용하여 포트번호를 “222”로 변경하는 과정을 답안란에 기술하시오.

vi /etc/ssh/sshd_config 명령어를 통해 #Port 22 필드 값을 222로 변경한다.



현재 사용중인 서버는 메일 서버의 용도로 사용하고 있지는 않지만 Sendmail 서비스는 설치되어 있다. 어느날 갑자기 사용중인 네트워크가 느려진 것 같고, 이곳저곳에서 Spam 메일 발송에 대한 항의가 들어오고 있다. 추적한 결과 192.168.212.xxx에서 접속하여 Spam 중계 용도로 사용중이다. 192.168.212.xxx가 Sendmail 설정을 통해 Sendmail 사용을 차단하는 설정과정을 답안란에 기술하시오.

vi /etc/mail/access 명령어로 192.168.212 RELAY 필드를 삭제한다.


Sendmail
:전자 메일을 보내는 데 사용되는 메일 전송 에이전트(MTA). 유닉스 및 리눅스 운영 체제에서 가장 일반적으로 사용되는 MTA 중 하나.

기본적으로 텍스트 기반의 구성 파일을 사용하여 구성된다. 이 파일은 /etc/mail/sendmail.cf 또는 /etc/sendmail.cf와 같은 경로에 저장된다. 이 구성 파일을 사용하여 메일 전송 구성, 인증 및 보안 구성, DNS 구성 등을 지정할 수 있다.



주어진 시스템에서 악의적 사용을 위해 SUID/SGID bit가 설정되어 있는 파일을 검사하여 검색된 파일 3개 및 분석과정을 답안란에 기술하시오.

find / -type f -perm +6000 -ls 명령어의 결과 퍼미션이 -rwsr-xr-x, -rwxr-sr-x 이와 같은 형태의 파일을 찾는다.


find 옵션

-name : 주어진 이름의 파일이나 디렉터리를 찾는다. 정규표현식 사용 가능
-user : 지정한 사용자의 파일이나 디렉터리를 찾는다.
-group : 지정한 그룹 소유의 파일이나 디렉터리를 찾는다.
-uid : 지정한 UID 소유의 파일이나 디렉터리를 찾는다. (아이디 번호로 찾기)
-gid : 지정한 UID 소유의 파일이나 디렉터리를 찾는다. (그룹번호로 찾기)
-perm : 지정한 허가권 값을 갖는 파일이나 디렉터리를 찾는다(permission의 약자)
-type : 지정한 파일 유형을 찾는다.(d: 디렉터리, f: 일반파일, l: 링크파일)
-ls : ls -l과 같은 역할


-perm +6000

  1. SetUID가 설정된 파일 찾기 : find / -perm +4000
  2. SetGID가 설정된 파일 찾기 : find / -perm +2000
  3. SetUID나 SetGID 둘 중 하나가 설정된 파일 찾기(+, OR, 둘 다 설정되어도 찾음) : find / -perm +6000
  4. SetUID와 SetGID가 동시에 설정된 파일 찾기(-, AND) : find / -perm -6000

(!) -perm +mode는 더 이상 사용하지 않는다. 대신 -perm /mode 사용



주어진 Linux시스템은 TFTP를 사용하지 않는다. 해커가 BackDoor를 사용하기 위해 임의로 도용한 “TFTP Port번호”및 “분석과정”을 답안란에 기술하시오.

cat /etc/services | grep tftp 명령어를 통해 tftp 필드를 확인하면 69번이 아닌 4444번으로 변경되어 있다.


TFTP
:파일 전송을 위한 단순 프로토콜. 소형이고 구현하기 쉽게 설계되었지만 FTP의 보안 기능이 대부분 없다. 원격 서버에서 파일을 읽고 쓰기만 한다. FTP보다 더 단순한 방식으로 파일을 전송하기 때문에 데이터 전송 과정에서 데이터가 손실될 수 있는 등의 불안정하다는 단점을 가지고 있다.


/etc/services
:리눅스 서버에서 사용하는 모든 포트들에 대한 정의가 설정되어 있다.



현 Linux 시스템은 Kerberos를 서비스하지 않는다. 해커가 BackDoor를 사용하기 위해 임의로 도용한 Port를 찾아 답안란에 기술하시오.

netstat -natp 명령어를 통해 의심이 되는 포트 번호에 서비스 중인 프로그램을 찾는다.

의심되는 포트 번호를 찾았다면 ps -ef 명령어로 해당 서비스 파일을 찾을 수 있다.


ps
:현재 실행 중인 프로세스의 목록을 보는 명령어

-e : 실행 중인 모든 프로세스의 정보를 출력한다.
-f : 프로세스에 대한 자세한 정보를 출력한다.
-p pid : pid로 지정한 프로세스의 정보를 출력한다.



현 Linux 시스템은 모든 일반계정에서 root 권한 변환이 가능하다. 특정 계정(secu10)만 root로 권한을 변경할 수 있도록 하는 설정 과정을 답안란에 기술하시오

vi /etc/group 명령어로 wheel 그룹 사용자를 추가하고

vi /etc/pam.d/su 명령어를 통해 su 명령어를 사용할 수 있는 계정을 설정한다.

#auth required /lib/security/$ISA/pam_wheel.so use_id 해당 부분의 주석을 해제하여 특정 사용자만 su 명령어를 사용할 수 있도록 한다.

ll /bin/su 명령어를 통해 해당 명령어에 대한 소유자와 그룹은 둘 다 root로, 일반 사용자의 권한을 확인하면 읽기 가능, 실행 가능으로 되어있다.

chown root:wheel /bin/su 명령어를 통해 소유자를 root로 그룹을 wheel로 설정한다.

chmod 4750 /bin/su를 통해 일반 사용자의 권한을 제거한다.

rws r-x — 47 5 0


chown [옵션] [소유자]:[그룹] [디렉토리 or 파일]
:파일이나 디렉토리 소유자와 그룹을 수정할 경우에 사용되는 명령어



FTP 서버에 익명(Anonymous) 권한으로 접근을 해서 Read 권한만 있어도 다른 유저의 설정을 모두 볼 수 있다. 주어진 Linux 시스템을 이용하여 FTP 서버에 익명으로 로그인 할 수 없게 설정하는 방법을 답안란에 기술하시오.

userdel ftp 명령어로 /etc/passwd 파일에서 ftp 또는 anonymous 계정을 삭제한다.



Apache + PHP + MySQL를 지원하는 Linux 시스템의 경우, 일반적으로 PHP로 MySQL DB에 접속하는 경우 PHP에서 연결하는 스크립트(Script)를 사용한다. 일반적으로 WEB 상에 공개된 소스에는 파일명이 대부분 “connect.inc”를 사용하는데 이 파일을 웹 브라우저에 불러오게 되면 바로 읽혀져서 MySQL DB 접속 아이디와 패스워드를 알 수 있게 된다. 이를 방지하는 방법을 “/etc/httpd.conf” 파일을 이용하여 답안란에 기술하시오.

해당 파일에서 웹 사이트의 디렉토리에 대한 구성 변경을 허용하는 메커니즘을 제공하는 Apache 구성 파일인 .htaccess에 대한 설정이 잘못되었기 때문에 Allowoverride 필드 값을 None으로 설정하여 해당 파일을 인식하지 않도록 한다.



#문제 복기


시험은 2024년 01회 실기 시험이다. 시험을 끝내고 곧바로 메모 해두어 순서와 내용은 정확하지 않을까 싶다. 문제는 기출 문제와 똑같이 출제된 문제, 기출 문제를 변형한 문제, 처음보는 문제가 출제되었다. 기존 기출 자료에 있는 자료와 처음 본 기출 문제를 괄호 안에 따로 구분해두었다.


  1. (기존)root 권한 계정 획득한 일반 계정 및 분석과정

  2. (기존)자동로그아웃 시간 30초로 설정

  3. (기존)패스워드 정책을 최대 30일, 최소 8자로 설정

  4. (기존)4000-5000번 사이의 TCP LISTEN 하는 포트번호 작성

  5. (기존)httpd.conf와 httpd.conf.old 변경 사항

  6. (기존)/etc/services 파일을 읽기실행,읽기,읽기 권한 설정

    -> chmod /etc/services 644

  7. (기존)모든 ICMP 패킷에 대한 Echo ignore

  8. (처음)앞에서 분석함에 따라 root 계정을 획득한 계정을 passwd -(A) 계정명 명령어로 로그인하지 못하도록 잠금하려고 한다. (A)에 들어갈 옵션

    -> passwd -l 계정명

  9. (처음)로그파일을 보고 UDP 프로토콜로 들어온 요청 중에 가장 취약한 목적지 포트를 서술하시오

    -> 로그 파일에서 특정 포트로 짧은 시간 내에 요청이 많이 들어왔으며 대부분 DROP 된 포트가 존재했다.

  10. (처음)작은 크기의 코드로 취약점을 이용하여 공격자의 의도대로 만들어진 코드 조각, 스크립트를 의미한다. 서버 권한 획득과 Dos 공격을 목적으로 한다. 제로데이 언급.

    -> 문제의 서술이 정확하게 기억나지는 않았지만 대충 위와 같았다. 나는 셸 코드라고 작성하여 제출했다.

  11. (처음)로그 파일 보고 공격이 시작된 시간을 [시:분:초]로 나타내기.

    -> SQL Injection 공격이 이루어졌는데 가장 처음 SQL문을 포함한 요청이 있는 시각을 작성하였다.

  12. (기존)허니팟

[PortSwigger] Academy: SQL Injection

[PortSwigger] Academy: Path traversal