기본 콘텐츠로 건너뛰기

백도어(Backdoor)

1.Backdoor란?
원래는 서비스 기술자나 유지보수 프로그래머들의 다른 PC에 대한 액세스 편의를 위해 시스템 설계자가 고의적으로 만들어 놓은 것이다. 최근에는 해킹에 취약한 부분을 일컫는 용어로 쓰이고 있다.

2.Backdoor 사용 이유
관리자는 편의성을 위해
해커는 침투 후 제침입을 위해 사용된다.

3.Backdoor 종류
로컬 백도어 : 서버의 셀을 얻어낸 뒤에 관리로 권한 상승을 할 때 사용하는 백도어로 트랩도어도 로컬 백도어라고 볼수있다.
시스템에 로그인한 뒤에 관리자로 권한 상승시키기 위한 것으로 공격자는 일반계정이 하나 필요하다.

원격 백도어 : 원격에서 관리자로 계정과 패스워드를 입력한 것처럼 바로 시스템 관리자 계정을 할 수 있는 백도어
네트워크에 자신의 포트를 항상 열어 놓는 경우가 많다. 일종의 서비스를 제공하는 데몬처럼 동작하는 것

원격 GUI 백도어 : 크기가 크고, 많은 데이터를 전송해야 되므로 노출되기 쉽기 때문에 실제로 많이 사용하지 않는 백도어다

패스워드 크래킹 백도어 : 인증회피가 아니라 인증에 필요한 패스워드를 원격지의 공격자에게 보내주는 역할을 하는 백도어
    사용자가 누르는 키보드의 정보를 원격지에 보내는 경우가 있고
    특정 문자열 즉'passwd'와 같은 문자열 뒤에 누를는 키보드의 정보를 보내는 경우

시스템 설정 변경 : 원격지의 쉘을 얻어낸다기 보다는 해커가 원하는대로 시스템의 설정을 변경하기 위한 백도어
 유닉스에서 프로그램 스케줄러로 사용되는 cron데몬을 이용하는 경우가 많다.

트로이 목마형 : 처음부터 백도어를 목적으로 만들어진 프로그램이 아닌데 백도어로 동작하는 경우
   윈도우에서는 웹 브라우저나 명령창 간단한 게임등도 백도어와 섞을 수 있다.
   이렇게 만들어진 백도어를 실행하면 원래 목적의 프로그램도 실행도과 동시에 백도어도 설치된다.

거짓 업그레이드 : MS사의 IE 웹브라우저를 무료로 업그레이드하라는 내용의 스팸 메일을 통해 사용자에게 프로그램 설치를                            유도하고 이 프로그램이 설치후 실행되면 몇몇 시스템 파일에 대한 수정과 다른 원격 시스템으로의                                  접속을 시도하는 행위를한다

그 외  : 네트워크 데몬이나 시스템 유틸리티를 수정한 백도어
     TCP/IP 프로토콜을 이용한 Shell binding 백도어
     kernel 모듈을 수정한 백도어
     방화벽을 우회하는 백도어
5.Backdoor 생성 및 숨기기
<소스코드>

<컴파일>
*컴파일 명령어는 만들어질 실행파일 명을 먼저 적고 컴파일할 파일 이름을 적는다.
(컴파일이 잘됬는지 확인하는 센스!)

<setUID 설정>


<유저아이디 접속후 백도어 실행>
*일반 계정으로 로그인 후 backdoor 파일을 실행 했을시 권한이 상승된 것을 볼수 있다.

<숨기기>
백도어 파일을 생성하고 잘 동작하는 것을 확인 했다면 이제는 관리자한테 들키지 않게 잘 숨겨둬야한다.
방법 중 하나는 기존의 SetUID가 걸려있는 파일을 바꿔치기하거나 변조하는 방법이다.
find / -perm -4000 명령어로 setuid가 걸려있는 파일을 찾는다.

이중에서 마음에 드는 파일과 바꿔치기하기!



출처: http://noel3527.tistory.com/entry/백도어Backdoor [Noel의 사적인 공간]

댓글

이 블로그의 인기 게시물

보안 공부 링크

