쉘코드
by #독개#쉘코드란
▶ 시스템의 특정 명령을 실행할 수 있는 기계어 코드
▶ 쉘을 실행시키기 위한 기계어 코드
▶ 소프트웨어 취약점 이용을 위한 내용부에 사용
Exploit : 프로그램에 존재하는 취약점을 공격하는 행위
Payload : Exploit을 위해 프로글매에 입력되는 데이터 (공격코드 + 의미없는값)
해커의 명령을 수행하는 코드와 공격 조건을 맞추기 위한 의미 없는 값으로 구성
쉘코드 제작
초급 : C언어 -> 어셈블리어 -> 기계어
고급 : C언어 -> 어셈블리어 -> 기계어
라이브러리 함수 & System Call 함수
라이브러리 함수 : 사용자들이 사용하기 쉽게 라이브러리 화해서 임의로 만들어둔 함수 (라이브러리 파일 필요)
System Call 함수 : 실제 커널에서 사용하는 함수라고 보면된다 (커널에 User가 직접 명령을 줄 수 있는 함수)
printf(); 라는함수는 <stido.h>에서 만들어둔 함수이다.
근데 커널에서 출력하는 함수는 write(); 이다.
printf(); 라는 함수를 실제 오픈해보면 write();라는 함수를 호출하도록 되어 있을것이다. (물론 다른 내용들도 있을거다)
printf("i2Sec\n"); -> write(1, "i2Sec\n", 6); -> 커널에서 출력
System Call 함수를 이용하면 어디서든 라이브러리가 없어도! 커널에 다이렉트로 명령을 줄수가 있다.
동적 컴파일
▶호출하는 함수를 포함시키지 않고 실행하는 컴퓨터의 공유라이브러리에서 찾아와서 사용하겠다.
▶프로그램 용량절약
▶대부분의 서비스들은 이걸로 컴파일 (걍 기본값)
▶디버깅시 불편함(얘내가 호출하는 라이브러리까지 가야하니까)
#gcc -o 결과 소스
정적 컴파일
▶호출하는 함수의 모든 라이브러리(소스)파일을 포함해서 통으로 컴파일
▶프로그램 용량 많아짐
▶디버깅시 편리함(이안에서만 하면되니까)
#gcc -o 결과 소스 -static
이 프로그램이 어떤 System Call함수를 이용하는지 모르겠다? (strace사용)
▶ 리눅스에 시스템콜분석 #strace 도구 기본내장 되어있는데 이를 활용 (심화로 이걸로 디버깅도 가능하네 ㄷㄷ)
'🧛♂️ 해킹 > 시스템해킹' 카테고리의 다른 글
가상메모리, 커널영역, 유저영역, 시스템콜함수 (0) | 2020.06.25 |
---|---|
쉘코드 제작 (0) | 2020.06.24 |
백도어 ,백도어 탐지, 백도어숨기기 (0) | 2020.06.22 |
권한상승 (0) | 2020.06.22 |
패스워드 크래킹 (0) | 2020.06.21 |
블로그의 정보
독한 개발자
#독개#