분류 전체보기 219

SetUID

시스템 해킹을 하는 주요 목적은 권한 상승이다. 리눅스 시스템에서 외외로 합법적인 권한 상승 과정이 많은데 바로 setUID를 이용한 방법이다. 이는 /etc/passw의 일부이고 kali 이용자의 경우 uid를 1000 gid를 1000을 받는다고 적혀있다. 그리고 그와 같음을 확인할 수 있다. 패스워드는 설정할 때 passwd 명령을 사용하고 passwd로 패스워드를 설정하면 패스워드에 대한 암호화나 해시된 값이 /etc/shadow에 저장된다. UID, GID와 별개로 EUID, EGID가 있다. SETUID는 EUID를 0번으로 바꾸어 주어서 관리자와 같은 권한을 갖게 한다. passwd는 패스워드를 설정하는 명령어이다. 이 명령을 실행할 때는 우리 모두 관리자와 같은 권한을 갖게 된다. 이는 p..

Security_lab 2021.07.21

파일 접근 권한

임의의 파일과 디렉터리 생성 시 권한을 보자 r(read) = 4 w(write)=2 x(execute) = 1이다 user-gruop-other순으로 파악할 수 있다. a.txt의 경우 rw-r--r-- 이므로 644이다. a는 rwxr-xr-x 이므로 755이다. 리눅스에서는 파일 생성 시 기본 권한을 부여하고 이는 umask값에 의해 결정된다. 일반적으로 umask값은 /etc/profile에서 설정한다. 해당 profile에서는 bash 셸인지 profile.d인지에 따라 다른 umask를 사용하는 걸로 보인다. 파일은 최고 권한이 666이며, 디렉터리의 생성 최고 권한은 777이다. 디렉터리가 777인 이유는 디렉터리에 실행 권한이 없으면 디렉터리 안으로 들어갈 수 없기 때문이다. 이러한 권한 ..

Linux Unix lab 2021.07.20

shell code & assembly analysis

시스템을 공격할 때 셸 코드를 스택에 업로드해서 사용하는데 이때 코드는 스택에서 직접 실행될 수 있도록 기계어로 바꾸어 사용해야 한다. 위와 같이 셸 코드를 작성해보고 어셈블리 코드를 보려고 한다. 2학년 시스템 소프트웨어 시간에 attack lab과 bomb lab등을 하면서 어셈블리에 적응을 했었는데 그새 시간이 지나서 기억이 잘 나지 않는다. 기본적인 스택구조를 따르며 위에서부터 아래로 저장된다. 우선 기본적인 레지스터의 역할이 있으므로 한번 정리하고 가고자한다. 먼저 데이터 레지스터이다. RAX(Extended Accumulator Register) : 사칙연산 명령어에서 자동으로 사용, 리턴 레지스터 시스템콜의 실질적인 번호를 가리키는 레지스터 RBX(Extended Base Register) ..

Security_lab 2021.07.20

Host key verification failed.

맥에서 ssh를 통해 virtual box에 접근할때 주로 나는 오류이다. 상황은 다른 머신을 사용한다거나 호스트 ip가 바뀐다거나 하는경우이다. 이는 중간자 공격을 막고자하는것 같다. 이런식으로 뜨곤한다. 두가지 방법이 있는걸로 보여진다. 첫번째는 ssh key정보를 지워주면 새로 generate 한다. 두번째는 해당 ip에 대해 keygen을 시켜준다. 에러 내용에서 위치는 /var/root/.ssh/known_hosts이다 이 파일을 vi로 열어보면 이런식으로 뜨고 제일 밑에 있는 ip에 대한 키 정보때문에 일어나는 일이므로 이를 지워준다. 이제 오류가 안뜨고 접속이된다.

Issue 2021.07.19

Block Cipher mode

저번 글에서 Block Cipher에 대해 알아보았다. 그런데 또 mode라는 게 있는데 이게 무엇인가? 아마 이전의 Block암호화를 이해한 정도로 예상하자면 각 Block이 각각 따로 Feistel 구조에 의해서 암호화가 되는 시나리오일 것이다. 이런 구조를 ECB구조라고 한다. 원본의 펭귄 이미지가 ECB를 거치면 각각이 동일한 암호화 수준으로 암호화가 되므로 원본이 반영되어 유추가 된다. 그래서 큰 데이터에 대해서 적용할 때는 좋지 않다. 다음은 CBC모드이다. 이름에 Chain이 들어가 있는 것을 통해 어느 정도 유추할 수 있지만 Block이 chain처럼 연결이 되어 암호화가 된다. 자세히 보면 초기 벡터(IV)와 평문이 xor가 되고 key에 의해 암호화가 된다. 이 결과는 그대로 outpu..