SSLsplit - SSL/TLS기반의 네트워크 포렌식 및 침투테스트(중간자공격) 도구 http://www.roe.ch/SSLsplit 가상화 서버운영 및 구축을 위한 Xenserver가 오픈소스로 공개 http://www.xenserver.org/ Python과 Fabric를 사용한 SSH 봇넷 C&C 구축 예제 http://raidersec.blogspot.kr/2013/07/building-ssh-botnet-c-using-python-and.html 파워쉘을 이용한 비밀번호 정보 획득 http://www.obscuresecurity.blogspot.kr/2013/07/get-gpppassword.html niktoHelper - Nmap의 Grepable형식을 Nikito와 연동하기 위한 파이썬 스크립트 http://milo2012.wordpress.com/2013/07/07/niktohelper-bridge-between-nmap-grepable-output-and-nikto/ 루비를 통한 심도있는 XSS 방어 방법 http://homakov.blogspot.com.es/2013/07/xss-defense-in-depth-with-rackrails-demo.html IT관련 E-Book 모음 http://www.cyberhades.com/2013/07/04/unos-libritos-tecnicos-para-el-veranito JJEncode 스크립트 분석 http://www.kahusecurity.com/2013/jjencode-script-leads-to-drive-by/ 웹브라우저 호환성 검증 및 분석결과 제공 http://www.modern.ie/ko-kr/ http://browsershots.org/ html 색상 선택 도구 https://kuler.adobe.com/create/color-wheel/ Windows 메모리 보호 메커니즘 http://resources.infosecinstitute.com/window...

dns2proxy 해킹툴

dns2proxy Offensive DNS server This tools offer a different features for post-explotation once you change the DNS server to a Victim. <Referer to help (-h) to new params options> Feature 1 Traditional DNS Spoof adding to the response the original IP address. Using spoof.cfg file: hostname ip.ip.ip.ip root@kali:~/dns2proxy# echo " www.s21sec.com  1.1.1.1" > spoof.cfg // launch in another terminal dns2proxy.py root@kali:~/dns2proxy# nslookup  www.s21sec.com  127.0.0.1 Server: 127.0.0.1 Address: 127.0.0.1#53 Name:  www.s21sec.com Address: 1.1.1.1 Name:  www.s21sec.com Address: 88.84.64.30 or you can use domains.cfg file to spoof all host of a same domain: root@kali:~/demoBH/dns2proxy# cat dominios.cfg .domain.com 192.168.1.1 root@kali:~/demoBH/dns2proxy# nslookup aaaa.domain.com 127.0.0.1 Server: 127.0.0.1 Address: 127.0.0.1#53 Name: aaaa.domain.com Address: 192.168.1.1 Hostnames at nospoof.cfg will no be spoofed. Featu...

어셈블리어(Assembly) 기초

0x01.  어셈블리 언어란 ? &  배우는 목적 CPU  에는 해당 프로세서에 명령을 내리기 위해 고유의 명령어 세트가 마련되어 있는데 이  명령어 세트를 기계어라고 한다 .  이 기계어는 숫자들의 규칙조합임으로 프로그래밍에 상당 히 난해하다 .  그래서 이 기계 명령어를 좀더 이해하기 쉬운 기호 코드로 나타낸것 ( 기계어와  1:1 로 대응된 명령을 기술하는 언어 ) 이 어셈블리어이다 .  어셈블리 언어는 그 코드가 어떤  일을 할지를 추상적이 아닌 ,  직접적으로 보여준다 .  논리상의 오류나 ,  수행 속도 ,  수행 과정 에 대해 명확히 해준다는 점에서 직관적인 언어이다 .  어셈블리 언어를 사용하면 메모리에 대한 이해도도 높아진다 .  어셈블리를 익히고 ,  배우는데 있어서는 여러 가지 목적이 있을 수 있다 .  컴퓨터 시스템 & 구조를 좀 더 깊게 이해하고 ,  메모리상의 데이터나  I/O 기기를 직접 액 세스 하는등의 고급언어에서는 할 수 없는 조작을위해서이다 .  프로그램의 최적화 및 리버 스 엔지니어링을 위해서도 필요하다 . + 2 줄 요약  + -  어셈블리 언어는 기계어와  1:1  대응을 하는 언어이다 . -  어셈블리 언어를 배우면 시스템을 이해하는데 도움이 된다 . 0x02.  어셈블리를 위한 기본 지식 (1)  기본적인 하드웨어 1) CPU -  메모리에 있는 내용을 읽고 ,  쓰고 데이터를 메모리와 각 레지스터로 보낸다 . 프로그램의 명령을 해석하고 실행한다 . 하나의 프로세서는  12~14 개의 레지스터를 가 지고 있으며 , CPU 의 연산 ,  논리 장치는 숫자와 기호에 관한 연산자를...