I don't know of a function that does exactly what you ask, but I use Arc Hydro Tools to get the catchment areas and drainage lines. When following the drainage lines it is easy to determine which catchment areas that contribute to each water body (i have cut them out from my dem first, so that they are viewed as sinks in the calculations). After that, just select the relevant ones and export to a new shapefile, or whatever you want to do with it.
To get the drainage lines in AHT, you need to complete the following steps in the Terrain Preprocessing dropdown menu: Fill Sinks, Flow direction, Flow accumulation, Stream definition, Stream segmentation, Catchment grid delineation and Drainage line processing. For further information about each tool, visit the tutorial.
The same thing can probably be done with the standard Hydrology toolbox in Arcmap, but I'm not that familiar with it.