학원

2023/06/29 UID, Pssword Cracking

맹진호 2023. 6. 29. 18:02

20230629 계정

레드헷이 복사 이런게 잘 안되기 때문에 윈도우에서 원격접속을 할것


레드헷에서
cd /etc/sysconfig/network-scripts로 이동해주고 ll로 확인해줌


vi ./ifcfg-eth0로 들어가서 이렇게 설정 해준다.

DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.21
NETMASK=255.255.255.0
GATEWAY=192.168.1.2

service network restart를 한번 쳐서 재접속을 해줘야 ping이 간다

win_xp에서 한글 putty로 접속했을 때 root가 아닌 일반사용자로 접속해야함 그리고 비밀번호는 123456으로 설정

============================================



리눅스는 root와 user이라는 두 개의 계정이 있고
윈도우는 administrator, user, system이라고 세 개의 계정이 있다.

리눅스는 계정을 vi /etc/passwd로 확인할 수 있음
첫번째 줄에 root는 사용자 명이고 x는 암호화된 password가 저장된것이다.이것은 etc/shadow
세번째에 0은 UID 네번째 0은 GID이다. 다섯번 째 root는 코멘트이다. /root는
홈디렉터리이다.


리눅스에서 최상위에서 mkdir test로 test를 만들어주었다.
거기게 chmod 777로 권한을 다 주었다.
거기서 cd로 이동해 test로 갔다. 거기서


?왜 일반사용자가 권한이 없는데도 비밀번호를 수정할 수 있는가?

일반 사용자는 etc/shadow파일을 수정할 수 없는데 명령어를 사용해서 변경할 수 있는데 이 명령어가
bin파일안에 passwd에 있어서 하는건데 이 파일은 SetUID를 가지고 있어서 root권한을 빌려와서 바꿀 수 있는 것


# UID, RUID(Real user ID)
- 계정 식별
# EUID(Effective UID)
- 프로세스 권한을 결정
# SUID(Save)
- EUID를 저장,복원


yum -y install gcc-*으로 설치해주고
test아래에 setuid setuid.c

vi setuid.c로 들어가서 함수를 사진과 같이 입력함

gcc -o setuid setuid.c 
ll
로 확인해봄 이렇게 뜬다면 문서편집기에서 잘 입력한 것

./setuid로 UID와 EUID를 확인해봄


setuid(500)
printf(); 을 다시 입력해주고 gcc -o setuid setuid.c를 해서 컴파일을 확인해주고 
./setuid를 확인함 전이랑 다르게 나오는걸 확인 가능

root에서 실행할 경우 이런식으로 나옴 두번 째에 나온 UID와 EUID는 Setuid로 부터 500으로 바뀌었다.

일반사용자에서 확인해보면 이런식으로 나오게 된다.



#setuid를 이용해 권한 상승 실습 ( 1번과2번은 위에서 한것 ) 

1. file의 소유자가 root이고, root로 실행할 경우, UID, EUID확인

2. file의 소유자가 root이고, 일반 계정으로 실행할 경우 변화 확인

3. file의 소유자가 root이고, setuid가 설정되어 있을 때 일반 계정으로 실행할 경우 확인

chown root:root ./setuid로 소유자를 일반 계정인 jinho로 바꿔봄
4. file의 소유자가 일반 계정이고, setuid가 설정되었을 떄 결과 확인

# 권한 상승의 조건
1. 소유자가 root
2, setuid 설정




윈도우에서

at 14:13 /interactive "calc.exe:" 하면 14시 13분에 계산기가 실행된다.
그리고 at하면 내가 에약한걸 확인할 수 있다.

at 14:12 /interactive "cmd.exe"하면 새로운 cmd창이 뜨게 될것이다.

여기서 보이는 explere를 프로세스를 종료하면 아래에 바가 없어지는데

새로 뜬 창에서 explorer.exe에서 확인해보면


윈도우에 계정 3개 cmd에서 net user test1 1234 /add
리눅스에 계정 3개 # useradd test1   # passwd 1234
# 계정 만들기
-test1 /1234
-test2 /qwer
-test3 /qw12
여기서 중요한것은 패스워드


#Pssword Cracking
- Brute force Attack(무차별된공격)
- Dictionary Attack(사전공격)

패스워드 저장 위치 /어떤 형태로 저장되어있는지


리눅스에서 root계정의 패스워드와 일반계정의 패스워드를 똑같이 하게된다면 해쉬알고리즘으로 똑같이 하게된다면
결국 패스워드를 유추가 가능하기 때문에 거기에 salt값이라는 것을 추가하게 된다. 그러면 해쉬 알고리즘에 따라
같은 패스워드라도 다른 암호로 보이게된다.

password -> hash algorithm -> hash value
   +
salt



윈도우에서 cain이라는 프로그램을 다운받아서 실행해준다.

위쪽 열쇠부분의 Cracker을 누르게 된다면 이런 화면이 뜬다.

아까 만들었던 test1, test2, test3를 우클릭해서 Brute-Force Attack을 누르고 맨 위로 누르게 되면

이런 화면이 뜬다.  위에서 Predefined에 보면 규칙을 정할 수 있고 start를 누르게 되면

바로 비밀번호를 찾게 된다.






윈도우에서 리눅스에 파일을 옮기기 위해 GUI를 설치한다.
yum -y groupinstall “GNOME Desktop” “Graphical Administration Tools”
를 쳐준다.
sysetmctl set-default graphical.target
systemctl get-default
reboot를 쳐주면 새로운 창이 나오게 된다.
윈도우에 파일을 Linux에 있는 TEST파일 안에 압축을 풀어줌

cd ./test로 이동해주고 그 안에 john으로 이동해주고 src로 이동해서 make clean lunux-86-64
로 설치해주고
cd /test/john-1.7.9/run로 이동해주고 ./john /etc/shadow로 쳐준다.
그리고 /john --wordlist=password.lst /etc/shadow쳐주고 마무리쳐준다.



test로 이동해서 gedit hash.c로 들어가서 이렇게 함수를 넣어준다.
패스워드는 반드시 문자열로 표시해줘야하기 때문에 따옴표로 표시해줌

그리고 새 창을 열어서
gcc -o hash hash.c -lcrypt를 작성해 컴파일 하는 것.

그리고 ./hash를 작성해준다.
이것이 디폴트인 앞에 두자리가 salt값이다.

 

 

 

 

 

 

 

Tool만들기 과제




Quiz 1) Brute Force Attack Tool 만들기

가정
- Crack 할 계정의 비밀번호는 숫자이고,4자리이다.
- 현재 관리자 권한을 획득하여, /etc/shadow 파일을 열람할 권한이 있다.

* 선택지
파일입출력할지 (난이도가 있음), shadow파일에 있는 해쉬값을 복붙해도 된다.

-실행 
예시 ./bruteforce test1 파일입출력안할꺼면 test1지우고 저것만 써도 됨



Quiz 2) Dictionary Attack Tool 만들기

- Dictionary file:
test
pass
password
test01
...

- Crack할 계정의 비밀번호가 사전파일에 저장되어 있다.
- Default hash값으로 처리해도 된다. (앞에 2자리만 salt값)

- 실행 
예시 ./dicattack wordlist hashvalue