사이트 내 전체검색
Hacking 기법 대충알아보기
로빈아빠
https://cmd.kr/server/887 URL이 복사되었습니다.

본문

1)DoS, DDoS

DoS(Denial of Service)란, 서버의 존립목적인 서비스를 못하도록 하는 방법으로서 공격장소에 따라 local과 remote로 나눈다.

 가) local DoS

일반적으로 local DoS공격은 공격자가 시스템에 들어와서 시행하는 방법이다.
끝임없이 프로세스를 만든다거나 잘못된 명령을 루프로 계속 돌린다거나..
기타 시스템에 크게 무리를 주어, 시스템을 마비 시키는 공격법이다.

예) Exploer4.0에서.. 자기참조프레임


 나) remote DoS

대부분의 네트웍상에서 이루어지는 DoS공격법으로서, 가장 대표적으로 얼마전 일본 사이트들에 대한 국내 네트즌들의 항의 "리로딩"공격도 이에 해당한다^^
좀더 세밀하게 들어가면 ping공격, ICMP(Internet Control Message Protocol)공격, 메일폭탄 등등이 있다..

 다) DDoS란

DDoS(Distributed Denial-of-Service)는 여러 대의 장비를 이용해 엄청난 분량의 데이터를 한 곳의 서버에 집중적으로 전송함으로써, 특정 서버의 정상적인 기능을 방해하는 것을 말한다.
올초 야후, 이베이, ZD넷, CNN 등 대형 인터넷업체들을 대상으로 발생한 cracking사고들이 이 수법에 의해 것이다.
이 방법은 공격자가 자신의 장비에서 보안이 취약한 다른 여러 곳의 서버에 침투해 해킹 마스터 프로그램을 몰래 설치한 뒤, 여기에 공격할 대상과 시간을 지정해 두면, 이들 서버가 한 개의 목표 서버에 수많은 패킷을 전송함으로써 일시에 서버기능을 무력화시키는 방법이다.

2) System오류

시스템상의 오류를 통하여 공략하는 방법을 의미한다.

 가) 환경변수의 취약성

다중 사용자를 지원하는 서버용 시스템은 각 사용자에 맞는 환경변수를 지정하여서 지정한 환경하에서 사용자가 좀더 편리하게 작업을 할수잇도록 도와 주고있다. 그러데, 이런한 환경변수 가운데 시스템의 취약성을 나타내어주는 일부의 환경변수들이 존재한다.

예1) 상대경로

어떠한 suid프로그램에서 "/bin/ls"를 프로그램중간에 call한다고 가정하자.
일반적으로 "/bin" 디렉토리는 환경변수 상에서 PATH의 기본값으로 지정해주고 있다. 그래서 프로그래머가 system("ls") 라는 코드로 ls 를 실행하게 된다면 공격자는 PATH의 일반경로를 변경하여 /bin/ls가 아닌 임의의 다른 ls라는 이름의 프로그램을 실행하게 할 수 있다

예2) IFS

IFS(internal file seperator)는 프로그램 아규먼트간을 구분해주는 공백을 의미한다.
이역시 환경변수하에서 적용되는것인데, 이번에는 프로그래머가 절대경로를 잘 사용하여 system ("/bin/ls")라고 코드를 넣었다고 가정하자, 그러나 환경변수하의IFS를 "/" 으로 변경한다면 어떻게 될까..흐름은 "/bin/ls" 가 아닌 "bin ls" 라고 인식을할것이다. 그렇다면 원하는 ls가 실행되는 것이 아니라 bin이란 이름의 실행화일을 실행시키려고 시도할것이다 이때, 공격자는 bin이란 이름의 악의적 프로그램을 suid상에서 실행 토록 할 수 있다. -> sysinfo2.0.6이상 버젼에서 패취

예3) 그밖의 환경변수들..

export명령을 통해서 일반적인 자신 계정의 환경변수값을 볼 수 있다.
얼마전 ssh(Secure Shell)의 환경변수를 이용해서 '-r' 퍼미션의 내용(예 /etc/shadow)도 읽을수 있는 버그가 발표 되었다.

$export RESOLV_HOST_CONF=/etc/shadow 
$ssh aa 2> shadow
$more shadow

 나) race condition

race condition이란 공격법은 최초 8lgm이란 해커그룹의 공격에서 그 유래를 들수 있다.
이들은 mail을 통해서 해당계정의 spool파일을 덮어쓴다는것에 착안하여 SunOS 4.x버전의 /bin/mail의 경우 사용자들의 메일 이 저장되는 /var/spool/mail/user_id 에 해당되는 파일중deamon과 같은 시스템계정의 파일을 root의 .rhost 파일로 링크를 건뒤, daemon 사용자에게 메일을 보냄으로서 자원간에 경쟁을 통해 .rhost를 변경함으로써 공격이 이루어진다.

% cd /var/spool/mail; ln -s ~root/.rhosts daemon
% echo "+ +" | mail daemon
% rlogin localhost -l root
 
즉 /bin/mail 프로그램이 /var/spool/mail/user_id 에 해당 하는 파일이 심볼릭링크인지 아닌지를 확인하지 않은채 root 의 권한으로 /var/spool/mail/user_id에 해당되는 파일에 수신된 E-mail의 내용을 덥어쓰기 때문에 발생한 것이다.

 다) ptrace

최근들어서 시스템오류로는 프로세스가 시그널 스트럭쳐를 공유할때 발생되는 공격법이 나왓고. Linux Kernal 2.2.x 이하에서 /usr/bin/passwd를 이용한 ptrace공격법과, FreeBSD 의 모든 suid프로그램에 적용되는 공격법등이 선보이고 있다.


 라) 잘못된 퍼미션

부지기수...


3) 프로그램의 오류 

