local bof만 하다가
remote bof가 무엇인지 모르는 분들?-나
local bof의 경우에는 해당 서버의 계정이 있을 때 서버에 접속하여
root 권한 아니면 자신보다 더 높은 권한을 얻을 수 있게 된다.
그런데 해당 서버에 계정이 없을 때는
지금 말하는 remote attack을 하면 된다.
remote bof는 서버에서 제공하는 취약한 서비스 프로그램을
exploit하여 해당 서비스를 실행하는 데몬의
실행권한(쉘)을 가져올 수 있게 된다.
그럼 xinetd로 작동하는 프로그램에 대해서 remote bof를 해보도록 하겠다.
데몬의 두가지 실행 모드
1. xinetd 수퍼데몬에 의해 제어되는 서비스 데몬
2. 독립적으로 실행되는 Standalone 환경의 서비스 데몬
xinetd 수퍼 데몬의 서비스 데몬에 대표적으로 telnet이 있다. 서버로 telnet 접속을 시도하면
/etc/xinetd.d/telnet에 정의되어 있는 telnet 서비스 데몬과 연결하여 서비스를 제공해주는 형태이다.
standalone환경의 서비스 데몬은 socket 생성, bind(), listen()등의 과정을 통해서 만든 독립적인
서비스 프로그램 형태이다.
xinetd에 데몬과, Standalone 데몬의 bof exploit시 큰 차이점은
xinetd 데몬의 경우에는 표준 입출력의 주체가 서버에 접속한 클라이언트가 되지만,
standalone의 경우에는 클라이언트의 통신을 표준 입출력이 아니라
socket을 생성하고, send(), recv()로 데이터 입출력을 한다는 것이다.
여기서 우리가 standalone의 독립적인 프로그램을 bof exploit하는데 일반
local exploit에 사용하던 쉘코드를 사용한다면 어떻게 될까??
bof에 성공했다면 쉘을 얻을 수 있겠지만
해당 쉘은 local에 떨어진 것이므로 원격에 있는 자신과는 데이터를 주고받을 매개체가 없다.(표준 입출력이 아니므로)
따라서 이런 경우에는 dup2를 이용하여 표준 입출력 디스크립터를 소켓에 복사해준 쉘코드(bind shell connection back shell 등)을 사용해야 한다.
그러나 위에서 말했듯이 xinetd 데몬의 경우에는 클라이언트가 표준 입출려그이 주체가 되므로 단순히 local exploit에 사용했던
쉘코드나 RTL 공격이 가능하다는 것이다
여기까지 두가지 형태의 데몬에 대해 간략하게 알아보았고, 이제 xinetd에 등록된 취약 프로그램을 remote bof해보도록하자
리모드 어택이란 원경공격을 뜻한다.
우리가 어떤 서버에 접근하려면 계정이 존재해야 한다.
예를 들어, SSH 계정이 있어야 로컬 쉘이 접속할 수 있고,
SAMBA 계정이 있어야 공유 폴더에 접속할 수 있으며,
FTP 계정이 있어야 파일 서버에 접속할 수 있으며,
MAIL 계정이 있어야 메일 서버에 접속해서 메일을 열람할 수 있다
하지만 리모드 어택이란, 위와 같은 계정이 있지도 않은 상태에서
마치 계정이 있는 것마냥 서버의 접근 권한을 얻어내는 과정을 말한다.
즉, 서버를 뚫고 들어가는 과정이다.