Infomation_Security 2021.07.17

Block Cipher(블록 암호화)

이번에는 Block Cipher와 DES에 대해 알아본다. 우선적으로 Block Cipher는 대칭키 구조를 가진다. 여기서 대칭키란 암/복호화가 같은 키로써 대칭적으로 된다는 뜻이다. Block Cipher에서는 Block 단위로 나눈 후 해당 Block에 대한 특정 연산을 취한다. Stream에서는 XOR를 했던 것처럼 말이다. 대표적으로 Feistel구조에 대해서 알아볼것이다. Feistel구조는 Shanon의 SP Network에서 아이디어를 따왔다. S-P란 Substitution-Permutation을 뜻한다. 여기서 각각이 하는 역할은 무엇일까? Substitution은 S-Box에 의해서 이루어지며 이는 Confusion을 제공한다. Permutation은 P-Box에 의해서 이루어지며 이..

Infomation_Security 2021.07.17

Stream Cipher

이번에는 Block, Stream Cipher에 대해 살펴보고 Block Cipher의 대표적인 DES에 대해 살펴볼 것이다. 쉽게 말하자면 Block은 Block단위로 암호화되고 Stream은 한 비트 또는 Byte level로 암호화된다. 물론 Byte를 하나의 Block으로 보진 않는다. 각 Cipher 과정에 들어가는 Input을 보게 되면 Stream의 경우 x0, x1... xb가 Stream 형식으로 들어가는 것을 표현하였고 Block의 경우 x0,x1 ... xb가 하나의 block으로 들어가는 것을 표현하였다. 스트림을 보면 독특한 구조를 가진다. 이는 평문의 값을 key stream과 xor 하여 암호문이 나온다는 것이다. 그리고 다시 암호문을 xor 하면 평문이 나온다. 여기서의 xo..

Infomation_Security 2021.07.16

Introduction to Cryptograph and Security

정보보안의 시작은 위협을 파악하는 것이다. 보안의 3대 요소는 이렇게 3가지로 분류가 된다. 1. 기밀성(=Confidentiality) 2. 무결성(=Integrity) 3. 인증(=Authentication) 이 외에도 부인방지, 접근제어, 가용성 등이 있다. 현대의 암호화 기술을 보기전에 고전적인 방법부터 살펴보자. 크게 4가지 정도로 알아볼수가 있다. 첫째로 Shift Cipher이다. 직역하여 해석해도 의미가 맞다. 이는 주어진 평문을 Shift 하여 암호화가 이루어진다. 여기서는 3칸을 이동시킨것을 알 수가 있다. 이러한 암호화 기법을 수학적으로 표현한다면 x+k(mod 26) => y이다. 실제로 이러한 Shift Cipher를 시스템에 적용하고 싶다면 mod연산을 이용하면 될 것이다. 이러..

Infomation_Security 2021.07.16

1. Computer Architecture & Organization

기본적인 컴퓨터 구조에 앞서 Level of Representation에 대해 보겠다. 고급어의 경우 프로그래머의 가독성과 호환성을 위해 작성되는 언어이고 컴파일러를 통해 목적파일 또는 어셈블리어로 바뀌어 생성된다. 어셈블리어는 기계어와 일대일 대응이 되는 컴퓨터 프로그래밍의 저급 언어이다. 이는 어셈블러를 통해 번역되어 기계가 인식할수 있는 0,1로 구성된 언어로써 실행이 될수 있다. Computer Architecture 와 Organization에 대한 설명이다. 단어 그 자체로만 봐서는 두 가지 의미가 다르지 않게 보이지만 조금 더 명확히 구분하자면 Architecture는 프로그래머에게 더 직관적이며 Software적이고 Organization은 하드웨어 적인 부분이라고 볼 수 있다. 컴퓨터 디..