suid프로그램이나 daemon프로그램등에서 발생되는 오류등을 찾아서 공격하는 방법을 말한다.

 가)BOF(Buffer Overflower)

프로그램 오류의 가장 대표적인 방법이 BOF이다. BOF는 변수간 경계값을 체크하지 않았을경우 발생하는 것으로서 스택상의 입력되는 변수의 값을 설정보다 많이 넣어서 값이 흘러 넘치도록 하는것인데,
문제는 이렇게 흘러넘친 값을 함수의 리턴 어드레스까지 변경하게 하여 실행흐름을 변조할수 있다는것이다.

 나)FSB(Format String Bug)

FSB는 비교적 최근에 발표된 버그로서 프로그램상에 string을 지정해주지 않고 변수이름으로 입출력할때에 발생되는 버그로서, 프로그램이 실행되고 변수를 입력받을때 공격자는 임의의 string을 지정하여
스택상의 메모리값을 임의로 변조하는 방법을 말한다.

공격방법은 lecture란 참조

%hn , %n -> 스트링 앞까지의 문장열갯수 출력

을 이용해서 함수의 리턴어드레스나, 스택상의 중요 포인터 값들을 변조 할수 있다.


4) 네트웍의 취약성

기본적으로 Hacking의 전제는 네트웍이 활성화 되어잇을때 가능하다. 네트웍 설계상의 취약점들을 노려서 공격하는 방법은 공격기법 면에서 상당한 기술적 능력이 요구되는 방법중에 하나다.

 가)Spoofing

Spoofing은 대표적인 네트웍공격법으로 IP Spoofing, ARP Spoofing, DNS Spoofing 으로 구분되며,
'케빈'rhk '스토무'해킹전쟁에서 실전을 보엿다, 구척 어려운 해킹기법으로 많은 네트웍 지식과 함께 운도 필요한 공격방법이다..


 나)Sniffing

네트웍의 취약성을 악이용하는 방법중 가장 악의적인 방법이다. sniffing이란 로컬네트웍 상에서 무차별모드(Promiscuous Mode)로 오가는 팻킷을 켑쳐하는 일종의 도청방법이라고 할 수 있다. 스니핑에 대한 근복적인 해결방법은 어렵지만 ssh등 보안쉘을 통해서 오가는 팻킷을 암호화 하여 스니핑으로 부터 보호 할수 있다.

5)기 타

 가) 패스워드 크랙

암호화된 패스워드를 여러 단어장을 통해서 비교하여 원 암호를 알아내는 방법

 나) 통밥 및 몸으로 때우기..^^

지금까지 몇가지 hacking기법을 알아보았다. 기법의 구분은 해석에 따라 다를수 있지만 대략적으로 이러한 방법등이 있다고 알아두면 공부하시는데 도움이 되실꺼예요..^^


일반적인 공격 형태
---------------------

그럼 실전으로 돌아와서 Cracker들이 시스템에 침투하여 root를 따내는 과정까지의 실제 모습을 그려보도록 하자. 꼭 정해진것은 아니지만 보통의 공격 방법은 아래와 같다.

1) local attack

시스템에 계정을 가지고 쉘서비스를 통해서 공략하는 방법이다.(대부분은 lab 서버에서 시행되고 있는)

 가) 취약프로그램 찾기

find 명령이나 아님 기존에 버그를 가지고 있는 프로그램의 경로를 찾아서 공격대상 프로그램을 찾는다. suid(root)

예) find / -perm -4000 -user root -fprint list  <-- find 명령으로 유저 root의 퍼미션 4000 파일을 검색하여 list에 담아둔다..

 나) 해당 Exploit 적용

인터넷상에 알려진 버그를 검색하여서 해당 suid프로그램에 적용하는 Exploit를 실행 시킨다.
성공하면 root권한을 획득 할 수 있다

 다) 그 담은 나쁜짓..

말그데로 root땃음 끝이다..

 라) 백도어 설치

담에 또 들어오기 위해서 백도어를 설치 한다.

 마) log지우기

못지우는 Cracker도 많다.


2)remote attack

시스템을 외부에서 공략하는 방법이다. 이역시 정해진것은 없으나 일반적인 공격 경로는 다음과 같다.

 가) 타깃 선정 및 scan

타깃이 정해지면 타깃에 대한 정보를 수집한다.
수집된 정보와 함께 타깃에 scan Tool를 이용해서 서비스중인 포트와 데몬을 확인한다..

 나) 알려진 데몬버그 찾기

타깃 시스템에서 패취되기전의 데몬을 사용하고 있다면 알려진 버그의 Exploit등을 이용하여 데몬을 공격한다.

 다) Exploit적용 및 쉘획득

해당 Exploit이 적용된다면 해당 데몬의 쉘권한을 획득할 수 있다. 이렇게 해당데몬이 root로 실행된다면 바로root권한을 획득한것이고 그렇치 않터라도 시스템의 쉘권한을 획득하게 된다..

 라) local attack과 동일한 공격 방법 사용 -> root획득

 마) 나쁜짓 하고 log지우기


3) 이도저도 아닌 Tool이용(예: 백오리피스등과 같은 Trojan 이용)

Tool을 이용해서 공격하는 방법이다 -. 이런걸로 뚫리는 시스템은 ..   


해킹방법이 위에 열거한게 전부는 아니다. 기타 더 멋진 방법들이 있겠지...
뭐 얼마전에 뉴스에서 컴을 통째로 훔쳐갔다고하더라구요(서울대)
그것도 일종의 해킹(?)이라고나 할까!???$%#&
그럼 열시미 공부

댓글목록

등록된 댓글이 없습니다.

1,139 (1/23P)

Search

Copyright © Cmd 명령어 18.224.228.71