3주차 - System 보고서

Bae YuSeon·2022년 9월 26일
1

E-COPS

목록 보기
4/9
post-thumbnail

정규세션 복습

운영체제 (Operating System)

컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층
운영체제

운영체제의 목적

  • 컴퓨터 시스템 하드웨어 및 소프트웨어 자원을 여러 사용자 간에 효율적 할당, 관리, 보호
  • 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공

운영체제의 예

  • Windows
    -GUI 기반 운영체제
    -Plug & Play, 향상된 Network 기능
    -단축 아이콘, 멀티태스킹, 다중 모니터 지원
    -OLE(Object Linking Embedding): 윈도우의 각종 응용 프로그램 사이에서 서로 데이터를 공유할 수 있는 기능
    -불안정성

  • 유닉스(UNIX)
    -코드의 대부분을 C언어를 사용하여 작성
    -대화식 운영체제(주로 CLI로 사용)
    -최소한의 커널 구조
    -멀티유저, 멀티태스킹, 계층적 파일시스템, 호환성이 높음
    -분산처리방식 지원
    -소스 코드 공개, 다양한 버전 존재

  • 리눅스(LINUX)
    -UNIX를 기반으로 만든 오픈 소스 운영체제
    -Open source
    -Free Software
    -UNIX와 완벽하게 호환


수많은 OS가 있는데 왜 해커들은 리눅스를 선호할까?
=> 해킹툴들이 리눅스에 맞춰서 개발되어있으며, 자유 소프트웨어, 오픈소스, 비용절감에 효율적

리눅스 (Linux)

  • 대화식 운영체제로 주로 CLI로 사용
  • 리눅스 디렉토리는 트리 구조

기본 명령어

  • 파일 목록 출력 : ls
    ls 옵션
    $ ls -a: .(점)을 포함한 경로 안의 모든 파일과 디렉토리 표시
    $ ls -l: 저장한 디렉토리의 내용을 자세히 출력
    $ ls -d: 지정된 디렉토리의 정보 출력

    파일/폴더 속성
    d : 디렉토리
    l : 링크
    _ : 파일

  • 현재 작업 디렉토리 확인 : pwd

  • 작업 디렉토리 변경 : cd
    $ cd ~ : 사용자의 홈 디렉토리로 이동
    $ cd . : 현재 디렉토리로 이동
    $ cd .. : 상위 디렉토리로 이동
    $ cd / : 루트 디렉토리로 이동

  • 파일이나 디렉토리 삭제 : rm / 복사 : cp / 이동 : mv

  • 디렉토리 생성 : mkdir / 삭제 : rmdir

  • 파일 내용 확인 : cat / 앞, 뒤 일부만 확인 : head, tail

  • 명령어 여러 개를 연결해주는 역할 : | (파이프)
    $ ls –la | grep txt : 현재 디렉토리의 파일 목록 중 txt가 존재하는 문장만 출력

  • 표준 입출력의 방향을 바꿔줌 : >,<,>>,<< (리다이렉션)
    $ ls –la > a.txt : 현재 디렉토리의 파일 목록을 a.txt 파일에 저장
    $ pwd >> a.txt : 현재 위치를 a.txt 파일에 저장 (기존 파일에 이어서 저장)
    $ sort < a.txt : a.txt 내용을 정렬해서 출력

  • 파일 위치 찾기 : find
    $ find /etc –name "*.conf" : /etc 디렉토리 하위에 *.conf 파일 찾기
    $ find /home –user ubuntu : /home 디렉토리 하위에 소유자가 ubuntu인 파일 찾기

+) 모든 명령어들을 다 외울 수는 없으므로
1. aprops 검색어
2. man 검색어
2. --help, -h 옵션

Sudo

  • super user do로, 명령어 앞에 붙어 관리자 권한으로 실행하는 것을 의미.
  • 아무나 sudo를 쓸 수 없음 (관리자 권한을 가진 root만 사용자 정보 저장된 파일 수정 가능)
  • • visudo 명령어로 사용자 정보가 저장된 파일 접근 가능

사용자와 응용 프로그램은 컴퓨터 시스템의 하드웨어인 CPU, 메모리,
입출력 장치에 직접 접근 불가 => 운영체제의 중재에 의해서 가능

쉘 (Shell)

명령어를 입력 -> 컴퓨터 내부의 쉘(Shell)이 받아 명령어를 해석 -> 명령을 전달받은 커널(Kernel)이 하드웨어를 조작

리눅스 구조

Kernel
운영체제의 일부분으로, 하드웨어를 관리하고 필요한 프로세스를 나눠주는 등 여러 시스템 자원을 제어하는 역할
Shell
명령어 해석기 프로그램으로, 운영체제의 커널과 사용자 사이의 인터페이스 역할

시스템 해킹의 목표 : 관리자 권한 얻기

Shell Code : shell을 실행시키는 코드

\xb8\x0b\x00\x00\x00\xba\x00\x00\x00\x00\xb9\x00\x00\x00\x00

위와 같은 형태로 쓰인다.

시스템 해킹에 성공하기 위해 관리자 권한을 얻어야 함
-> 쉘을 열어야 힘
-> 필요한 것들
System("/bin/sh")이나 execve("/bin/sh") 와 같은 함수들
=> 이것들을 기계어로 옮긴 것이 쉘 코드
쉘코드예시

Shell Script : shell에서 사용되는 명령어를 나열한 실행가능한 텍스트파일
쉘스크립트예시

문제풀이

1.HTB Academy - Linux Fundamentals

우선 SSH로 로그인
Workflow- Navigation
(1). What is the name of the hidden "history" file in the htb-user's home directory?

