본문으로 바로가기

[해커스쿨 ftz - 3] trainer 1~5 정리

category 해킹/FTZ 2016. 6. 6. 15:17

- trainer1


시작이네요. 모든 Training과정을 마치면 중급자수준의 리눅서가 된답니다. 열심히해야죠!!

처음에 리눅스에 접속하게되면 "프롬프트"라는것이 나타나며 이것은 서버에 성공적으로 로그인을 하게 되었다는 것을 의미합니다.


[trainer1@ftz trainer1]$

접속ID 서버 현재위치


이 "프롬프트"란 것은 항상 대기상태에서 여러분이 어떤 명령을 내리기만을 기다립니다.
ls : 디렉토리/파일 리스트 출력
ls -l : 디렉토리와 파일 구분 ex)



  -rw-rw-r--   1   trainer1   trainer1   779   9월  24일   18:37  start.txt

> 9월 24일 18:37 = 파일이 생성된 날짜

779 = 용량

> trainer1   trainer1  = 권한

> -rw-rw-r-- 파일의 mode와 성격

(이부분은 level1을 풀면서 훨신 자세하게 찾아봤기때문에 이해가 됬습니다.)


파일/디렉토리 구분 : 앞부분이 -이면 파일, d이면 디렉토리(directory)
ls -a : 숨겨진 파일 출력 (숨겨진 파일은 앞자리에 "."이 들어감)
ls -al : 숨겨진 파일/디렉토리 (지금까지는 그냥 모르고 이명령어하나만썻는데 합쳐져있는 기능이였네요)


- trainer2 (linuxer)


pwd : 현재 경로 출력
cd .. : 경로를 한단계 위로
cd 디렉토리 : 경로를 한단계 내림
cd / : 최상위 디렉토리로 이동
mkdir 디렉토리명 : 디렉토리 생성
rmdir 디렉토리명 : 디렉토리 삭제
cp 파일 이름(1) 파일 이름(2) : 파일(1)을 복사하여 파일(2)로 붙여넣기
rm 파일 이름 : 파일 삭제
mv 파일 이름(1) 파일 이름(2) : 파일(1)을 복사하여 파일(2)로 오려넣기 (이 명령은 파일 이름을 변경할 떄 많이 쓰인다.)

- trainer3 (computer)


w : 사용자 로그인정보와 현재 작업내용 확인 (이떄 제가 접속했을때는 root를 제외하고는 아무도 없었습니다..)

  guest    pts/0    201.95.24.129    03.21am    3.10m    0.12s    0.01s    -bash

> 어떤 ID로 로그인했는지 보여줍니다.
이것은 콘솔로 접속을 했는지, 또는 터미널로 접속을했는지 보여줍니다. tty 는 콘솔접속, pts는 터미널접속을의미합니다.
(저는 서버를 구축할때 리눅스를 가상머신에 설치했으므로 pts라고 출력됬습니다.)
> 접속한 사람의 컴퓨터 ip를 보여줍니다. (콘솔접속은 나오지않음)
> 어느 시간에 로그인 했는지 보여줍니다.
> 이것은 지연시간으로서 사용자가 얼마나 오랫동안 아무것도 입력을 하지 않고 쉬고있는지를 알 수 있습니다.
> 이것은 각 사용자가 CPU를 사용한 지연 시간을 보여줍니다.
> 이것은 WHAT 필드에 있는 명령이 지연된 시간을 보여줍니다.
> 이것은 속된 사용자들이 현재 어떤 명령을 사용하고 있는지를 보여줍니다.


finger -l : 서버에 접속한 유저 목록 자세히 출력
tty : 자신의 터미널 확인
ifconfig : 접속한 서버의 ip 확인
write ID /dev/pts/번호 : 쪽지 보내기 <w명령어로 pts번호를 확인한다음 쪽지를 보낼 수 있습니다. (예 : write guest /dev/pts/2)>
wall "내용" : 모든 사용자에게 쪽지 보내기

(직접 putty를 몇개 더켜서 실험해본결과 진짜 됬습니다. 신기하네요.)


- trainer4 (mungguta)


여기서는 제가 별도로 다시 정리하려했던 리눅스의 디렉토리에 존재하는 파일에대한 설명입니다.

윈도우에 C드라이브속에있는 파일들이라고 생각하시면 편하겠네요~

최상이 디렉토리에서 ls -al을 쳐본 결과입니다.


