목록Information security/System security (34)
nemo의 이야기
leviathan2에 로그인하면 printfile이라는 파일이 존재한다. 프로그램을 분석하면 파일을 접근하여 cat 명령어를 이용하여 해당 파일에 저장하는 프로그램이라는 것을 알 수 있다. 해당 파일에 접근 권한을 생각하였을 때 패스워드가 들어있는 /etc/leviathan_pass/leviathan3에 대한 링크를 걸어 test.txt에 패스워드가 저장 되게 만들어야 될 것이다. 그럼 공격 코드를 작성해 보자 우선 명령어를 읽은 수 있는 텍스트 파일을 만들어보자 #> vi "test.txt asdf" #> ln -s /etc/leviathan_pass/leviathan3 asdf asdf 라는 이름으로 패스워드가 들어있는 파일을 링크를 걸었다. #> ./printfile "test.txt asdf" 꼭..
#> ls -al 을 입력하면 leviathan2에 권한을 가지고 있는 check라는 파일이 있다. ltrace를 이용하여 check를 분석해 보았다. #>ltrace ./check 위에서 확인하면 strcmp에 사용자가 입력한 값과 "sex"라는 단어가 보일 것이다. strcmp로 사용자가 입력한 값과 sex 단어가 같지 않으면 Wrong password, Good bye라는 단어를 출력하고 맞으면 system("/bin/sh")를 실행할 것이다. 이로써 프로그램 분석을 끝내고 실제 파일로 가서 실행시켜보자 위와 같이 패스워드를 확인할 수 있다.
취약점 분석 연습을 할 수 있게 만든 워 게임이라고 만든 서버이다. 이는 프로그램의 알고리즘을 파악하여 역공학을 한다는지 또는 binary에 숨겨진 암호를 찾아서 정답을 맞추면 다음 스테이지로 가는 암호가 주어진다. 처음문제로 leviathan0를 풀어보자 사이트는 http://overthewire.org/wargames/leviathan/ 위 에서 보듯이 .backup 권한이 leviathan1이 있는 걸 확인할 수 있다. vi 명령어를 사용하여 .backup을 실행시켜보면 html문서가 나오는데 홈페이지 기록 검색이라는 걸 확인해 볼 수 있다. 여기에서 password를 찾기 위해 pass를 검색해보면 password for leviathanl is rioGegei8m 를 확인할 수 있다.
바이너리 분석(리버싱) - 분석에 종류에는 정적분석, 동적분석이 있다. 정적분석은 프로그램을 실행하지 ㅇ낳고 기게어만 보고 판단하는 것이고 동적분석은 코드를 하나씩 실행시키고 작동원리를 확인하는 것이다. 프로세스는 커널만이 접근을 할 수 있고 다른 프로세스가 접근할 수 없다. 그래서 커널은 GDB에 권한을 부여하여 GDB를 통해여 프로세스에 접근할 수 있다. 우선 GDB에 기본 명령을 확인해보자 gdb를 실행하기 위해서는 다음 명령어를 실행해야 된다. #> gdb 프로그램을 분석하기 전에 우선 자신에게 맞는 문법을 설정해줘야 된다. (gdb) set disassembly-flavor intel (intel 문법) 그리고 메모리상에 어떤 값들이 들어있는지 확인하기 위해서 브레이크 명령이 필요하다. (gdb..