풀이: $ls -la 명령어를 사용하여 name of the hidden "history" file 확인

(2). What is the index number of the "sudoers" file in the "/etc" directory?

풀이: $ cd etc를 통해 etc로 이동 -> $ ls -i 명령어로 index number of the "sudoers" file 확인 (앞 6자리 숫자가 index number)
-i : 인덱스 번호를 출력하는 옵션

정답

Workflow- Working with File and Directories
(1). What is the name of the last modified file in the "/var/backups" directory?

풀이: $ cd var를 통해 var로 이동 -> var$ cd backups를 통해 /var/backups로 이동 -> $ ls -lt 명령어로 name of the last modified file 확인

(2).What is the inode number of the "shadow.bak" file in the "/var/backups" directory?

풀이: $ ls -i 명령어로 inode number(=index number) of the "shadow.bak" file 확인

정답

2. 문제

(1). 터미널에 어떤 명령어를 입력했을 때 'Permission Denied' 가 뜬다면 대부분의 경우 '이것'을 명령어 앞에 추가하면 이 문제가 해결됩니다. '이것'은 무엇일까요?
정답: sudo 추가

(2). 사용자를 추가한 다음, 해당 사용자가 sudo 권한을 이용할 수 있게 하세요.(힌트: visudo)

풀이:
$sudo useradd abc로 사용자 추가

$sudo visudo /etc/sudoers에 abc 추가

3. 파일 속성 문제

(1). 위 그림에서 ecopsWeek3.txt 파일을 분석한 것과 같이 'executablePrac.sh'의 정보가 무슨 뜻인지 설명해주세요.

  • -: 파일
    허가권: rwxr-xr-x(사용자, 그룹, 그 외)
    소유권: haeun haeun(UID, GID)
    용량: 83, 생성날짜와 시간: Sep 21 01:41
    파일이름: executablePrac.sh

(2). 어떤 임의의 사용자 'ewha'가 있다고 가정했을 때, ewha는 'executablePrac.sh'를 실행할 수 있나요? 답에 대한 이유도 설명해주세요.

  • 실행할 수 있다.
    허가권을 보면 rwxr-xr-x(사용자, 그룹, 그 외) 사용자, 그룹, 그외 모두가 사용할 수 있는 권한(x: execute)을 가지고 있기 때문이다.

4. 사용자 정보가 저장되어 있는 파일에 들어가서 가장 마지막 5명 사용자 이름을 써주세요.

(파일 내용 출력하는 명령어: cat)

$cat /etc/passwd를 입력하면 사용자 정보 확인 가능

마지막 5명 사용자: ftp, dovecot, dovenull, htb-student, mysql

FTZ Trainer level 1 ~ 5

level 1

ls: 리스트 출력
ls -l: 파일과 디렉터리 리스트 출력
ls -a: 숨겨진 파일의 리스트 출력 이때 숨겨진 파일은 앞자리에 “.”이 들어감
ls -al: 숨겨진 파일과 디렉토리 리스트 출력

level 2

pwd: 현재 경로 출력
cd ..: 경로 한단계 위로
cd /: root 디렉토리로 이동

mkdir: 디렉토리 생성
rmdir: 디렉토리 삭제

rm: 파일 삭제
cp: 파일 복사
mv: 파일 복사 -> 파일 붙여넣기 / 파일 이름 변경

level 3

w: 서버에 접속한 사람들 확인 / TTY 콘솔접속, PST 터미널 접속
finger -l: 해당 사용자에 대한 자세한 정보 보기
tty: 자기 자신의 터미널 정보 확인
ifconfig: 현재 접속한 서버의 IP 확인
write ID/dev.pts/번호: 쪽지 보내기
wall "내용" : 모든 사용자에게 쪽지 보내기

level 4

디렉토리
bin: 가장 필수적인 리눅스 실행 파일(ls, rm, ..) 모두 이곳에 있음
boot: 리눅스 부팅 관련 파일들과, 커널(=리눅스의 심장)이 있음
dev : 컴퓨터에 설치된 하드웨어에 관한 정보들이 파일 형태로 저장
home: 일반 사용자들의 디렉토리가 들어있는 곳
root: 루트의 홈 디렉토리
lib : 라이브러리 파일들이 있음
mnt: mount 명령으로 마운트 시킨 시디롬 등이 들어있음
proc: 프로세스들이 파일 형태로 저장
sbin: 기본 명령을 제외한 시스템 관리용 실행 파일들이 들어있음 
tmp: 임시로 파일을 저장하며, 권한에 상관없이 누구나 이곳에 파일 생성 가능
usr: 다양한 응용 프로그램들이 설치되어 있음
var: 시스템 운영 중에 생성되는 각종 임시 파일들과 외부 접속에 대한 로그 파일들이 저장

파일
etc : 패스워드 파일, 쉐도우 파일, 그 외 대부분의 리눅스 설정 파일 등이 있음
/etc/passwd: 사용자 정보
/etc/shadow: 사용자의 패스워드 (아무나 보지 못하도록 설정)
/etc/services: 서버가 어떤 서비스를 활성화하는지 출력
/etc/issue.net: 처음 접속될 때 나오는 화면
/etc/motd: 로그인 후에 나오는 메시지
~/public_html: 사용자들의 홈페이지 파일

level 5

whoami: 자신의 기본 정보
id: 자신에 대한 자세한 정보
cat /etc/passwd: 서버를 사용하는 모든 사용자들의 정보
uname -a: 서버의 커널 버전 확인
cat/etc/*release: 서버에 설치된 os 버전 확인
rpm -qa: 패키지 정보 확인
cat/proc/cpuinfo: 서버의 cpu 정보 수집 가능

0개의 댓글

관련 채용 정보