본문 바로가기

project/MIPS(EL) 32bit analysis

5. RTL공격 더보기
4. 쉘코드를 이용한 간단한 BOF공격 랜덤스택을 해제 하고, LANG환경변수 설정을 해 주었다. argv2를 이용한 많은 NOP sled를 통해서 공격하였다. 주의할 점은, shellcode가 35바이트 이기 때문에 RISC구조라서, 명령어가 깨지니, NULL을 넣을 수 있는 취약점이라면 NULL을 넣어주고, 아니라면, "/bin//sh"도 유효함을 이용해서 36바이트로 4의 배수를 맞춰준다. 더보기
3. 쉘코드 제작 간단한 프로그램을 통한 system call을 어떤식으로 하는지 보았다. gdb로 open해서 mkdir함수를 따라서 들어가 보면, 시스템 콜 번호를 가지고 있는 헤더는 /usr/include/mipsel-linux-gnu/asm/unistd.h 에 있다. 특이한 점은 기준점이 4000이고 그걸 기준으로 시스템 콜 번호가 매겨진다. 그럼 v0에는 시스템 콜 번호를 넣으면 되고, a0에는 "sanguine"문자열 주소가 들어 가 있다. 그럼 이제 execve를 하는 쉘코드를 만들어 보자. execve의 시스콜 번호는 4011이다. 간단히 코딩해서 execve가 불릴당시 레지스터를 확인해보면 MIPS system call table을 쉽게 확인할 수 있다. 이처럼 3가지 인자는 a0, a1, a2를 통해서 .. 더보기
2. 프로그램 분석 스터디의 목표가 임베디드에 대한 어플리케이션 레벨에 대한 공격인 만큼, 원래 간단한 바이너리 부터 흐름을 천천히 분석 해 보면서, 변수선언 / 값 대입 / 함수호출 / 다양한 데이터형 에 관한 주제로 분석을 해 볼려고 했지만, 진도를 좀더 빠르게 빼기 위해서 실제 bof취약점이 있는 코드를 컴파일 해서 분석 해 보기로 하였다. 예제코드는 다음과 같다. /**************************** leaveret embedded study disable NX Make shellcode and attack!*****************************/#include #include int main(int argc,char *argv[]){char buf[100];strcpy(buf,argv.. 더보기
1. 환경구성 qmeu로 ubuntu에 에뮬레이팅을 통해서 시스템 구축을 했다.일단https://people.debian.org/~aurel32/qemu/ 에서 image와 해당 커널을 받을 수 있다. 나는 MIPSEL wheezy계열 이미지를 받고 32비트용 커널을 받았다.해당 사이트에 아래쪽에 설정하는 법이 잘 설명 되어 있으니 쉽게 설정 할 수 있다.그 다음에 할 있은 MIPS용 qemu를 받는것인데, apt-get install qemu-system-mips을 입력하면 시스템에 mips용 qemu가 설치된다. 그다음 매번 이미지와 커널을 인자로 주고 qemu를 설정 시키면 귀찮으니, 스크립트를 통해 실행시킬 수 있도록 만들어 준다. root@ubuntu:~/MIPS# cat > MIPSEL-qemu #!/bin.. 더보기