본문 바로가기

Reversing

Reversing/Tool/Radare2 OverView

반응형

RADARE2 FRAMEWORK

#설치
$ cd radare2/sys/
$ sudo ./install.sh

# radare2
-UNIX 기반 시스템 환경에서 리버스 엔지니어링에 사용되는 프레임워크, 리버싱과 시스템 해킹을 할때 구분없이 자주 쓰인다.

# rabin2
-ELF, PE, Java CLASS, Mach-O와 같은 실행가능한 바이너리에서 정보를 추출하는 프로그램
  • symbols과 imports, 파일 정보, cross references(xrefs), 라이브러리 의존성, 섹션 정보 등

# rasm2
-다수의 아키텍처를 지원하는 커맨드라인 어셈블러, 디스어셈블러
  • intel x86, x86-64, MIPS, ARM, PowerPC와 Java 지원
-예시 1 : java로 'nop' 명령어를 어셈블
$ rasm2 -a java 'nop'
00

-예시 2 : x86으로 '90'을 디스어셈블
$ rasm2 -a x86 -d '90'
nop

-예시 3 : x86으로 32비트 'mov eax, 33'을 어셈블
$ rasm2 -a x86 -b 32 'mov eax, 33'
b821000000

-예시 4 : 특정 입력으로 인자 받아서 어셈블
$ echo 'push eax;nop;nop' | rasm2 -f -
509090

# rahash2
-블록 기반 해쉬 도구
  • 작은 문자열에서 큰 disks까지 다수의 알고리즘 지원 = 아주 큰 파일과 메모리 덤프, 디스크 지원
    • MD4, MD5, CRC16, CRC32, SHA1, SHA256, SHA384, SHA512, par, xor, xorpair , mod255 hamdist, entropy 지원
  • 무결성 체크 가능
  • 바뀐 값 추적 가능
-실행 화면

  • 기본 값은 sha256으로 보임

# radiff2
-바이너리 디핑 기능
  • 바이트 레벨 디핑
  • 델타 디핑
  • 코드 분석 디핑
  • rsc idc2rdb 스크립트 사용
    • IDA 분석 기능에서 가져옴

# ragg2
-r_egg를 위한 프론트 엔드(?)
  • ragg2가 프로그램을 컴파일
    • x86, x86-64 와 ARM 지원
  • .r 파일과 몇몇 high-level 언어를 컴파일 하기 위한 도구로 보여짐
-예시 1 : hi.r 컴파일
   $ cat hi.r
   /* hello world in r_egg */
   write@syscall(4); //x64 write@syscall(1);
   exit@syscall(1); //x64 exit@syscall(60);

   main@global(128) {
     .var0 = "hi!\n";
     write(1,.var0, 4);
     exit(0);
   }
   $ ragg2 -O -F hi.r
   $ ./hi
   hi!

   $ cat hi.c
   main@global(0,6) {
     write(1, "Hello0", 6);
     exit(0);
   }
   $ ragg2 hi.c
   $ ./hi.c.bin
   Hello

# rarun2
-현재 r2가 설치된 플랫폼의 환경과 다른 환경에서 작동되는 특정 프로그램을 위한 실행 런처
  • 다른 인자 가짐
  • 다른 권한 가짐
  • 다른 디렉토리 가짐
  • 덮어써진 기본 파일 디스크립터를 사용 = 기존것에 런처 실행시에 일시적으로 덮어써서 I/O한다는 뜻으로 생각
  • rarun2를 쓰면 유용할 때
    • crackmes
    • Fuzzing
    • Test suites
-예시 1 : 스크립트 실행
   $ cat foo.rr2
   #!/usr/bin/rarun2
   program=./pp400
   arg0=10
   stdin=foo.txt
   chdir=/tmp
   #chroot=.
   ./foo.rr2

-예시 2 : Socket을 실행
   $ nc -l 9999
   $ rarun2 program=/bin/ls connect=localhost:9999

-예시 3 : 다른 터미널로 IO를 리다이렉팅해서 프로그램을 디버깅
  • 새로운 터미널 오픈
$ tty ; clear ; sleep 999999
/dev/ttyS010
  • 연결
#!/usr/bin/rarun2
program=/bin/ls
stdio=/dev/ttys010
  • 실행
r2 -R foo.rr2 -d /bin/ls

# rax2
-쉘상에서 다수의 변환을 지원
  • 실수형
  • 헥사 변환
  • 아스키 변환
  • 8진수 -> 10진수
-예시 1 : 10진수를 16진수로
$ rax2 1337
0x539
-예시 2 : 16진수를 10진수로
$ rax2 0x400000
4194304
-예시 3 : 바이너리를 문자로
$ rax2 -b 01111001
y
  • 세부적인것은 rax2 --help 명령으로 ..



반응형

'Reversing' 카테고리의 다른 글

Reversing/Tool/gdbgui 설치  (0) 2018.03.29
Reversing/Tool/miasm 설치/오픈소스 리버싱 프레임워크  (0) 2018.03.29
RCE/CodeEngn/BasicRCE07  (0) 2018.02.05
RCE/CodeEngn/BasicRCE06  (0) 2018.02.05
RCE/CodeEngn/BasicRCE05  (0) 2018.02.05