• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于安卓平臺(tái)的惡意軟件動(dòng)態(tài)監(jiān)測(cè)的研究

    2018-08-21 01:59:50王倩文沈蘇彬吳振宇
    關(guān)鍵詞:安卓內(nèi)核調(diào)用

    王倩文,沈蘇彬,吳振宇

    (1.南京郵電大學(xué) 計(jì)算機(jī)學(xué)院,江蘇 南京 210003;2.南京郵電大學(xué) 物聯(lián)網(wǎng)學(xué)院,江蘇 南京 210003)

    0 引 言

    隨著智能手機(jī)的普及,手機(jī)惡意軟件的數(shù)量急速增加,尤其近年來,基于安卓平臺(tái)的手機(jī)在智能手機(jī)終端市場(chǎng)占據(jù)主導(dǎo)地位,針對(duì)安卓系統(tǒng)的惡意軟件數(shù)量呈快速上升趨勢(shì)。手機(jī)惡意軟件主要收集手機(jī)用戶地理位置、通訊錄、短信等個(gè)人隱私信息,嚴(yán)重威脅了手機(jī)用戶的個(gè)人隱私。有效監(jiān)測(cè)惡意軟件并還原上層行為信息可以為后續(xù)清除惡意軟件提供有力依據(jù)。

    目前針對(duì)安卓惡意軟件的監(jiān)測(cè)方法主要包括靜態(tài)檢測(cè)和動(dòng)態(tài)監(jiān)測(cè)[1]。靜態(tài)檢測(cè)方案[2]是在不執(zhí)行應(yīng)用程序的情況下,采用逆向分析技術(shù),通過抽取靜態(tài)特征來判別應(yīng)用程序是否包含惡意行為[3]。靜態(tài)檢測(cè)方案雖然能夠識(shí)別應(yīng)用程序的敏感行為,但是依賴于特征庫,特征庫中只存放已知惡意行為的特征碼。因此,靜態(tài)檢測(cè)無法檢測(cè)未知的惡意攻擊行為[4]。

    安卓應(yīng)用程序的動(dòng)態(tài)檢測(cè)方案[5]是在模擬器等安卓運(yùn)行環(huán)境中實(shí)際運(yùn)行應(yīng)用程序,觸發(fā)其潛在的惡意行為,動(dòng)態(tài)監(jiān)測(cè)其運(yùn)行過程,從而判斷該應(yīng)用程序是否包含惡意行為。相對(duì)而言,動(dòng)態(tài)監(jiān)測(cè)方案對(duì)安卓應(yīng)用軟件行為的監(jiān)測(cè)效率更高。Xu等[6]通過程序插樁的方式對(duì)應(yīng)用程序的行為進(jìn)行監(jiān)測(cè),并針對(duì)不同的攻擊配置相應(yīng)的安全策略。Enck等[7]通過修改安卓系統(tǒng)的中間層代碼,以添加標(biāo)簽的方式來監(jiān)測(cè)數(shù)據(jù)流向,從而監(jiān)測(cè)應(yīng)用程序是否包含隱私竊取等敏感惡意行為。Burguera等[8]通過修改安卓系統(tǒng)內(nèi)核層代碼實(shí)現(xiàn)對(duì)應(yīng)用程序的監(jiān)測(cè),采用strace獲取安卓應(yīng)用程序的系統(tǒng)調(diào)用信息,并對(duì)獲取到的信息進(jìn)行聚類分析,從而判斷該應(yīng)用程序是否存在惡意行為。

    文中給出了一種基于安卓平臺(tái)的惡意軟件的動(dòng)態(tài)監(jiān)測(cè)方案。通過研究安卓簽名機(jī)制和重打包技術(shù),對(duì)樣本實(shí)現(xiàn)過濾。研究安卓安全架構(gòu)各層的特點(diǎn),分析不同層面所存在的監(jiān)測(cè)機(jī)制。著重研究了應(yīng)用程序框架層的Hook API方法和內(nèi)核層的系統(tǒng)調(diào)用攔截方法[9],分析了這兩種方法的優(yōu)缺點(diǎn),選定更加有效的基于內(nèi)核層的系統(tǒng)調(diào)用攔截方法,并對(duì)其進(jìn)行優(yōu)化。另外,為減輕手機(jī)端負(fù)荷,與PC端結(jié)合,利用monkey工具實(shí)現(xiàn)apk自動(dòng)安裝和卸載[10]。

    1 相關(guān)技術(shù)分析

    在安卓平臺(tái),大部分惡意軟件的流入都是通過應(yīng)用重打包。通過研究重打包技術(shù),判別應(yīng)用程序是否存在重打包跡象,可以一定程度上實(shí)現(xiàn)對(duì)惡意樣本的篩選。安卓平臺(tái)本身針對(duì)惡意軟件攻擊也存在相應(yīng)的安全策略,例如安卓系統(tǒng)安全架構(gòu)最高層應(yīng)用層的代碼安全和最底層內(nèi)核層的文件訪問控制。深入研究安卓系統(tǒng)安全架構(gòu)以及各架構(gòu)層的應(yīng)用程序監(jiān)測(cè)機(jī)制,對(duì)分析惡意軟件行為來說意義重大。

    1.1 重打包技術(shù)

    隨著惡意軟件的數(shù)量愈發(fā)龐大,安卓手機(jī)用戶的隱私受到了嚴(yán)重威脅。Zhou Yajin等[11]深入研究了安卓惡意軟件,收集了1 260個(gè)安卓惡意軟件的樣本,在這些樣本中有86%的惡意樣本都是采用重打包的方式制作的。重打包是從安卓系統(tǒng)剛開始流行到現(xiàn)在占據(jù)智能手機(jī)終端主導(dǎo)地位,一直存在的攻擊手段。不論是哪種惡意軟件,都是將能夠執(zhí)行惡意行為的代碼加入到已有應(yīng)用程序中來實(shí)現(xiàn)惡意行為的。對(duì)正常應(yīng)用程序進(jìn)行反編譯處理,獲取該應(yīng)用程序的源代碼,然后將惡意代碼植入到源代碼文件中,將越權(quán)信息添加到配置文件中,然后重打包并發(fā)布到第三方市場(chǎng),如圖1所示。

    圖1 惡意代碼植入過程

    判斷應(yīng)用程序是否經(jīng)過重打包處理,安卓系統(tǒng)安全機(jī)制中的簽名機(jī)制給出了解決方案。安卓系統(tǒng)簽名機(jī)制能夠有效地對(duì)開發(fā)者進(jìn)行審查。一方面能夠避免出現(xiàn)修改程序包的情況,另一方面可以幫助程序確認(rèn)信賴關(guān)系,實(shí)現(xiàn)具有相同私鑰的應(yīng)用程序之間代碼和數(shù)據(jù)的共享[12]。APK簽名后會(huì)生成一個(gè)META-INF文件目錄,其中包括MAINFEST.MF、CERT.SF和CERT.RSA三個(gè)簽名文件。在安裝應(yīng)用程序前,安卓系統(tǒng)首先會(huì)檢查待安裝的APK包是否有簽名,具有簽名的應(yīng)用程序才會(huì)得到系統(tǒng)的認(rèn)可。同樣地,只有在數(shù)字簽名相同的情況下才會(huì)進(jìn)行應(yīng)用程序的更新和升級(jí),否則當(dāng)作新程序處理。

    1.2 安卓系統(tǒng)安全架構(gòu)

    安卓的系統(tǒng)安全架構(gòu)采用分層模式,圖2中安卓系統(tǒng)架構(gòu)分為四層,從低到高分別是內(nèi)核層、系統(tǒng)運(yùn)行庫層、應(yīng)用程序框架層、應(yīng)用程序?qū)覽13]。

    應(yīng)用程序?qū)?接入權(quán)限、代碼安全)應(yīng)用程序框架層(數(shù)字證書)SQLite(數(shù)據(jù)庫安全)虛擬機(jī)(沙箱安全)SSL(網(wǎng)絡(luò)安全)Linux Kernel(文件訪問控制)

    圖2 安卓系統(tǒng)安全架構(gòu)

    (1)應(yīng)用程序?qū)印?/p>

    系統(tǒng)以及核心應(yīng)用程序包一同發(fā)布,其中包括主屏、瀏覽器和通訊錄等程序,共同實(shí)現(xiàn)用戶與界面的交互。其中所有的應(yīng)用程序都采用Java語言,通過調(diào)用相應(yīng)的API來完成。

    (2)應(yīng)用程序框架層。

    應(yīng)用程序框架層包含程序開發(fā)所需要的一系列類庫,這使得程序開發(fā)者能夠很方便地使用API框架。其設(shè)計(jì)模式簡(jiǎn)化了組件的重用,應(yīng)用程序只要遵循框架的安全性限制,都可以發(fā)布自身功能塊,并且可以使用其他發(fā)布的功能塊?;顒?dòng)管理器主要用來管理應(yīng)用程序的生命周期,同時(shí)提供導(dǎo)航等常用的功能;窗口管理器用來管理已開啟的程序窗口;內(nèi)容提供器能夠?qū)崿F(xiàn)應(yīng)用程序之間數(shù)據(jù)的共享以及應(yīng)用程序之間互相訪問的功能;視圖系統(tǒng)用來管理應(yīng)用程序界面所涉及到的一些基本組件。

    (3)系統(tǒng)運(yùn)行庫層。

    系統(tǒng)將運(yùn)行時(shí)庫分為兩個(gè)部分:Dalvik虛擬機(jī)和核心庫。Dalvik虛擬機(jī)的設(shè)計(jì)目的是使手機(jī)這種低內(nèi)存平臺(tái)上能夠適用安卓系統(tǒng),每個(gè)程序都具有獨(dú)立的Dalvik虛擬機(jī);核心庫包含了Java語言所提供的核心庫的大部分功能,同時(shí)為應(yīng)用程序開發(fā)者提供了安卓的核心API。

    (4)內(nèi)核層。

    安卓系統(tǒng)依賴于Linux內(nèi)核又不完全依賴于Linux。安卓系統(tǒng)一方面借助Linux內(nèi)核來實(shí)現(xiàn)進(jìn)程管理等核心的功能,另一方面增加了自身獨(dú)有的功能,如低內(nèi)存管理器等。這使得內(nèi)核能夠更加適應(yīng)智能手機(jī)終端這樣的環(huán)境,很大程度上提升了智能手機(jī)終端的相關(guān)性能。

    2 各架構(gòu)層監(jiān)測(cè)機(jī)制

    目前,針對(duì)如何增強(qiáng)安卓系統(tǒng)安全架構(gòu)有很多相關(guān)的工作。但核心的思路大致相同,通過截取系統(tǒng)調(diào)用的方式還原用戶的上層行為。在獲取具體行為之后,根據(jù)不同的安全策略對(duì)行為進(jìn)行控制。安卓安全架構(gòu)各層對(duì)應(yīng)用軟件行為有著不同的監(jiān)測(cè)機(jī)制。應(yīng)用程序?qū)硬捎脦焯鎿Q的方式實(shí)現(xiàn)對(duì)目標(biāo)進(jìn)程的跟蹤。應(yīng)用程序框架層可以采用Hook技術(shù)截獲API調(diào)用實(shí)現(xiàn)應(yīng)用程序行為監(jiān)測(cè)。內(nèi)核層可以通過對(duì)內(nèi)核代碼的編譯實(shí)現(xiàn)行為監(jiān)測(cè)。

    下面著重研究在內(nèi)核層加入運(yùn)行時(shí)監(jiān)測(cè)機(jī)制和在應(yīng)用程序框架層加入運(yùn)行時(shí)監(jiān)測(cè)機(jī)制。

    2.1 Hook API

    安卓系統(tǒng)為開發(fā)者提供了一系列API函數(shù),應(yīng)用程序通過調(diào)用這一系列API函數(shù)可以實(shí)現(xiàn)諸多功能[14]。因此,通過監(jiān)測(cè)應(yīng)用程序調(diào)用的API函數(shù),便可對(duì)應(yīng)用程序的行為進(jìn)行分析,判斷其是否存在惡意傾向[15]。

    采用Hook技術(shù)截獲API調(diào)用的基本原理是先將代碼注入到目標(biāo)進(jìn)程中,然后使用ptrace[16]函數(shù)對(duì)目標(biāo)進(jìn)程attach,接著跳轉(zhuǎn)到mmap函數(shù)來分配一小段內(nèi)存空間,然后將機(jī)器碼拷貝到剛分配的內(nèi)存中,接下來執(zhí)行注入的代碼。Hook常用工具為Xposed框架,獲得root權(quán)限后,安卓的Xposed框架能夠?qū)?yīng)用程序的運(yùn)行產(chǎn)生影響并且不修改APK。采用替換/system/bin/app_process的方式來控制zygote進(jìn)程,這樣使得app_process在啟動(dòng)過程中會(huì)加載XposedBridge.jar包,實(shí)現(xiàn)Zygote進(jìn)程的截獲。

    2.2 修改系統(tǒng)調(diào)用表

    內(nèi)核層監(jiān)測(cè)機(jī)制采用修改系統(tǒng)調(diào)用表的方式。這種方式主要是通過內(nèi)核模塊來修改系統(tǒng)調(diào)用表。使用自身模塊內(nèi)的函數(shù)替換系統(tǒng)原有的調(diào)用函數(shù),從而實(shí)現(xiàn)對(duì)目標(biāo)進(jìn)程行為的監(jiān)測(cè)。這種方式的優(yōu)點(diǎn)在于強(qiáng)制性監(jiān)測(cè)。安卓系統(tǒng)是嚴(yán)格控制root權(quán)限的。一旦內(nèi)核模塊被植入內(nèi)核是很難再被取出來的,這樣就不必?fù)?dān)心被繞過的可能了。在內(nèi)核層監(jiān)測(cè)安卓系統(tǒng)應(yīng)用程序時(shí)覆蓋全面。不管是否為安卓進(jìn)程,不管是否為第三方應(yīng)用,均能夠被監(jiān)測(cè)。

    兩種監(jiān)測(cè)方式相比,內(nèi)核層監(jiān)測(cè)獲取的信息更加全面,要想執(zhí)行文件訪問操作,必須得到內(nèi)核層的支持。另外,內(nèi)核層監(jiān)測(cè)相對(duì)而言對(duì)系統(tǒng)性能的損耗較小,其提供的系統(tǒng)調(diào)用接口數(shù)量也較少。因此,內(nèi)核層監(jiān)測(cè)產(chǎn)生的影響要遠(yuǎn)遠(yuǎn)小于框架層監(jiān)測(cè)所產(chǎn)生的影響。綜上所述,文中設(shè)計(jì)的監(jiān)測(cè)方案中監(jiān)測(cè)方式的選擇采用在內(nèi)核層加入運(yùn)行時(shí)監(jiān)測(cè)機(jī)制。

    3 基于安卓平臺(tái)的惡意軟件的動(dòng)態(tài)監(jiān)測(cè)方案

    文中設(shè)計(jì)了一種基于安卓平臺(tái)的惡意軟件的動(dòng)態(tài)監(jiān)測(cè)方案。首先根據(jù)安卓簽名機(jī)制,計(jì)算出相應(yīng)文件MD5[17]值,判斷應(yīng)用程序是否有重打包跡象。比對(duì)標(biāo)準(zhǔn)是官方渠道獲取的軟件,對(duì)樣本進(jìn)行過濾。

    下面采用內(nèi)核層監(jiān)測(cè)機(jī)制來監(jiān)測(cè)惡意軟件。通過內(nèi)核模塊對(duì)系統(tǒng)調(diào)用表進(jìn)行修改。通過使用自身模塊內(nèi)的函數(shù)去替換系統(tǒng)原有的調(diào)用函數(shù)。在替換過程中同時(shí)進(jìn)行安全檢查,達(dá)到對(duì)目標(biāo)進(jìn)程行為的監(jiān)測(cè)。將監(jiān)測(cè)到的系統(tǒng)調(diào)用按照時(shí)間先后順序記錄在一個(gè)特定的日志文件中,日志信息的格式如圖3所示。

    原型[自定義標(biāo)識(shí)](uid)(pid)方法/系統(tǒng)調(diào)用樣例[Rootkit]( 954)(10074)android.app.…

    圖3 日志信息格式

    惡意軟件的攻擊類型主要有:權(quán)限泄露、合謀攻擊、財(cái)務(wù)攻擊、隱私數(shù)據(jù)竊取、其他攻擊[18]。針對(duì)不同的惡意軟件攻擊行為給出相應(yīng)的安全策略[6]。選出惡意軟件已經(jīng)代表了典型的惡意軟件行為。下面為針對(duì)短信劫持的安全策略,一旦出現(xiàn)截獲短信(例如驗(yàn)證碼信息等)行為,立即向用戶發(fā)出警告。

    UID operation [data] on target [context]

    If [operation==sendSMS] then [

    Record

    If [data.smsNUM in Blacklist] then [warn user Dangerous]

    If [context.isBackground==true] then [warn user Dangerous]

    If [data.smsNUM not in contact] then [warn user Dangerous]

    If [frequency>limit] then [warn user Dangerous]

    ]

    If [UIDregister SMS_RECEIVED && target==ActivityManagerService] then [warn user Dangerous]

    Else [go on]

    另外,為了減輕手機(jī)端負(fù)荷,與PC端結(jié)合,利用monkey工具實(shí)現(xiàn)apk自動(dòng)安裝和卸載。Monkey是一種測(cè)試工具,由Google的Android SDK提供,使用它們能夠達(dá)到模擬人工輸入的效果。使用adb工具來調(diào)用monkey命令,實(shí)現(xiàn)用戶事件流的隨機(jī)發(fā)送,測(cè)試指定應(yīng)用的相關(guān)功能,也可以實(shí)現(xiàn)apk自動(dòng)安裝和卸載。

    4 實(shí)驗(yàn)驗(yàn)證與結(jié)果分析

    4.1 實(shí)驗(yàn)環(huán)境

    PC端:Windows 7;

    手機(jī)端:安卓模擬器(Android 4.3、Linux 2.6.29)。

    模擬器配置信息如圖4所示。

    圖4 模擬器配置信息

    4.2 實(shí)驗(yàn)過程與結(jié)果

    實(shí)驗(yàn)中惡意軟件來源于Malgenome Project[11],數(shù)據(jù)集中的1 200個(gè)惡意樣本均已根據(jù)它們所產(chǎn)生的惡意行為的不同特點(diǎn)進(jìn)行了歸類。

    通過分析apk簽名信息,發(fā)現(xiàn)重打包程序的簽名不同于源程序的簽名。根據(jù)此性質(zhì),可采用MD5算法實(shí)現(xiàn)簽名信息的校驗(yàn),進(jìn)而判斷應(yīng)用程序是否有重打包跡象。

    /*計(jì)算文件的MD5值*/

    public class Md5Calculating {

    public static String getMd5 (File file) throwsFileNotFoundException {

    String s=null;

    FileInputStream o=new FileInputStream(file);

    try {

    MappedByteBuffer byteBuffer=o.getChannel().map(

    FileChannel.MapMode.READ_ONLY, 0, file.length());

    MessageDigest md5=MessageDigest.getInstance("MD5");

    md5.update(byteBuffer);

    BigInteger b=new BigInteger(1, md5.digest());

    s=b.toString(16);

    } catch (Exception e) {

    e.printStackTrace();

    } finally {

    if (null !=o) {

    try {

    o.close();

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    }

    return s;

    }

    public static void main(String[]args) throws IOException {

    String path="C:\Users\Administrator\Desktop\md5test\commons-codec-1.10-bin.zip";

    String f=getMd5 (new File(path));

    System.out.println("MD5:" + f.toUpperCase());

    FileInputStream x=new FileInputStream(path);

    String md5=DigestUtils.md5Hex(IOUtils.toByteArray(fis));

    IOUtils.closeQuietly(x);

    System.out.println("MD5:" + md5);

    }

    }

    使用adb工具調(diào)用monkey命令,實(shí)現(xiàn)用戶事件流的隨機(jī)發(fā)送,測(cè)試指定的程序。adb工具提供了一個(gè)配置文件setting.ini,如下:

    #adb命令所在目錄

    ADB Path=D:androidsdkplatform-tools

    #測(cè)試數(shù)據(jù)所在目錄

    Test Data Folder=D:API

    修改系統(tǒng)調(diào)用表最核心的部分就是對(duì)內(nèi)核進(jìn)行編譯。編譯的步驟如下:

    (1)下載安卓?jī)?nèi)核源碼。

    執(zhí)行如下命令,獲取內(nèi)核源碼的主分支。

    git clone git : // android.git.kernel.org /kernel/common.git

    (2)設(shè)定環(huán)境變量。

    這里要使用交叉編譯器。修改用戶目錄下的.bashrc文件,添加如下代碼:

    export

    PATH=$PATH:~/Android/source/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin

    export ARCH=arm

    (3)設(shè)定交叉編譯參數(shù)。

    打開makefile文件,該文件位于kernel目錄下。將CROSS_COMPILE指向arm-eabi編譯器。

    (4)配置config文件。

    獲取模擬器正在使用的config文件。首先要啟動(dòng)AVD,執(zhí)行adb pull /proc/config.gz命令,用來獲取模擬器中包含的內(nèi)核配置文件,接著解壓config.gz文件。

    (5)編譯內(nèi)核。

    進(jìn)入內(nèi)核目錄使用make命令對(duì)內(nèi)核進(jìn)行編譯。編譯完成后,會(huì)生成新的內(nèi)核鏡像名為zImage,該文件位于/kernelarch/arm/boot/目錄下。

    (6)修改安卓的系統(tǒng)調(diào)用表。

    通過訪問/dev/kmem接口將Hook的新函數(shù)地址new_openat來覆蓋sys_call_table中的原始函數(shù)openat的調(diào)用地址。

    采用基于內(nèi)核的監(jiān)測(cè)方式與針對(duì)不同攻擊行為所設(shè)計(jì)的安全策略,能夠有效地將惡意行為通知給用戶。

    5 結(jié)束語

    文中給出了一種基于安卓平臺(tái)的惡意軟件的動(dòng)態(tài)監(jiān)測(cè)方案。通過研究安卓簽名機(jī)制和重打包技術(shù),對(duì)樣本實(shí)現(xiàn)過濾。通過分析安卓安全架構(gòu)不同層面所存在的監(jiān)測(cè)機(jī)制,選定基于內(nèi)核層的系統(tǒng)調(diào)用攔截方法對(duì)應(yīng)用程序行為進(jìn)行監(jiān)控,將監(jiān)測(cè)到的系統(tǒng)調(diào)用按照時(shí)間先后順序記錄在一個(gè)特定的日志文件中,并且針對(duì)不同惡意軟件攻擊行為設(shè)定了相應(yīng)安全策略,一旦檢測(cè)到惡意行為,立即向用戶發(fā)出警告。該方案能夠很好地對(duì)安卓惡意軟件行為進(jìn)行監(jiān)測(cè),對(duì)增強(qiáng)安卓安全框架具有一定的指導(dǎo)意義。

    猜你喜歡
    安卓內(nèi)核調(diào)用
    萬物皆可IP的時(shí)代,我們當(dāng)夯實(shí)的IP內(nèi)核是什么?
    強(qiáng)化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
    核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
    文物表情包
    基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計(jì)
    Linux內(nèi)核mmap保護(hù)機(jī)制研究
    LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
    基于系統(tǒng)調(diào)用的惡意軟件檢測(cè)技術(shù)研究
    一種基于安卓系統(tǒng)的手機(jī)側(cè)抓包分析方法
    安卓L未至安卓M來了!安卓首泄漏M系統(tǒng)
    临泽县| 靖州| 重庆市| 错那县| 西林县| 北辰区| 南投市| 民和| 塔城市| 西藏| 甘德县| 庄河市| 呼伦贝尔市| 尉氏县| 涟源市| 鹤山市| 双牌县| 绥宁县| 潜江市| 清流县| 同心县| 自贡市| 昌邑市| 芦溪县| 灵石县| 大兴区| 阳城县| 哈巴河县| 岳阳市| 安图县| 韩城市| 特克斯县| 大庆市| 奉节县| 桦甸市| 宣威市| 石狮市| 新乡市| 称多县| 循化| 阿坝|