bin : 가장 필수적인 리눅스 실행 파일 (기본적인 실행 파일)
boot : 리눅스 부팅 관련 파일과 커널
dev : 하드웨어에 관한 정보
etc : 패스워드 파일, 쉐도우 파일, 리눅스 설정 파일 등 (리눅스의 설정 파일)
/etc/passwd : 사용자들에 대한 간단한 정보
/etc/shadow : 사용자들의 패스워드 (아무나 보지 못함)
/etc/services : 어떤 서비스를 하는중인지 보여줌
/etc/issue.net : 처음 접속될 때 나오는 화면
/etc/motd : 로그인 후에 나오는 메세지
~/public_html : 각 사용자들의 홈페이지 파일
home : 일반 사용자들의 디렉토리가 들어가는 곳 (일반 사용자들의 아이디와 작업공간)
lib : 라이브러리 파일
mnt : mount 명령을 사용하여 마운트 시킨 시디롬, 플로피 디스켓 등이 들어가는 디렉토리
proc : 프로세스들이 저장
root : 루트의 홈 디렉토리
sbin : 기본 명령을 제외한 시스템 관리용 실행파일
tmp : 임시로 파일을 저장하는 디렉토리 (누구나 이 디렉토리에 파일 생성 가능)
usr : 다양한 응용 프로그램들이 설치되어 있는 곳
var : 시스템 운영 중 생성 되는 각종 임시 파일과 외부 접속에 대한 로그 파일


(이것에 대한것은 리눅스 마스터카테고리에 "리눅스 디렉토리 구조글" 을보시면 더 자세히 정리했습니다.)

- trainer5 (goodluck)


'해킹의 첫 단계는 정보수집이다' 라고합니다. 그래서 trainer5에서는 해킹을 시도하려는 서버의 정보를 수집하는 방법을 배우는것같아요~


whoami : 자신의 기본 정보
id : 자신의 자세한 기본 정보
cat /etc/passwd : 서버에서 활동중인 사람들의 계정 정보
uname -a : 리눅스의 커널 버전 (커널은 리눅스의 심장부 역할을 하는 파일로서, 이커널에 버전의따라 성능도 차이가납니다. 서버에 아이디가 있는 상태에서 정보를 캐낼때 가장 먼저 하는것이 이 커널 버젼을 보는 것입니다.)
※ 2.2.18 이전 버전의 모든 커널들엔 취약점이 있습니다. 나중에 실력이 좋아진다면 이 커널만 가지고도 많은 서버의 root권한을 획득할 수 있을겁니다. ( root 권한이란 리눅스나 유닉스에서 모든 파일을 관리하는 절대적인 관리자 권한 )
cat /etc/*release : 설치된 OS의 버전
rpm -qa : 패키지의 정보

※ 패키지란 한 프로그램에 그프로그램이 실행되기 위해 존재하는 부속 파일들을 합쳐서 패키지라고한다. 패키지에 관한 정보를보고서 해킹이 가능한지 아닌지를 판단할 수 있다. 예를들어 sendmaill의 버전이 8.10.1 이하로 나타나면 해킹이가능하며, glib버전이 2.1.2 이하일 떄도 똑같은 생각을 할 수있고, perl의버전, pam의 버전을보고도 해킹 가능여부를 판단 할 수 있습니다.
cat /proc/cpuinfo : cpu 정보


참고자료 : 해커스쿨에 <초콜렛나인>님의 글

후기 //
중간에 티스토리 글을쓰면서 계속 이것을 진행하다보니까 제가 아직 블로그 글쓰는데에 미숙해서 글에 색이나 이런것에 오류가나서 원래는 10까지 전부 정리하려했던것을 5에서 일단은 끝냅니다. 글에 오류가 있더라도 양해하고 봐주시면 감사하겠습니다. 그리고 트레이닝 1~5를 하면서 아무생각없이 level1을 풀어보면서 정리했던 자료들이 하나씩 생각나면서 더잘 외워지는것 같습니다. 매우 재밌었고 특히 putty를 3~4개켜서 wall 명령어를치고나서 모든 putty에 제가친 말이 나왓을떄 쾌감이란.. 신기하고 재밌었습니다. 그리고 리눅스 마스터를 공부하면서 도움이됬던것도 있었기에 좀더 수월하게 읽을 수 있었습니다. 서버의 정보를 알아보는 명령어들도 엄청 재미있게했고 아무것도 모르던 리눅스를 그래도 어떤건지는알고, 좀더 쉽게 생각되는것 같습니다. 여기까지는 별로 어려운게 없는것 같지만 제가 level1을 푼다고 고생한것 덕분에 쉬웠던것도 같네요~ 중간중간에 (이렇게된글) 들은 제가 그때 그걸하면서 생각한부분입니다.