해킹 기법에 대해서 간단한 소개
로빈아빠
본문
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기법을 알아보았다. 기법의 구분은 해석에 따라 다를수 있지만 대략적으로 이러한 방법등이 있다고 알아두면 공부하시는데 도움이 되실꺼예요..^^
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기법을 알아보았다. 기법의 구분은 해석에 따라 다를수 있지만 대략적으로 이러한 방법등이 있다고 알아두면 공부하시는데 도움이 되실꺼예요..^^
관련링크
댓글목록
등록된 댓글이 없습니다.